/*******************************************************************************
* Copyright 2015 Maximilian Stark | Dakror <mail@dakror.de>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package de.dakror.arise.layer;
import java.awt.Graphics2D;
import java.io.IOException;
import de.dakror.arise.Arise;
import de.dakror.arise.game.Game;
import de.dakror.arise.net.packet.Packet;
import de.dakror.arise.net.packet.Packet.PacketTypes;
import de.dakror.arise.net.packet.Packet02Disconnect;
import de.dakror.arise.net.packet.Packet02Disconnect.Cause;
import de.dakror.gamesetup.ui.ClickEvent;
import de.dakror.gamesetup.ui.button.TextButton;
import de.dakror.gamesetup.util.Helper;
/**
* @author Dakror
*/
public class PauseLayer extends MPLayer {
boolean gotoMenu;
public PauseLayer() {
modal = true;
}
@Override
public void draw(Graphics2D g) {
drawModality(g);
Helper.drawContainer( (Game.getWidth() - TextButton.WIDTH - 40) / 2, (Game.getHeight() - TextButton.HEIGHT * 3 - 40) / 2, TextButton.WIDTH + 40, TextButton.HEIGHT * 3 + 40,
true, false, g);
drawComponents(g);
}
@Override
public void update(int tick) {
if (Game.currentGame.alpha == 1 && gotoMenu && Game.userID == 0) {
Game.currentGame.removeLayer(Game.world);
Game.world = null;
Game.worldID = 1;
Game.currentGame.fadeTo(0, 0.05f);
Game.currentGame.setLayer(new LoginLayer());
gotoMenu = false;
}
}
@Override
public void init() {
TextButton back = new TextButton((Game.getWidth() - TextButton.WIDTH - 40) / 2 + 20, (Game.getHeight() - TextButton.HEIGHT * 3 - 40) / 2 + 20, "Weiter");
back.addClickEvent(new ClickEvent() {
@Override
public void trigger() {
Game.currentGame.removeLayer(PauseLayer.this);
}
});
components.add(back);
TextButton logout = new TextButton(back.getX(), back.getY() + TextButton.HEIGHT, "Abmelden");
logout.addClickEvent(new ClickEvent() {
@Override
public void trigger() {
try {
gotoMenu = true;
Game.currentGame.addLayer(new LoadingLayer());
Game.client.sendPacket(new Packet02Disconnect(Game.userID, Cause.USER_DISCONNECT));
} catch (IOException e) {
e.printStackTrace();
}
}
});
if (Game.userID != 0 && !Arise.wrapper) components.add(logout);
TextButton exit = new TextButton(back.getX(), back.getY() + TextButton.HEIGHT * 2, "Beenden");
exit.addClickEvent(new ClickEvent() {
@Override
public void trigger() {
try {
if (Game.userID != 0) {
Game.currentGame.addLayer(new LoadingLayer());
Game.client.sendPacket(new Packet02Disconnect(Game.userID, Cause.USER_DISCONNECT));
} else Game.exit();
} catch (IOException e) {
e.printStackTrace();
}
}
});
components.add(exit);
}
@Override
public void onReceivePacket(Packet p) {
if (p.getType() == PacketTypes.DISCONNECT && ((Packet02Disconnect) p).getCause() == Cause.SERVER_CONFIRMED) {
if (gotoMenu) {
Game.userID = 0;
Game.currentGame.fadeTo(1, 0.05f);
} else Game.exit();
}
}
}