92 lines
3.0 KiB
Java
92 lines
3.0 KiB
Java
package mindustry.ui.dialogs;
|
|
|
|
import arc.*;
|
|
import mindustry.core.GameState.*;
|
|
import mindustry.game.EventType.*;
|
|
import mindustry.game.*;
|
|
|
|
import static mindustry.Vars.*;
|
|
|
|
public class GameOverDialog extends BaseDialog{
|
|
private Team winner;
|
|
|
|
public GameOverDialog(){
|
|
super("@gameover");
|
|
setFillParent(true);
|
|
shown(this::rebuild);
|
|
|
|
Events.on(ResetEvent.class, e -> hide());
|
|
}
|
|
|
|
public void show(Team winner){
|
|
this.winner = winner;
|
|
show();
|
|
if(winner == player.team()){
|
|
Events.fire(new WinEvent());
|
|
}else{
|
|
Events.fire(new LoseEvent());
|
|
}
|
|
}
|
|
|
|
void rebuild(){
|
|
title.setText(state.isCampaign() ? Core.bundle.format("sector.lost", state.getSector().name()) : "@gameover");
|
|
buttons.clear();
|
|
cont.clear();
|
|
|
|
buttons.margin(10);
|
|
|
|
if(state.rules.pvp && winner != null){
|
|
cont.add(Core.bundle.format("gameover.pvp", winner.localized())).pad(6);
|
|
buttons.button("@menu", () -> {
|
|
hide();
|
|
logic.reset();
|
|
}).size(130f, 60f);
|
|
}else{
|
|
if(control.isHighScore()){
|
|
cont.add("@highscore").pad(6);
|
|
cont.row();
|
|
}
|
|
|
|
cont.pane(t -> {
|
|
t.margin(13f);
|
|
t.left().defaults().left();
|
|
t.add(Core.bundle.format("stat.wave", state.stats.wavesLasted)).row();
|
|
t.add(Core.bundle.format("stat.unitsCreated", state.stats.unitsCreated)).row();
|
|
t.add(Core.bundle.format("stat.enemiesDestroyed", state.stats.enemyUnitsDestroyed)).row();
|
|
t.add(Core.bundle.format("stat.built", state.stats.buildingsBuilt)).row();
|
|
t.add(Core.bundle.format("stat.destroyed", state.stats.buildingsDestroyed)).row();
|
|
t.add(Core.bundle.format("stat.deconstructed", state.stats.buildingsDeconstructed)).row();
|
|
if(control.saves.getCurrent() != null){
|
|
t.add(Core.bundle.format("stat.playtime", control.saves.getCurrent().getPlayTime())).row();
|
|
}
|
|
|
|
if(state.isCampaign() && net.client()){
|
|
t.add("@gameover.waiting").padTop(20f).row();
|
|
}
|
|
|
|
}).pad(12);
|
|
|
|
if(state.isCampaign()){
|
|
if(net.client()){
|
|
buttons.button("@gameover.disconnect", () -> {
|
|
logic.reset();
|
|
net.reset();
|
|
hide();
|
|
state.set(State.menu);
|
|
}).size(170f, 60f);
|
|
}else{
|
|
buttons.button("@continue", () -> {
|
|
hide();
|
|
ui.planet.show();
|
|
}).size(170f, 60f);
|
|
}
|
|
}else{
|
|
buttons.button("@menu", () -> {
|
|
hide();
|
|
logic.reset();
|
|
}).size(140f, 60f);
|
|
}
|
|
}
|
|
}
|
|
}
|