From c7e08b140b33ff9ac47123b9a892c1209ff72c95 Mon Sep 17 00:00:00 2001 From: Florian Jung Date: Sat, 8 Aug 2015 04:03:58 +0200 Subject: cleanup + virus zoom fix --- test.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test.py b/test.py index f373dc4..a343116 100644 --- a/test.py +++ b/test.py @@ -98,7 +98,7 @@ def drawCell(cell): if cell.is_virus: color = (0,255,0) color2 = (100,255,0) - polygon = generateVirus(int(cell.size*0.3), 5, radius, (cx, cy)) + polygon = generateVirus(int(cell.size*0.3), 10*zoom, radius, (cx, cy)) gfxdraw.filled_polygon(screen, polygon, color2) gfxdraw.aapolygon(screen, polygon, color) @@ -133,10 +133,12 @@ c.send_spectate() screensize=(800,600) screen=pygame.display.set_mode(screensize,HWSURFACE|DOUBLEBUF|RESIZABLE) +zoom = calc_zoom() i=0 mb=pygame.mouse.get_pressed() + while True: pygame.event.pump() @@ -144,9 +146,7 @@ while True: if event.type==VIDEORESIZE: screensize = event.dict['size'] screen=pygame.display.set_mode(screensize,HWSURFACE|DOUBLEBUF|RESIZABLE) - zoom1 = screensize[0] / 2051. - zoom2 = screensize[1] / 1216. - zoom = max(zoom1,zoom2) + zoom = calc_zoom() pygame.display.update() i=i+1 -- cgit v1.2.3 From a54e3f0731cc72934e8dc28576d2d40b69a45af9 Mon Sep 17 00:00:00 2001 From: Florian Jung Date: Sat, 8 Aug 2015 04:31:43 +0200 Subject: nice coordinate system change functions --- test.py | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/test.py b/test.py index a343116..86940ee 100644 --- a/test.py +++ b/test.py @@ -72,6 +72,23 @@ class MeinSubskribierer: def on_debug_line(self,x,y): print("debug line") +def calc_zoom(): + zoom1 = screensize[0] / 2051. + zoom2 = screensize[1] / 1216. + return max(zoom1,zoom2) + +def world_to_win_length(l): + return int(l*zoom) + +def win_to_world_length(l): + return int(l/zoom) + +def world_to_win_pt(pt,center): + return (int((pt[0]-center[0])*zoom + screensize[0]/2), int((pt[1]-center[1])*zoom + screensize[1]/2)) + +def win_to_world_pt(pt,center): + return (int((pt[0]-screensize[0]/2)/zoom+center[0]), int((pt[1]-screensize[1]/2)/zoom+center[1])) + def generateVirus(spikes, spike_length, radius, global_coords): step = (2*math.pi) / (spikes*2) points = [] @@ -91,9 +108,8 @@ def generateVirus(spikes, spike_length, radius, global_coords): return points def drawCell(cell): - cx = int((cell.pos[0]-c.player.center[0])*zoom +screensize[0]/2) - cy = int((cell.pos[1]-c.player.center[1])*zoom +screensize[1]/2) - radius = int(cell.size*zoom) + cx,cy = world_to_win_pt(cell.pos,c.player.center) + radius = world_to_win_length(cell.size) if cell.is_virus: color = (0,255,0) @@ -171,8 +187,7 @@ while True: oldmb=mb mb = pygame.mouse.get_pressed() - - c.send_target(((mp[0]-screensize[0]/2)/zoom)+c.player.center[0],(mp[1]-screensize[1]/2)/zoom+c.player.center[1]) + c.send_target(*win_to_world_pt(mp, c.player.center)) if mb[0] and not oldmb[0]: c.send_split() -- cgit v1.2.3