Open source Star Ruler 2 source code!
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
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();
|
||||
}
|
||||
Reference in New Issue
Block a user