changeset 8:8a4a829f1cc0

Nicer splashscreen Basic command input support Rudimentary altitude command support (just jumps to requested altitude) committer: Jeff Sipek <jeffpc@jeff.(none)> 1120704446 -0400
author Jeff Sipek <jeffpc@jeff.(none)>
date Thu, 07 Jul 2005 02:47:26 -0400
parents 6311b69deba6
children 480ccfc8a57e
files atc_plane.py atc_single.py data/image/splash.png data/image/splash.xcf eventually_useful/real_atc_display.png
diffstat 5 files changed, 138 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/atc_plane.py	Thu Jul 07 01:09:25 2005 -0400
+++ b/atc_plane.py	Thu Jul 07 02:47:26 2005 -0400
@@ -51,7 +51,7 @@
 
 class Plane(pygame.sprite.Sprite):
 	""" Class to manage one plane's motion """
-	def __init__(self,callsign,pos=(0.0, 0.0, 0.0),vel=(0.0, 0.0, 0.0)):
+	def __init__(self,callsign,flightno,pos=(0.0, 0.0, 0.0),vel=(0.0, 0.0, 0.0)):
 		""" Set up everything """
 		pygame.sprite.Sprite.__init__(self)
 		
@@ -65,15 +65,18 @@
 		# call sign
 		self.callsign	= callsign
 		
+		# flight number
+		self.flightno	= flightno
+		
 		# position
-		self.X		= pos[0]
-		self.Y		= pos[1]
-		self.Z		= pos[2]
+		self.X		= m2pix(pos[0])
+		self.Y		= m2pix(pos[1])
+		self.Z		= m2pix(pos[2])
 		
 		# velocity
-		self.i		= vel[0]
-		self.j		= vel[1]
-		self.k		= vel[2]
+		self.i		= m2pix(vel[0])
+		self.j		= m2pix(vel[1])
+		self.k		= m2pix(vel[2])
 		
 		# plane specs
 		self.stallspeed	= m2pix(plane_PROP)
@@ -140,6 +143,15 @@
 		self.j = vel*cos(heading)
 		self.k = vel*sin(rc)
 
+	def process(self,cmd):
+		parts = cmd.split(' ')
+		
+		if (parts[0] == "ALT"):
+			print "Changing altitude to " + parts[1] + "m"
+			# FIXME: change altitude SLOWLY, accodring to laws of physics
+			self.Z = m2pix(int(parts[1]))
+			self.k = 0
+	
 	def display(self,screen):
 		""" Put everything onto the screen """
 		screen.blit(self.image, (int(self.X), int(self.Y)))
@@ -154,10 +166,12 @@
 		x = int(self.X) + 10
 		y = int(self.Y) - 5
 		
-		strings = (	self.callsign + str(self.status),
-				"Alt:  " + str(int(self.Z)),
-				"Lat:  " + str(int(self.X)),
-				"Long: " + str(int(self.Y)),
+		# FIXME: display geographic coordinates
+		strings = (	self.flightno,
+				self.callsign + " " + str(self.status),
+				"Alt:  " + str(int(pix2m(self.Z))),
+				"Lat:  " + str(int(pix2m(self.X))),
+				"Long: " + str(int(pix2m(self.Y))),
 				"Head: " + str(int(atc_utils.todeg(self.calc_head()))))
 		
 		for stri in strings:
--- a/atc_single.py	Thu Jul 07 01:09:25 2005 -0400
+++ b/atc_single.py	Thu Jul 07 02:47:26 2005 -0400
@@ -52,7 +52,7 @@
 	screen.blit(background, (0, 0))
 	pygame.display.flip()
 
-	planes = [atc_plane.Plane(callsign="N12422",vel=(atc_plane.m2pix(50), atc_plane.m2pix(50), atc_plane.m2pix(10))),]
+	planes = [atc_plane.Plane(callsign="N12422",flightno="Delta 79",vel=(50, 50, 10)),]
 	
 	mess = atc_message.Message()
 	
@@ -65,15 +65,105 @@
 				sys.exit()
 			if event.type == pygame.KEYDOWN:
 				# commands
-				if event.key == pygame.K_q:
-					mess.pickup_kill = 1
-					return
+				#if event.key == pygame.K_q:
+				#	mess.pickup_kill = 1
+				#	return
+				
 				if event.key == pygame.K_a:
 					cmd += 'A'
+				if event.key == pygame.K_b:
+					cmd += 'B'
+				if event.key == pygame.K_c:
+					cmd += 'C'
+				if event.key == pygame.K_d:
+					cmd += 'D'
+				if event.key == pygame.K_e:
+					cmd += 'E'
+				if event.key == pygame.K_f:
+					cmd += 'F'
+				if event.key == pygame.K_g:
+					cmd += 'G'
+				if event.key == pygame.K_h:
+					cmd += 'H'
+				if event.key == pygame.K_i:
+					cmd += 'I'
+				if event.key == pygame.K_j:
+					cmd += 'J'
+				if event.key == pygame.K_k:
+					cmd += 'K'
+				if event.key == pygame.K_l:
+					cmd += 'L'
+				if event.key == pygame.K_m:
+					cmd += 'M'
+				if event.key == pygame.K_n:
+					cmd += 'N'
+				if event.key == pygame.K_o:
+					cmd += 'O'
+				if event.key == pygame.K_p:
+					cmd += 'P'
+				if event.key == pygame.K_q:
+					cmd += 'Q'
+				if event.key == pygame.K_r:
+					cmd += 'R'
+				if event.key == pygame.K_s:
+					cmd += 'S'
+				if event.key == pygame.K_t:
+					cmd += 'T'
+				if event.key == pygame.K_u:
+					cmd += 'U'
+				if event.key == pygame.K_v:
+					cmd += 'V'
+				if event.key == pygame.K_w:
+					cmd += 'W'
+				if event.key == pygame.K_x:
+					cmd += 'X'
+				if event.key == pygame.K_y:
+					cmd += 'Y'
+				if event.key == pygame.K_z:
+					cmd += 'Z'
+				
+				if (event.key == pygame.K_0) or (event.key == pygame.K_KP0):
+					cmd += '0'
+				if (event.key == pygame.K_1) or (event.key == pygame.K_KP1):
+					cmd += '1'
+				if (event.key == pygame.K_2) or (event.key == pygame.K_KP2):
+					cmd += '2'
+				if (event.key == pygame.K_3) or (event.key == pygame.K_KP3):
+					cmd += '3'
+				if (event.key == pygame.K_4) or (event.key == pygame.K_KP4):
+					cmd += '4'
+				if (event.key == pygame.K_5) or (event.key == pygame.K_KP5):
+					cmd += '5'
+				if (event.key == pygame.K_6) or (event.key == pygame.K_KP6):
+					cmd += '6'
+				if (event.key == pygame.K_7) or (event.key == pygame.K_KP7):
+					cmd += '7'
+				if (event.key == pygame.K_8) or (event.key == pygame.K_KP8):
+					cmd += '8'
+				if (event.key == pygame.K_9) or (event.key == pygame.K_KP9):
+					cmd += '9'
+
+				if event.key == pygame.K_SPACE:
+					cmd += " "
+								
 				if event.key == pygame.K_ESCAPE:
 					cmd = ""
 				if event.key == pygame.K_BACKSPACE:
 					cmd = cmd[:-1]
+				
+				if event.key == pygame.K_TAB:
+					pass	# fixme, tab complete call signs/flight numbers, commands, etc.
+				
+				if (event.key == pygame.K_KP_ENTER) or (event.key == pygame.K_RETURN):
+					flno = cmd_plane(cmd)
+					cmd  = cmd_cmd(cmd)
+					print "plane = " + flno + ", cmd = " + cmd
+					for plane in planes:
+						if plane.flightno.upper() == flno.upper():
+							print "Found match!"
+							plane.process(cmd)
+							break;
+					cmd = ""
 		
 		screen.blit(background, (0, 0))
 		
@@ -91,5 +181,24 @@
 		
 		pygame.display.flip()
 
+def is_cmd(cmd):
+	if cmd=="ALT":
+		return True
+	return False
+
+def cmd_plane(cmd):
+	parts = cmd.split(' ')
+	ret = ""
+	for par in parts:
+		if is_cmd(par):
+			break;
+		ret += par + " "
+	return ret[:-1]
+
+def cmd_cmd(cmd):
+	p = cmd_plane(cmd)
+	
+	return cmd[p.__len__()+1:]
+
 if (__name__ == '__main__'):
 	print "Don't do it!"
Binary file data/image/splash.png has changed
Binary file data/image/splash.xcf has changed
Binary file eventually_useful/real_atc_display.png has changed