We could not synchronize checks via GitHub's checks API since Scrutinizer's GitHub App is not installed for this repository.
1 | <?php declare(strict_types=1); |
||
2 | |||
3 | use Smr\Database; |
||
4 | use Smr\Epoch; |
||
5 | |||
6 | $template = Smr\Template::getInstance(); |
||
7 | $session = Smr\Session::getInstance(); |
||
8 | $var = $session->getCurrentVar(); |
||
9 | $player = $session->getPlayer(); |
||
10 | $sector = $player->getSector(); |
||
11 | |||
12 | // If on a planet, forward to planet_main.php |
||
13 | if ($player->isLandedOnPlanet()) { |
||
14 | Page::create('planet_main.php', $var)->go(); |
||
15 | } |
||
16 | |||
17 | $template->assign('SpaceView', true); |
||
18 | |||
19 | $template->assign('PageTopic', 'Current Sector: ' . $player->getSectorID() . ' (' . $sector->getGalaxy()->getDisplayName() . ')'); |
||
20 | |||
21 | Menu::navigation($player); |
||
22 | |||
23 | |||
24 | // ******************************************* |
||
25 | // * |
||
26 | // * Sector List |
||
27 | // * |
||
28 | // ******************************************* |
||
29 | |||
30 | // Sector links |
||
31 | $links = []; |
||
32 | $links['Up'] = ['ID' => $sector->getLinkUp()]; |
||
33 | $links['Right'] = ['ID' => $sector->getLinkRight()]; |
||
34 | $links['Down'] = ['ID' => $sector->getLinkDown()]; |
||
35 | $links['Left'] = ['ID' => $sector->getLinkLeft()]; |
||
36 | $links['Warp'] = ['ID' => $sector->getWarp()]; |
||
37 | |||
38 | $unvisited = []; |
||
39 | |||
40 | $db = Database::getInstance(); |
||
41 | $dbResult = $db->read('SELECT sector_id FROM player_visited_sector WHERE sector_id IN (' . $db->escapeArray($links) . ') AND ' . $player->getSQL()); |
||
42 | foreach ($dbResult->records() as $dbRecord) { |
||
43 | $unvisited[$dbRecord->getInt('sector_id')] = true; |
||
44 | } |
||
45 | |||
46 | foreach ($links as $key => $linkArray) { |
||
47 | if ($linkArray['ID'] > 0 && $linkArray['ID'] != $player->getSectorID()) { |
||
48 | if ($player->getLastSectorID() == $linkArray['ID']) { |
||
49 | $class = 'lastVisited'; |
||
50 | } elseif (isset($unvisited[$linkArray['ID']])) { |
||
51 | $class = 'unvisited'; |
||
52 | } else { |
||
53 | $class = 'visited'; |
||
54 | } |
||
55 | $links[$key]['Class'] = $class; |
||
56 | } |
||
57 | } |
||
58 | |||
59 | $template->assign('Sectors', $links); |
||
60 | |||
61 | doTickerAssigns($template, $player, $db); |
||
62 | |||
63 | if (!isset($var['UnreadMissions'])) { |
||
64 | $var['UnreadMissions'] = $player->markMissionsRead(); |
||
65 | } |
||
66 | $template->assign('UnreadMissions', $var['UnreadMissions']); |
||
67 | |||
68 | // ******************************************* |
||
69 | // * |
||
70 | // * Force and other Results |
||
71 | // * |
||
72 | // ******************************************* |
||
73 | $game = SmrGame::getGame($player->getGameID()); |
||
74 | if (!$game->hasStarted()) { |
||
75 | $turnsMessage = 'The game will start in ' . format_time($game->getStartTime() - Epoch::time()) . '!'; |
||
76 | } else { |
||
77 | $turnsMessage = $player->getTurnsLevel()->message(); |
||
78 | } |
||
79 | $template->assign('TurnsMessage', $turnsMessage); |
||
80 | |||
81 | $protectionMessage = ''; |
||
82 | if ($player->getNewbieTurns()) { |
||
83 | if ($player->getNewbieTurns() < 25) { |
||
84 | $protectionMessage = '<span class="blue">PROTECTION</span>: You are almost out of <span class="green">NEWBIE</span> protection.'; |
||
85 | } else { |
||
86 | $protectionMessage = '<span class="blue">PROTECTION</span>: You are under <span class="green">NEWBIE</span> protection.'; |
||
87 | } |
||
88 | } elseif ($player->hasFederalProtection()) { |
||
89 | $protectionMessage = '<span class="blue">PROTECTION</span>: You are under <span class="blue">FEDERAL</span> protection.'; |
||
90 | } elseif ($sector->offersFederalProtection()) { |
||
91 | $protectionMessage = '<span class="blue">PROTECTION</span>: You are <span class="red">NOT</span> under protection.'; |
||
92 | } |
||
93 | |||
94 | if (!empty($protectionMessage)) { |
||
95 | $template->assign('ProtectionMessage', $protectionMessage); |
||
96 | } |
||
97 | |||
98 | //enableProtectionDependantRefresh($template,$player); |
||
99 | |||
100 | // Do we have an unseen attack message to store in this var? |
||
101 | $dbResult = $db->read('SELECT * FROM sector_message WHERE ' . $player->getSQL()); |
||
102 | if ($dbResult->hasRecord()) { |
||
103 | $var['AttackMessage'] = $dbResult->record()->getString('message'); |
||
104 | $db->write('DELETE FROM sector_message WHERE ' . $player->getSQL()); |
||
105 | } |
||
106 | |||
107 | if (isset($var['AttackMessage'])) { |
||
108 | checkForAttackMessage($var['AttackMessage'], $player); |
||
109 | } |
||
110 | if (isset($var['showForceRefreshMessage'])) { |
||
111 | $template->assign('ForceRefreshMessage', getForceRefreshMessage($player)); |
||
112 | } |
||
113 | if (isset($var['MissionMessage'])) { |
||
114 | $template->assign('MissionMessage', $var['MissionMessage']); |
||
115 | } |
||
116 | if (isset($var['msg'])) { |
||
117 | $template->assign('VarMessage', bbifyMessage($var['msg'])); |
||
118 | } |
||
119 | |||
120 | //error msgs take precedence |
||
121 | if (isset($var['errorMsg'])) { |
||
122 | $template->assign('ErrorMessage', $var['errorMsg']); |
||
123 | } |
||
124 | |||
125 | // ******************************************* |
||
126 | // * |
||
127 | // * Trade Result |
||
128 | // * |
||
129 | // ******************************************* |
||
130 | |||
131 | if (!empty($var['trade_msg'])) { |
||
132 | $template->assign('TradeMessage', $var['trade_msg']); |
||
133 | } |
||
134 | |||
135 | // ******************************************* |
||
136 | // * |
||
137 | // * Ports |
||
138 | // * |
||
139 | // ******************************************* |
||
140 | |||
141 | if ($sector->hasPort()) { |
||
142 | $port = $sector->getPort(); |
||
143 | $template->assign('PortIsAtWar', $player->getRelation($port->getRaceID()) < RELATIONS_WAR); |
||
144 | } |
||
145 | |||
146 | // ******************************************* |
||
147 | // * |
||
148 | // * Ships |
||
149 | // * |
||
150 | // ******************************************* |
||
151 | $otherPlayers = $sector->getOtherTraders($player); |
||
152 | $visiblePlayers = []; |
||
153 | $cloakedPlayers = []; |
||
154 | foreach ($otherPlayers as $accountID => $otherPlayer) { |
||
155 | if ($player->canSee($otherPlayer)) { |
||
156 | $visiblePlayers[$accountID] = $otherPlayer; |
||
157 | } else { |
||
158 | $cloakedPlayers[$accountID] = $otherPlayer; |
||
159 | } |
||
160 | } |
||
161 | $template->assign('VisiblePlayers', $visiblePlayers); |
||
162 | $template->assign('CloakedPlayers', $cloakedPlayers); |
||
163 | $template->assign('SectorPlayersLabel', 'Ships'); |
||
164 | |||
165 | |||
166 | function getForceRefreshMessage(AbstractSmrPlayer $player): string { |
||
167 | $db = Database::getInstance(); |
||
168 | $dbResult = $db->read('SELECT refresh_at FROM sector_has_forces WHERE refresh_at > ' . $db->escapeNumber(Epoch::time()) . ' AND sector_id = ' . $db->escapeNumber($player->getSectorID()) . ' AND game_id = ' . $db->escapeNumber($player->getGameID()) . ' AND refresher = ' . $db->escapeNumber($player->getAccountID()) . ' ORDER BY refresh_at DESC LIMIT 1'); |
||
169 | if ($dbResult->hasRecord()) { |
||
170 | $remainingTime = $dbResult->record()->getInt('refresh_at') - Epoch::time(); |
||
171 | $forceRefreshMessage = '<span class="green">REFRESH</span>: All forces will be refreshed in ' . $remainingTime . ' seconds.'; |
||
172 | } else { |
||
173 | $forceRefreshMessage = '<span class="green">REFRESH</span>: All forces have finished refreshing.'; |
||
174 | } |
||
175 | return $forceRefreshMessage; |
||
176 | } |
||
177 | |||
178 | function checkForAttackMessage(string $msg, AbstractSmrPlayer $player): void { |
||
179 | $contains = 0; |
||
180 | $msg = str_replace('[ATTACK_RESULTS]', '', $msg, $contains); |
||
181 | if ($contains > 0) { |
||
182 | // $msg now contains only the log_id, if there is one |
||
183 | $logID = str2int($msg); |
||
0 ignored issues
–
show
Bug
introduced
by
![]() |
|||
184 | |||
185 | $template = Smr\Template::getInstance(); |
||
186 | $db = Database::getInstance(); |
||
187 | $dbResult = $db->read('SELECT sector_id,result,type FROM combat_logs WHERE log_id=' . $db->escapeNumber($logID) . ' LIMIT 1'); |
||
188 | if ($dbResult->hasRecord()) { |
||
189 | $dbRecord = $dbResult->record(); |
||
190 | if ($player->getSectorID() == $dbRecord->getInt('sector_id')) { |
||
191 | $results = $dbRecord->getObject('result', true); |
||
192 | $template->assign('AttackResultsType', $dbRecord->getString('type')); |
||
193 | $template->assign('AttackResults', $results); |
||
194 | $template->assign('AttackLogLink', linkCombatLog($logID)); |
||
195 | } |
||
196 | } |
||
197 | } |
||
198 | } |
||
199 |