Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
598 | rain-er | 1 | ############################################################################### |
2 | # |
||
3 | # map.pl - Map definition |
||
4 | # |
||
5 | ## Copyright (C) 2009 Rainer Walther (rainerwalther-mail@web.de) |
||
6 | # |
||
7 | # Creative Commons Lizenz mit den Zusaetzen (by, nc, sa) |
||
8 | # |
||
9 | # Es ist Ihnen gestattet: |
||
10 | # * das Werk vervielfältigen, verbreiten und öffentlich zugänglich machen |
||
11 | # * Abwandlungen bzw. Bearbeitungen des Inhaltes anfertigen |
||
12 | # |
||
13 | # Zu den folgenden Bedingungen: |
||
14 | # * Namensnennung. |
||
15 | # Sie müssen den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen. |
||
16 | # * Keine kommerzielle Nutzung. |
||
17 | # Dieses Werk darf nicht für kommerzielle Zwecke verwendet werden. |
||
18 | # * Weitergabe unter gleichen Bedingungen. |
||
19 | # Wenn Sie den lizenzierten Inhalt bearbeiten oder in anderer Weise umgestalten, |
||
20 | # verändern oder als Grundlage für einen anderen Inhalt verwenden, |
||
21 | # dürfen Sie den neu entstandenen Inhalt nur unter Verwendung von Lizenzbedingungen |
||
22 | # weitergeben, die mit denen dieses Lizenzvertrages identisch oder vergleichbar sind. |
||
23 | # |
||
24 | # Im Falle einer Verbreitung müssen Sie anderen die Lizenzbedingungen, unter welche dieses |
||
25 | # Werk fällt, mitteilen. Am Einfachsten ist es, einen Link auf diese Seite einzubinden. |
||
26 | # |
||
27 | # Jede der vorgenannten Bedingungen kann aufgehoben werden, sofern Sie die Einwilligung |
||
28 | # des Rechteinhabers dazu erhalten. |
||
29 | # |
||
30 | # Diese Lizenz lässt die Urheberpersönlichkeitsrechte unberührt. |
||
31 | # |
||
32 | # Weitere Details zur Lizenzbestimmung gibt es hier: |
||
33 | # Kurzform: http://creativecommons.org/licenses/by-nc-sa/3.0/de/ |
||
34 | # Komplett: http://creativecommons.org/licenses/by-nc-sa/3.0/de/legalcode |
||
35 | # |
||
36 | ############################################################################### |
||
37 | ## |
||
38 | # 2009-03-06 0.0.1 rw created |
||
39 | # 2009-04-01 0.1.0 rw RC1 |
||
40 | # 2009-04-18 0.1.1 rw Select default map, if configured map does not exist |
||
41 | # 2009-07-22 0.1.2 rw Offset_x and Offset_y for adjustment of map calibration |
||
42 | # 2009-08-15 0.1.3 rw Tracking Antenne Home position added |
||
43 | # Player home position added |
||
44 | # Read map definition from XML file |
||
45 | # |
||
46 | ############################################################################### |
||
47 | |||
48 | $Version{'map/map.pl'} = "0.1.3 - 2009-08-15"; |
||
49 | |||
50 | use XML::Simple; # http://search.cpan.org/dist/XML-Simple-2.18/lib/XML/Simple.pm |
||
51 | |||
52 | %Maps = |
||
53 | ( |
||
54 | Default => { |
||
55 | 'Name' => "Default", |
||
56 | 'Size_X' => '800', |
||
57 | 'Size_Y' => '600', |
||
58 | 'File' => 'default-800.gif', |
||
59 | |||
60 | 'P1_x' => '71', # calibration P1, P2 |
||
61 | 'P1_y' => '472', |
||
62 | 'P2_x' => '500', |
||
63 | 'P2_y' => '103', |
||
64 | 'P1_Lat' => '48.856253', |
||
65 | 'P1_Lon' => '2.3500000', |
||
66 | 'P2_Lat' => '54.090153', |
||
67 | 'P2_Lon' => '12.133249', |
||
68 | |||
69 | # 'Offset_x' => 5, # Optional Pixel offset MK to right |
||
70 | # 'Offset_y' => 5, # Optional pixel offset MK to top |
||
71 | |||
72 | # 'Home_Lat' => '54.090153', # Optional home position for player |
||
73 | # 'Home_Lon' => '12.133249', # Optional home position for player |
||
74 | |||
75 | |||
76 | # 'Track_Lat' => '49.685333', # Optional Tracking Antenna pos |
||
77 | # 'Track_Lon' => '10.950134', # Optional Tracking Antenna pos |
||
78 | # 'Track_Alt' => '500', # Optional Tracking Antenna altitude |
||
79 | # 'Track_Bearing' => 10, # Optional Tracking antenne direction |
||
80 | |||
81 | # 'Border' => [ 555, 430, # airfield border |
||
82 | # 516, 555, |
||
83 | # 258, 555, |
||
84 | # 100, 300, |
||
85 | # 580, 260, |
||
86 | # 530, 94, |
||
87 | # 627, 130, |
||
88 | # 735, 300, |
||
89 | # 680, 400, |
||
90 | # 757, 470, |
||
91 | # 720, 515, |
||
92 | # 575, 420, |
||
93 | # ], |
||
94 | }, |
||
95 | ); |
||
96 | |||
97 | |||
98 | # |
||
99 | # load additional Maps from XML files |
||
100 | # |
||
101 | my $MapDir = $Cfg->{'map'}->{'MapDir'} || "map"; |
||
102 | if ( -d $MapDir ) |
||
103 | { |
||
104 | opendir DIR, $MapDir; |
||
105 | my @Files = readdir DIR; |
||
106 | @Files = grep /\.xml$/, @Files; |
||
107 | closedir DIR; |
||
108 | |||
109 | foreach $Xml (@Files) |
||
110 | { |
||
111 | my $MapConfigFile = "$MapDir/$Xml"; |
||
112 | if ( -f $MapConfigFile ) |
||
113 | { |
||
114 | my $XmlMap = XMLin($MapConfigFile); |
||
115 | |||
116 | foreach $Location (keys %{$XmlMap}) |
||
117 | { |
||
118 | foreach $Key (keys %{$XmlMap->{$Location}} ) |
||
119 | { |
||
120 | my $Value = $XmlMap->{$Location}->{$Key}; |
||
121 | if ( $Key =~ /Border/i ) |
||
122 | { |
||
123 | $Value =~ s/\s//g; |
||
124 | my @Border = split ',', $Value; |
||
125 | @{$Maps{$Location}->{$Key}} = @Border; |
||
126 | } |
||
127 | else |
||
128 | { |
||
129 | $Maps{$Location}->{$Key} = $Value; |
||
130 | } |
||
131 | } |
||
132 | } |
||
133 | } |
||
134 | } |
||
135 | } |
||
136 | |||
137 | |||
138 | # |
||
139 | # Die verwendete Karte |
||
140 | # |
||
141 | my $MapDefault = $Cfg->{'map'}->{'MapDefault'}; |
||
142 | if ( defined $Maps{$MapDefault} ) |
||
143 | { |
||
144 | $Maps{'Current'} = $Maps{$MapDefault}; |
||
145 | } |
||
146 | else |
||
147 | { |
||
148 | $Maps{'Current'} = $Maps{'Default'}; |
||
149 | print "Map \"$MapDefault\" not found in map.pl. Using \"Default\" map\n"; |
||
150 | } |
||
151 | |||
152 | |||
153 | # |
||
154 | # Todo: Karte automatisch anhand der aktuellen GPS Position auswählen |
||
155 | # |
||
156 | |||
157 | 1; |
||
158 | |||
159 | __END__ |