-
Notifications
You must be signed in to change notification settings - Fork 2
/
probes.pl
92 lines (81 loc) · 2.7 KB
/
probes.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
use lib '/data/Lacuna-Server/lib';
use strict;
use warnings;
use Data::Dumper;
use 5.010;
use DateTime;
use Digest::MD5 qw(md5_hex);
use Lacuna;
my $empire_name = 'icydee';
my $zone = '0|2';
my ($empire) = Lacuna->db->resultset('Empire')->search({name => $empire_name});
my $all_stars = Lacuna->db->resultset('Map::Star')->search({
zone => $zone,
})->count;
print "// There are $all_stars stars in zone $zone\n";
# probes in the zone.
my $probes_rs = Lacuna->db->resultset('Probes')->search({
alliance_id => $empire->alliance_id,
'star.zone' => $zone,
},{
prefetch => 'star',
});
my $num_probes = $probes_rs->count;
print "// There are $num_probes probes in zone $zone\n";
print "var probes = new Array();\n";
while (my $probe = $probes_rs->next) {
# probes.push({x:-200, y:529});
my $x = $probe->star->x;
my $y = $probe->star->y;
print "probes.push({x:$x, y:$y});\n";
}
# stars siezed in the zone
my $stars = Lacuna->db->resultset('Map::Star')->search({
'me.zone' => $zone,
station_id => {'!=' => undef },
},{
prefetch => 'station',
});
my $alliances;
my $stars_siezed = $stars->count;
print "// There are $stars_siezed siezed stars in zone $zone\n";
print "var stars = new Array();\n";
while (my $star = $stars->next) {
# stars.push({alliance: 376, x: 42, y: 518});
my $alliance = $star->station->empire->alliance;
$alliances->{$alliance->id} = $alliance;
my $a = $alliance->id;
my $x = $star->x;
my $y = $star->y;
print "stars.push({alliance: $a, x: $x, y: $y});\n";
}
# all colonies in this zone
my $planets = Lacuna->db->resultset('Map::Body')->search({
empire_id => {'!=' => undef},
zone => $zone,
});
my $num_colonies = $planets->count;
print "// There are $num_colonies colonies in zone $zone\n";
print "var colonies = new Array();\n";
while (my $planet = $planets->next) {
# colonies.push({alliance: 905, x:-246, y: 525});
my $a = $planet->empire->alliance_id || 0;
if ($a) {
$alliances->{$a} = $planet->empire->alliance;
}
my $x = $planet->x;
my $y = $planet->y;
print "colonies.push({alliance: $a, x: $x, y: $y});\n";
}
# display all known alliances.
print "var alliances = new Array();\n";
print "alliances[0] = {color : '#000000', name : 'un-allied'};\n";
foreach my $alliance_id (sort keys %$alliances) {
my $color = '#' . substr(md5_hex($alliance_id),0,6);
my $alliance = Lacuna->db->resultset('Alliance')->find($alliance_id);
my $name = $alliance->name;
print "alliances[$alliance_id] = {color : '$color', name : '$name'};\n";
}
my $max_alliances = scalar keys %$alliances;
print "// there are $max_alliances alliances in zone $zone\n";
1;