# HG changeset patch # User Jeff Sipek # Date 1120718846 14400 # Node ID 8a4a829f1cc0955eadd56bc00c866657a25be5cc # Parent 6311b69deba69a93c9ee3fd94eeb1f5c959dc1c9 Nicer splashscreen Basic command input support Rudimentary altitude command support (just jumps to requested altitude) committer: Jeff Sipek 1120704446 -0400 diff -r 6311b69deba6 -r 8a4a829f1cc0 atc_plane.py --- 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: diff -r 6311b69deba6 -r 8a4a829f1cc0 atc_single.py --- 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!" diff -r 6311b69deba6 -r 8a4a829f1cc0 data/image/splash.png Binary file data/image/splash.png has changed diff -r 6311b69deba6 -r 8a4a829f1cc0 data/image/splash.xcf Binary file data/image/splash.xcf has changed diff -r 6311b69deba6 -r 8a4a829f1cc0 eventually_useful/real_atc_display.png Binary file eventually_useful/real_atc_display.png has changed