package org.test.towerdefense;
import loon.action.sprite.painting.IGameComponent;
import loon.event.SysInput;
import loon.geom.Vector2f;
import loon.utils.timer.GameTime;
public class MonsterInfoScreen extends MenuScreen {
private java.util.ArrayList<AnimatedSprite> animatedSprites;
private MainGame game;
private boolean isFirstExit;
private MonsterInfoScreenSpriteWithText monsterInfoScreenSpriteWithText;
public MonsterInfoScreen(MainGame game, ScreenType prevScreen) {
super("", game, prevScreen);
this.isFirstExit = true;
this.game = game;
super.setScreenType(ScreenType.MonsterInfoScreen);
super.setTransitionOnTime(0f);
super.setTransitionOffTime(0.5f);
MenuEntry item = new MenuEntry("");
item.setuseButtonBackground(false);
item.setPosition(new Vector2f(110f, 422f));
item.setnoButtonBackgroundSize(new Vector2f(120f, 38f));
item.Selected = new GameEvent() {
@Override
public void invoke(MenuEntry comp) {
StartInstructionsMenuEntrySelected();
}
};
super.getMenuEntries().add(item);
this.monsterInfoScreenSpriteWithText = new MonsterInfoScreenSpriteWithText(
game);
}
private void Exit() {
if (this.monsterInfoScreenSpriteWithText != null) {
this.game.Components().remove(this.monsterInfoScreenSpriteWithText);
}
}
@Override
public void HandleInput(GameTime gameTime, SysInput input) {
super.HandleInput(gameTime, input);
}
@Override
public void LoadContent() {
this.animatedSprites = AnimatedSpriteMonster
.GetAllAnimatedSpriteMonsters(this.game);
for (AnimatedSprite sprite : this.animatedSprites) {
sprite.setOnlyAnimateIfGameStateStarted(false);
sprite.setObeyGameOpacity(false);
super.getScreenManager().getGame().Components().add(sprite);
}
}
@Override
protected void OnCancel() {
this.Exit();
super.getScreenManager().ExitAllScreens();
super.OnCancel();
}
private void StartInstructionsMenuEntrySelected() {
this.Exit();
super.getScreenManager().ExitAllScreens();
super.getScreenManager().AddScreen(
new InstructionScreen(this.game, ScreenType.MonsterInfoScreen));
}
@Override
public void Update(GameTime gameTime, boolean otherScreenHasFocus,
boolean coveredByOtherScreen) {
if (super.getIsExiting() && this.isFirstExit) {
for (IGameComponent component : this.animatedSprites) {
super.getScreenManager().getGame().Components()
.remove(component);
}
this.isFirstExit = false;
}
super.Update(gameTime, otherScreenHasFocus, coveredByOtherScreen);
}
}