Esempio n. 1
0
 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)
Esempio n. 2
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))
Esempio n. 3
0
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()
Esempio n. 4
0
	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))
Esempio n. 5
0
	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))
Esempio n. 6
0
 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))
Esempio n. 7
0
	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)
Esempio n. 8
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))
Esempio n. 9
0
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)))
Esempio n. 10
0
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)))
Esempio n. 11
0
	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))
Esempio n. 12
0
	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)
Esempio n. 13
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))
Esempio n. 14
0
 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))
Esempio n. 15
0
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()
Esempio n. 16
0
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()
Esempio n. 17
0
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)
Esempio n. 18
0
	def screenpos(self):
		return window.screenpos(self.X, self.y)
Esempio n. 19
0
	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)
Esempio n. 20
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))
Esempio n. 21
0
	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))
Esempio n. 22
0
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)
Esempio n. 23
0
	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))
Esempio n. 24
0
	def screenpos(self):
		dX = self.xA * math.sin(self.xomega * self.t) / self.y
		return window.screenpos(self.X + dX, self.y)