root/original/common/class.map.php

Revision 1, 9.8 KB (checked in by andrewgunn, 14 years ago)

Added original EVE-Killboard.net source code.

Line 
1<?
2
3  require_once( "db.php" );
4  require_once( "globals.php" );
5
6  class MapView
7  {
8    function MapView( $mode, $size = 200  )
9    {
10      $this->mode_ = $mode;
11      $this->imgwidth_ = $size;
12      $this->imgheight_ = $size;
13      $this->ly_ = 0.4 / 1000000000000000;
14      $this->offset_ = 10;
15
16      // colors
17      $this->sys_colors_[0] = array( 200, 20, 48 );
18      $this->sys_colors_[1] = array( 200, 20, 48 );
19      $this->sys_colors_[2] = array( 200, 20, 48 );
20      $this->sys_colors_[3] = array( 241, 176, 48 );
21      $this->sys_colors_[4] = array( 200, 200, 48 );
22      $this->sys_colors_[5] = array( 219, 241, 48 );
23      $this->sys_colors_[6] = array( 103, 241, 62 );
24      $this->sys_colors_[7] = array( 83, 241, 114 );
25      $this->sys_colors_[8] = array( 26, 241, 183 );
26      $this->sys_colors_[9] = array( 99, 241, 255 );
27      $this->sys_colors_[10] = array( 99, 241, 255 );
28      $this->linecolor_ = array( 75, 75, 75 );
29      $this->captioncolor_ = array( 110, 110, 110 );
30
31//    $this->normalcolor_ = array( 140, 90, 140 );
32    $this->normalcolor_ = array( 81, 103, 146 );
33//      $this->normalcolor_ = array( 151, 141, 191 );
34      $this->hlcolor_ = array( 200, 200, 200 );
35    }
36
37    function setBackground()
38    {
39    }
40
41    function setOffset( $offset )
42    {
43      $this->offset_ = $offset;
44    }
45
46    function showLines( $enable )
47    {
48      $this->showlines_ = $enable;
49    }
50
51    function showSysNames( $enable )
52    {
53      $this->showsysnames_ = $enable;
54    }
55
56    function colorSystems( $enable )
57    {
58      $this->colorsystems_ = $enable;
59    }
60
61    function setRegionID( $regionid )
62    {
63      $this->regionid_ = $regionid;
64    }
65
66    function setSystemID( $systemid )
67    {
68      $this->systemid_ = $systemid;
69
70      $sql = "select reg.reg_id, reg.reg_name, con.con_id, con.con_name, sys.sys_name, sys.sys_sec
71                from kb3_regions reg, kb3_constellations con, kb3_systems sys
72               where reg.reg_id = con.con_reg_id
73                 and con.con_id = sys.sys_con_id
74                 and sys.sys_id = ".$this->systemid_;
75
76      $qry = new DBQuery();
77      $qry->execute( $sql ) or die( $qry->getErrorMsg() );
78      $row = $qry->getRow();
79
80      $this->conid_ = $row['con_id'];
81      $this->regionid_ = $row['reg_id'];
82      $this->conname_ = $row['con_name'];
83      $this->regname_ = $row['reg_name'];
84      $this->sysname_ = $row['sys_name'];
85      $this->syssec_ = $row['sys_sec'];
86    }
87
88    function setTitle( $title )
89    {
90      $this->title_ = $title;
91    }
92
93    function generate()
94    {
95      $sql = "select sys.sys_x, sys.sys_y, sys.sys_z, sys.sys_sec,
96                     sys.sys_id, sys.sys_name, sys.sys_eve_id, sjp.sjp_to, con.con_id,
97                       con.con_name, reg.reg_id, reg.reg_name,
98                       reg.reg_x, reg.reg_z
99                  from kb3_systems sys, kb3_system_jumps sjp,
100                       kb3_constellations con, kb3_regions reg
101                 where con.con_id = sys.sys_con_id
102                   and reg.reg_id = con.con_reg_id
103                   and sjp.sjp_from = sys.sys_eve_id";
104
105      $regioncache = "cache/map/".$this->regionid_."_".$this->imgwidth_.".gif";
106      $cached = false;
107
108      if ( $this->mode_ == "map" ) {
109        $img = @imagecreatefromgif( $regioncache );
110        if ( $img ) {
111          Header( "Content-type: image/gif" ); 
112          imagegif( $img );
113          $cached = true;
114        }
115        $caption = $this->regname_;
116      }
117
118      if ( $this->mode_ == "region" ) {
119        $sql .= " and reg.reg_id = ".$this->regionid_;
120        $caption = $this->conname_;
121      }
122
123      if ( $this->mode_ == "cons" ) {
124        $sql .= " and con.con_id = ".$this->conid_;
125        $caption = $this->sysname_." (".roundsec( $this->syssec_ ).")";
126      }
127
128      if ( !$cached ) {
129        $qry = new DBQuery();
130        $qry->execute( $sql ) or die( $qry->getErrorMsg() );
131     
132        if ( !$img ) $img = imagecreatetruecolor( $this->imgwidth_, $this->imgheight_ );
133        $white = imagecolorallocate( $img, 255, 255, 255 );
134        $bgcolor = imagecolorallocate( $img, 30, 30, 30 ); 
135        imagefilledrectangle( $img, 0, 0, $this->imgwidth_,
136                              $this->imgheight_, $bgcolor );
137     
138        $color = $white; 
139
140        $fov = 0;
141
142        $i = 0;   
143        $minx = 0;
144        $minz = 0;
145        $maxx = 0;
146        $maxz = 0;
147        $mini = 0;
148        $maxi = 0;
149        $pi = 0;
150        $sc = 0;
151        while ( $row = $qry->getRow() ) {
152          $i = $row['sys_eve_id'];
153          if ( $i < $mini || $mini == 0 )
154            $mini = $i;
155          if ( $i > $maxi || $maxi == 0 )
156            $maxi = $i;
157          $x = $row['sys_x'] * $this->ly_;
158          $z = $row['sys_z'] * $this->ly_;
159 
160          if ( $x < $minx || $minx == 0 )
161            $minx = $x;
162          if ( $x > $maxx || $maxx == 0 )
163            $maxx = $x;
164          if ( $z < $minz || $minz == 0 )
165            $minz = $z;
166          if ( $z > $maxz || $maxz == 0 )
167            $maxz = $z;
168
169          $sys[$i][0] = $x;
170          $sys[$i][1] = $z;
171          if ( $i == $pi || $pi == 0 ) {
172            $sys[$i][2][$sc] = $row['sjp_to'];
173            $sys[$i][3] = $sc++;     
174          }
175          else {
176            $sc = 0;
177
178
179          }
180          $sys[$i][4] = $row['sys_id'];
181          $sys[$i][5] = $row['sys_name'];   
182          $sys[$i][6] = $row['sys_sec'];   
183          $sys[$i][7] = $row['con_id'];
184          $sys[$i][8] = $row['con_name'];
185          $sys[$i][9] = $row['reg_id'];
186          $sys[$i][10] = $row['reg_name'];
187          $pi = $i;     
188        }
189        $dx = abs( $maxx - $minx );
190        $dz = abs( $maxz - $minz );
191        $xscale = 1 / ($dx / ( $this->imgwidth_ - ( $this->offset_ * 2 ) ) );
192        $yscale = 1 / ($dz / ( $this->imgheight_ - ( $this->offset_ * 2 ) ) );
193 
194  //echo "dx:".$dx." dz:".$dz." xscale:".$scale." ".$yscale."<br>";
195  //echo "minx:".$minx." maxx:".$maxx." ";
196  //echo "minz:".$minz." maxz:".$maxz." ";
197
198  //exit;
199  //    exit;
200      // draw
201
202      // draw lines
203        if ( $this->showlines_ ) {
204          $n = $mini;
205          while ( $n <= $maxi ) {
206            $px = $this->offset_ + ( $sys[$n][0] - $minx ) * $xscale;
207            $py = $this->offset_ + ( $sys[$n][1] - $minz ) * $yscale;
208
209            $line_col = imagecolorallocate( $img, $this->linecolor_[0],
210                                                $this->linecolor_[1],
211                                                $this->linecolor_[2] );
212
213         
214            for ( $m = 0; $m <= $sys[$n][3]; $m++ ) {
215              $sys_to = $sys[$n][2][$m];
216 
217              if ( $sys[$sys_to][4] != "" ) {
218                $px_to = $this->offset_ + ( $sys[$sys_to][0] - $minx ) * $xscale;
219                $py_to = $this->offset_ + ( $sys[$sys_to][1] - $minz ) * $yscale;
220           
221                imageline( $img, $px, $py, $px_to, $py_to, $line_col );
222              } 
223            }
224
225            $n++;
226          }
227        }
228
229        // draw systems
230        $n = $mini;
231        while ( $n <= $maxi ) {
232          $px = $this->offset_ + ( $sys[$n][0] - $minx ) * $xscale;
233          $py = $this->offset_ + ( $sys[$n][1] - $minz ) * $yscale;
234 
235          if ( $this->mode_ == "map" ) {
236            if ( $sys[$n][9] == $this->regionid_ )
237              $color = imagecolorallocate( $img, $this->hlcolor_[0], $this->hlcolor_[1], $this->hlcolor_[2] );
238            else
239              $color = imagecolorallocate( $img, $this->normalcolor_[0], $this->normalcolor_[1], $this->normalcolor_[2] );
240          }
241          if ( $this->mode_ == "region" ) {
242            if ( $sys[$n][7] == $this->conid_ )
243              $color = imagecolorallocate( $img, $this->hlcolor_[0], $this->hlcolor_[1], $this->hlcolor_[2] );
244            else
245              $color = imagecolorallocate( $img, $this->normalcolor_[0], $this->normalcolor_[1], $this->normalcolor_[2] );
246          }
247          if ( $this->mode_ == "cons" ) {
248            if ( $sys[$n][4] == $this->systemid_ )
249              $color = imagecolorallocate( $img, $this->hlcolor_[0], $this->hlcolor_[1], $this->hlcolor_[2] );
250            else
251              $color = imagecolorallocate( $img, $this->normalcolor_[0], $this->normalcolor_[1], $this->normalcolor_[2] );
252          }
253
254        //if ( $sys[$n][3] > 0 )
255        //  $sec_status = round( $sys[$n][3] * 10 );
256        //else
257        //  $sec_status = 0;
258   
259        //$color = imagecolorallocate( $img, $this->sys_colors_[$sec_status][0],
260        //                                   $this->sys_colors_[$sec_status][1],
261        //                                 $this->sys_colors_[$sec_status][2] );
262
263          if ( $this->showsysnames_ ) {
264            $tlen = 5 * strlen( $sys[$n][5] );
265            if ( ( $px + $tlen > ( $this->imgwidth_ - 20 ) ) )
266              $sx = $px - $tlen;
267            else
268              $sx = $px + 5;
269            if ( ( $py + 5 > ( $this->imgheight_ - 20 ) ) )
270              $sy = $py - 5;
271            else
272              $sy = $py + 5;
273
274            imagestring( $img, 1, $sx, $sy, $sys[$n][5], $color );     
275            //imagettftext ( $img, 6, 0,
276            //               $sx,
277//                         $sy,
278//                         $color,
279//                         "../fonts/04B_03__.TTF",
280//                         $sys[$n][5] );           
281          }
282
283          $ed = $xscale * 0.75;
284          if ( $ed > 5 )
285            $ed = 5;
286
287          imagefilledellipse( $img, $px, $py, $ed, $ed, $color );   
288
289          $n++;
290        }
291      }
292
293      $captioncolor = imagecolorallocate( $img, $this->captioncolor_[0], $this->captioncolor_[1], $this->captioncolor_[2] );
294      if  ( strlen( $this->title_ ) > 0 )
295        $title = $this->title_." ".$caption;
296      else
297        $title = $caption;
298
299      imagestring( $img, 1, 2, 2, $title, $captioncolor );
300     // imagettftext ( $img, 6, 0,
301     //                5,
302     //                10,
303//                   $captioncolor,
304//                   "../fonts/04B_03__.TTF",
305//                   $title );           
306
307      if ( $this->mode_ == "map" && !$cached ) imagegif( $img, $regioncache );
308      Header( "Content-type: image/gif" ); 
309      imagegif( $img );
310    }
311  }
312?>
Note: See TracBrowser for help on using the browser.