91 lines
2.1 KiB
ActionScript
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();
|
|
} |