Mercurial > atc
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 |
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" |