annotate atcgame/maps.py @ 47:d2efdc4ff196

Initial reorganization of the code
author Josef "Jeff" Sipek <jeffpc@josefsipek.net>
date Fri, 01 Jun 2007 02:32:48 -0400
parents
children 955cd24d7a05
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
47
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
1 #/*
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
2 # * ATC - Air Traffic Controller simulation game
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
3 # *
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
4 # * Copyright (C) 2004-2007 Josef "Jeff" Sipek <jeffpc@josefsipek.net>
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
5 # *
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
6 # * This program is free software; you can redistribute it and/or modify
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
7 # * it under the terms of the GNU General Public License version 2 as
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
8 # * published by the Free Software Foundation.
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
9 # *
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
10 # * This program is distributed in the hope that it will be useful,
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
11 # * but WITHOUT ANY WARRANTY; without even the implied warranty of
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
12 # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
13 # * GNU General Public License for more details.
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
14 # */
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
15
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
16 import os
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
17 import sys
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
18
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
19 import config
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
20 import beacon
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
21
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
22 def get_map_info(file):
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
23 fd = open(file, 'r')
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
24 s = fd.read()
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
25 fd.close()
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
26
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
27 s = s.split("\n")
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
28
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
29 return Map( float(s[0]), # centerx
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
30 float(s[1]), # centery
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
31 float(s[2]), # mperpix
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
32 float(s[3]), # atcx
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
33 float(s[4])) # atcy
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
34
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
35 def get_navaids(file, m):
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
36 fd = open(file, 'r')
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
37 s = fd.read()
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
38 fd.close()
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
39
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
40 s = s.split("\n")
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
41
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
42 for line in s:
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
43 if (line.__len__() == 0):
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
44 continue
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
45
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
46 line = line.split(" ")
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
47
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
48 m.ninfo.append({
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
49 "xoff": float(line[0]),
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
50 "yoff": float(line[1]),
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
51 "freq": float(line[2]),
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
52 "name": line[3],
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
53 "type": line[4],
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
54 "output": float(line[5])})
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
55
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
56 class Map:
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
57 def __init__(self, centerx, centery, mperpix, atcx, atcy):
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
58 self.centerx = centerx
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
59 self.centery = centery
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
60 self.mperpix = mperpix
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
61 self.atcx = atcx
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
62 self.atcy = atcy
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
63
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
64 self.ninfo = []
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
65 self.navs = []
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
66
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
67 self.image = ""
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
68
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
69 def bootstrap(self):
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
70 for nav in self.ninfo:
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
71 if nav["type"] == "VOR":
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
72 self.navs.append(beacon.VOR_Beacon(nav["name"], nav["freq"], (nav["xoff"], nav["yoff"])))
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
73 elif nav["type"] == "ILS":
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
74 pass # FIXME: ILS beacons are little complicated
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
75
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
76 def cleanup(self):
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
77 while self.navs.__len__():
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
78 self.navs.pop()
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
79
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
80 MAPS = []
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
81
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
82 maps_dir = os.listdir(config.maps_dir)
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
83
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
84 for map_dir in maps_dir:
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
85 files = os.listdir(config.maps_dir + "/" + map_dir)
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
86
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
87 if (files.count("map.info") == 0):
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
88 print "Missing " + config.maps_dir + "/" + map_dir + "/map.info"
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
89 sys.exit(1)
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
90
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
91 if (files.count("map.png") == 0):
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
92 print "Missing " + config.maps_dir + "/" + map_dir + "/map.png"
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
93 sys.exit(1)
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
94
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
95 if (files.count("navaid.info") == 0):
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
96 print "Missing " + config.maps_dir + "/" + map_dir + "/navaid.info"
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
97 sys.exit(1)
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
98
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
99 map_info = get_map_info(config.maps_dir + "/" + map_dir + "/map.info")
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
100 get_navaids(config.maps_dir + "/" + map_dir + "/navaid.info", map_info)
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
101
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
102 map_info.image = config.maps_dir + "/" + map_dir + "/map.png"
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
103
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
104 MAPS.append(map_info)
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
105 print "Parsed and added '" + map_dir + "' map (" + str(map_info.ninfo.__len__()) + " navaids)"
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
106
d2efdc4ff196 Initial reorganization of the code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
107 print "Added " + str(MAPS.__len__()) + " maps"