Files
starruler-linux/scripts/client/queue.as
T
2018-07-17 14:15:37 +02:00

91 lines
2.1 KiB
ActionScript

import elements.BaseGuiElement;
import elements.GuiOverlay;
import elements.GuiText;
import elements.GuiButton;
import elements.GuiSkinElement;
QueueResponse@ response;
class QueueResponse : GuiOverlay {
GuiSkinElement@ bg;
GuiText@ state;
GuiButton@ accept, reject;
double speed = 1;
QueueResponse() {
speed = gameSpeed;
gameSpeed = 0;
super(null);
@bg = GuiSkinElement(this, Alignment(Left+0.5f-250,Top+0.5f-100,Width=500,Height=200), SS_Dialog);
@state = GuiText(bg, Alignment(Left+10,Top+20,Right-10,Height=28), locale::MP_QUEUE_READY);
state.font = FT_Medium;
state.horizAlign = 0.5;
@accept = GuiButton(bg, Alignment(
Left+0.5f-205, Top+65, Width=200, Height=46),
locale::MP_QUEUE_ACCEPT);
accept.font = FT_Medium;
accept.color = Color(0x88ff88ff);
@reject = GuiButton(bg, Alignment(
Left+0.5f+5, Top+65, Width=200, Height=46),
locale::MP_QUEUE_REJECT);
reject.font = FT_Medium;
reject.color = Color(0xff8888ff);
updateAbsolutePosition();
update();
bringToFront();
}
bool onGuiEvent(const GuiEvent& event) {
switch(event.type) {
case GUI_Clicked:
if(event.caller is accept) {
if(game_running)
saveGame(path_join(baseProfile["saves"], "queue_accepted.sr2"));
cloud::acceptQueue();
return true;
}
else if(event.caller is reject) {
cloud::rejectQueue();
remove();
gameSpeed = speed;
@response = null;
return true;
}
}
return BaseGuiElement::onGuiEvent(event);
}
void close() {
//Absorb the various close events that can occur
}
void update() {
uint ready = 0, players = 0;
if(cloud::queueRequest)
state.text = locale::MP_QUEUE_READY;
else if(cloud::getQueuePlayerWait(ready, players)) {
state.text = format(locale::MP_QUEUE_WAITING, ready, players);
accept.visible = false;
reject.visible = false;
}
else {
gameSpeed = speed;
remove();
@response = null;
return;
}
}
};
void tick(double time) {
if(response is null && cloud::queueRequest)
@response = QueueResponse();
else if(response !is null)
response.update();
}