def draw(self, surf, factor): data = [] for j, ((X, y), (dX, dy)) in enumerate(zip(self.ladderps, self.ladderds)): if window.distancefromcamera(X, y) < 3: data.append((j, X, y, dX, dy)) if len(data) < 2: return for alpha, r in [(40, 20), (60, 16), (100, 12), (140, 8)]: ps = [] rps = [] for j, X, y, dX, dy in data: omegax = 0.6 + 0.6 * (j**1.4 % 1) omegay = 0.6 + 0.6 * (j**1.7 % 1) omegar = 0.6 + 0.6 * (j**1.8 % 1) X += 4 * math.sin(omegax * self.t) / y y += 4 * math.sin(omegay * self.t) dr = r * (1 + 0.2 * math.sin(omegar * self.t)) dX *= dr dy *= dr px, py = window.screenpos(X + dX, y + dy) ps.append((px / factor, py / factor)) px, py = window.screenpos(X - dX, y - dy) rps.append((px / factor, py / factor)) pygame.draw.polygon(surf, (255, 255, 0, alpha), ps + rps[::-1], 0)
def draw(self): parent = get(self.parentid) p = window.screenpos(parent.X, parent.y) color = tuple(int(a * (0.8 + 0.2 * math.sin(8 * self.t))) for a in (128, 255, 128)) pygame.draw.circle(window.screen, color, p, F(5), 0) pygame.draw.circle(window.screen, color, p, F(10), F(1)) pygame.draw.circle(window.screen, color, p, F(15), F(1))
def draw(): window.screen.fill((0, 0, 0)) if t < 1.5: background.drawstars() surf = window.screen.copy().convert_alpha() surf.fill((0, 0, 0, int(255 * t / 1.5))) window.screen.blit(surf, (0, 0)) else: class camera: y0 = window.camera.y0 * state.R / R X0 = 0 R = window.camera.R * 10 background.draw(camera=camera, hradius=6) if t < 5: for ship in state.ships: ship.draw() px, py = window.screenpos(0, 0) # r = int(window.camera.R * R) # if py - r < window.sy: # pygame.draw.circle(window.screen, (0, 40, 20), (px, py), r) dialog.draw() drawtitle()
def draw(self): if self.deployed: dX = 3 * math.sin(4 * self.t) / self.y dy = 3 * math.cos(4 * self.t) px, py = window.screenpos(self.X + dX, self.y + dy) size = F(2) window.screen.fill((255, 255, 255), (px, py, size, size))
def draw(self): if not self.bubble: return X, y, t = self.bubble t = self.t - t p = window.screenpos(X, y) r = max(F(6 * t), F(1)) pygame.draw.circle(window.screen, (0, 60, 30), p, r, F(1))
def draw(self): p = window.screenpos(self.X, self.y) color = tuple( int(a * (0.8 + 0.2 * math.sin(8 * self.t))) for a in (255, 128, 128)) pygame.draw.circle(window.screen, color, p, F(5), 0) pygame.draw.circle(window.screen, color, p, F(10), F(1)) pygame.draw.circle(window.screen, color, p, F(15), F(1))
def draw(self): target = get(self.targetid) if not target: return for d, s in [(-0.1, 3), (-0.05, 6), (0, 8), (0.05, 6), (0.1, 3)]: f = math.clamp(self.flife + d, 0, 1) X = self.X + f * (target.X - self.X) y = self.y + f * (target.y - self.y) pygame.draw.circle(window.screen, (255, 128, 255), window.screenpos(X, y), F(s), 0)
def draw(self): if not self.deployed: return r = settings.beacondetect - 1 for j in range(3): a = 4 * self.t + j * math.tau / 3 X = self.X + r * math.sin(a) / self.y y = self.y + r * math.cos(a) pygame.draw.circle(window.screen, (200, 200, 50), window.screenpos(X, y), F(2))
def worlddraw(filename, X, y, r=1, angle=0, alpha=1, rotate=True): px, py = window.screenpos(X, y) s = 2 * r * window.camera.R if not -s < px < window.sx + s or not -s < py < window.sy + s: return angle += math.degrees(window.camera.X0 - X) if not rotate: angle = 0 img = get(filename, s, angle, alpha) window.screen.blit(img, img.get_rect(center=(px, py)))
def worlddraw(filename, X, y, r = 1, angle = 0, alpha = 1, rotate = True): px, py = window.screenpos(X, y) s = 2 * r * window.camera.R if not -s < px < window.sx + s or not -s < py < window.sy + s: return angle += math.degrees(window.camera.X0 - X) if not rotate: angle = 0 img = get(filename, s, angle, alpha) window.screen.blit(img, img.get_rect(center = (px, py)))
def draw(self): parent = get(self.parentid) if not parent: return p = px, py = window.screenpos(parent.X, parent.y) color = tuple(int(a * (0.8 + 0.2 * math.sin(8 * self.t))) for a in (128, 255, 128)) pygame.draw.circle(window.screen, color, p, F(5), 0) pygame.draw.circle(window.screen, color, p, F(10), F(1)) pygame.draw.circle(window.screen, color, p, F(15), F(1)) dx = F(90 * math.clamp(self.t * 0.6 - 0.2, 0, 1)) pygame.draw.line(window.screen, color, p, (px + dx, py), F(1)) ptext.draw("TELEPORT TO\nTHIS SHIP", fontsize = F(12), color = (128, 255, 128), owidth = 1, fontname = "Exo", midleft = (px + F(20), py), alpha = math.clamp(self.t - 1, 0, 1))
def draw(self, surf, factor): data = [] for j, ((X, y), (dX, dy)) in enumerate(zip(self.ladderps, self.ladderds)): if window.distancefromcamera(X, y) < 3: data.append((j, X, y, dX, dy)) if len(data) < 2: return for alpha, r in [(40, 20), (60, 16), (100, 12), (140, 8)]: ps = [] rps = [] for j, X, y, dX, dy in data: omegax = 0.6 + 0.6 * (j ** 1.4 % 1) omegay = 0.6 + 0.6 * (j ** 1.7 % 1) omegar = 0.6 + 0.6 * (j ** 1.8 % 1) X += 4 * math.sin(omegax * self.t) / y y += 4 * math.sin(omegay * self.t) dr = r * (1 + 0.2 * math.sin(omegar * self.t)) dX *= dr dy *= dr px, py = window.screenpos(X + dX, y + dy) ps.append((px / factor, py / factor)) px, py = window.screenpos(X - dX, y - dy) rps.append((px / factor, py / factor)) pygame.draw.polygon(surf, (255, 255, 0, alpha), ps + rps[::-1], 0)
def draw(self): if not self.deployed: return px0, py0 = window.screenpos(self.X, self.y) for obj in state.goals: dx = math.Xmod(obj.X - self.X) * (self.y + obj.y) / 2 dy = obj.y - self.y d = math.sqrt(dx ** 2 + dy ** 2) if d < 8: continue dx /= d dy /= d px = px0 + int(window.camera.R * 2 * dx) py = py0 - int(window.camera.R * 2 * dy) pygame.draw.circle(window.screen, (0, 0, 255), (px, py), F(2))
def draw(self): parent = get(self.parentid) if not parent: return p = px, py = window.screenpos(parent.X, parent.y) color = tuple( int(a * (0.8 + 0.2 * math.sin(8 * self.t))) for a in (128, 255, 128)) pygame.draw.circle(window.screen, color, p, F(5), 0) pygame.draw.circle(window.screen, color, p, F(10), F(1)) pygame.draw.circle(window.screen, color, p, F(15), F(1)) dx = F(90 * math.clamp(self.t * 0.6 - 0.2, 0, 1)) pygame.draw.line(window.screen, color, p, (px + dx, py), F(1)) ptext.draw("TELEPORT TO\nTHIS SHIP", fontsize=F(12), color=(128, 255, 128), owidth=1, fontname="Exo", midleft=(px + F(20), py), alpha=math.clamp(self.t - 1, 0, 1))
def draw(): window.screen.fill((0, 0, 0)) if t < 1.5: background.drawstars() surf = window.screen.copy().convert_alpha() surf.fill((0, 0, 0, int(255 * t / 1.5))) window.screen.blit(surf, (0, 0)) else: class camera: y0 = window.camera.y0 * state.R / R X0 = 0 R = window.camera.R * 10 background.draw(camera = camera, hradius = 6) if t < 5: for ship in state.ships: ship.draw() px, py = window.screenpos(0, 0) # r = int(window.camera.R * R) # if py - r < window.sy: # pygame.draw.circle(window.screen, (0, 40, 20), (px, py), r) dialog.draw() drawtitle()
def draw(): window.screen.fill((0, 0, 0)) if t < 1.5: background.drawstars() surf = window.screen.copy().convert_alpha() surf.fill((0, 0, 0, int(255 * t / 1.5))) window.screen.blit(surf, (0, 0)) else: window.camera.y0 /= R / state.R window.camera.R *= 2.5 background.draw() window.camera.y0 *= R / state.R window.camera.R /= 2.5 if t < 5: for ship in state.ships: ship.draw() px, py = window.screenpos(0, 0) # r = int(window.camera.R * R) # if py - r < window.sy: # pygame.draw.circle(window.screen, (0, 40, 20), (px, py), r) dialog.draw() drawtitle()
def drawfilament(): for filament in state.filaments: ps = [window.screenpos(X, y) for X, y in filament.ladderps] pygame.draw.lines(window.screen, (255, 255, 0), False, ps, 3)
def screenpos(self): return window.screenpos(self.X, self.y)
def draw(self): for d, s in [(-0.1, 3), (-0.05, 6), (0, 8), (0.05, 6), (0.1, 3)]: f = math.clamp(self.flife + d, 0, 1) X = self.X + f * (self.X1 - self.X) y = self.y + f * (self.y1 - self.y) pygame.draw.circle(window.screen, (255, 128, 255), window.screenpos(X, y), F(s), 0)
def draw(self): p = window.screenpos(self.X, self.y) for d in (10, 20, 30): r = F(max(1, abs(40 * self.flife - d))) pygame.draw.circle(window.screen, (255, 255, 127), p, r, F(1))
def draw(self): p = window.screenpos(self.X, self.y) r = F(max(10 * self.flife, 1)) pygame.draw.circle(window.screen, self.color, p, r, F(1))
def draw(self): p = window.screenpos(self.X, self.y) color = tuple(int(a * (0.8 + 0.2 * math.sin(8 * self.t))) for a in (255, 128, 128)) pygame.draw.circle(window.screen, color, p, F(5), 0) pygame.draw.circle(window.screen, color, p, F(10), F(1)) pygame.draw.circle(window.screen, color, p, F(15), F(1))
def screenpos(self): dX = self.xA * math.sin(self.xomega * self.t) / self.y return window.screenpos(self.X + dX, self.y)