jablonka.czprosek.czf

weathermap

Subversion Repositories:
[/] [random-bits/] [map-split.php] - Blame information for rev 18

 

Line No. Rev Author Line
11simandl<?php
2 require_once 'Weathermap.class.php';
3 
4 // EDIT THESE!
5 // Which file to read in (the big map)
6 $input_mapfile = "configs/09-test.conf";
7 // how big do you want your new maps to be?
8 $desired_width = 640;
9 $desired_height = 480;
10 
11 $map = new WeatherMap;
12 $map->ReadConfig($input_mapfile);
13 
14 print "Size of source is ".$map->width."x".$map->height."\n";
15 
16 $rows = intval($map->height/$desired_height)+1;
17 $cols = intval($map->width/$desired_width)+1;
18 $num = $rows * $cols;
19 
20 
21 if($num == 1)
22 {
23 print "This map is already within your constraints.\n";
24 }
25 else
26 {
27 print "We'll need to make $num ($cols x $rows) smaller maps\n";
28 for($row=0;$row < $rows; $row++)
29 {
30 for($col=0;$col<$cols; $col++)
31 {
32 print "=====================================\nMaking the submap $col,$row\n";
33 $min_x = $col*$desired_width;
34 $min_y = $row*$desired_height;
35 $max_x = ($col+1)*$desired_width;
36 $max_y = ($row+1)*$desired_height;
37 print "We'll read the map, and throw out everything not inside ($min_x,$min_y)->($max_x,$max_y)\n";
38 
39 $map = new WeatherMap;
40 $map->ReadConfig($input_mapfile);
41 
42 foreach ($map->nodes as $node)
43 {
44 $target = $node->name;
45 if( ($node->x < $min_x) || ($node->x >= $max_x) ||
46 ($node->y < $min_y) || ($node->y >= $max_y) )
47 {
48 
49 print "$target falls outside of this map. Deleting it and links that use it.\n";
50 
51 foreach ($map->links as $link)
52 {
53 if( ($target == $link->a->name) || ($target == $link->b->name) )
54 {
55 print "link $link->name uses it. Deleted.\n";
56 unset($map->links[$link->name]);
57 }
58 }
59 unset($map->nodes[$target]);
60 }
61 else
62 {
63 print "$target is OK, but will be moved for the new map from ".$node->x.",".$node->y." to ";
64 $x = $node->x;
65 $y = $node->y;
66 
67 $x = $node->x - $min_x;
68 $y = $node->y - $min_y;
69 $map->nodes[$target]->x = $x;
70 $map->nodes[$target]->y = $y;
71 print "$x,$y\n";
72 }
73 }
74 $output_mapfile = $input_mapfile."-".$row."-".$col.".conf";
75 $map->width = $desired_width;
76 $map->height = $desired_height;
77 $map->background="";
78 $map->WriteConfig($output_mapfile);
79 }
80 }
81 
82 }
83 
84?>

Powered by WebSVN 2.2.1