SelectWindow.java :  » Game » infinitewars » interfaces » spawnMenu » Java Open Source

Java Open Source » Game » infinitewars 
infinitewars » interfaces » spawnMenu » SelectWindow.java
package interfaces.spawnMenu;

import logic.common.player.Player;
import logic.common.player.playerListeners.PlayerTeamListener;
import logic.common.player.playerListeners.PlayerValueListener;
import logic.common.team.Team;
import logic.status.StatusChangedEvent;
import main.AbsInitGame;
import main.InitGame;
import networking.messages.syncMessages.ValueType;
import interfaces.GUISource;
import interfaces.language.LanguageButton;
import interfaces.language.LanguageWindow;
import interfaces.superWidgets.InterfaceLabel;
import fileHandling.language.interfaces.SpawnMenuText;
import gameStates.GameTimeListener;

import org.fenggui.binding.render.ImageFont;
import org.fenggui.event.ButtonPressedEvent;
import org.fenggui.event.IButtonPressedListener;
import org.fenggui.layout.StaticLayout;

public class SelectWindow extends LanguageWindow {
  
  private AbsSpawnMenu spawnMenu;
  
  private LanguageButton switchTeamButton, tacticButton, customButton, spawnMapButton;
  private int smallHeight, bigHeight, buttonWidth, buttonX;
  private InterfaceLabel spawnTimeLabel;
  private ReadyButton readyButton;
  
  public SelectWindow(final AbsSpawnMenu spawnMenu) {
    super(false, SpawnMenuText.Configure);
    this.spawnMenu = spawnMenu;
    
    content.setLayoutManager(new StaticLayout());
    
    int height = spawnMenu.getHeight() - spawnMenu.getHeight() / 6;
    int width = spawnMenu.getWidth() / 5;
    int border = spawnMenu.getHeight() / 12;
    
    setSize(width, height);
    setXY(spawnMenu.getWidth() - width - border, border);
    layout();
    
    smallHeight = content.getHeight() / 18;
    bigHeight = (content.getHeight() - (2 * smallHeight)) / 3;
    buttonWidth = content.getWidth();
    buttonX = 0;
    
    makeSwitchTeamButton();
    makeCenterButtons();
    makeSpawnButton();
    
    final Player player = spawnMenu.getGame().getCurrentPlayer();
    player.getTeam().getIngameState().addGameTimeListener(new GameTimeListener() {
      @Override
      public void respawnTimeUpdate() {
        if(player.getSpawnTime() == 0) spawnTimeLabel.setText(" ");
        else spawnTimeLabel.setText(player.getSpawnTime() + "");
      }
      
      @Override
      public void gameTimeUpdate(Integer newGameTime) {}
      @Override
      public void endTimeUpdate(Integer newEndTime) {}
    });
    
    spawnMenu.addListener(player, new PlayerValueListener() {
      @Override
      public void valueChanged(StatusChangedEvent event) {
        if(event.getType() == ValueType.Deaths) {
          SelectWindow.this.spawnMenu.setReady(false);
          readyButton.setReady(false);
        }
      }
    });
    
    spawnMenu.addListener(player, new PlayerTeamListener() {
      @Override
      public void teamChanged(Team newTeam) {
        spawnMenu.changeSelectedTeam(newTeam);
      }
      
      @Override
      public void teamChangeFailed() {
        TeamChangeFailedWindow window = new TeamChangeFailedWindow();
        spawnMenu.addWidget(window);
      }
    });
    
    layout();
  }
  
  private void makeSwitchTeamButton() {
    ImageFont buttonFont = GUISource.bigFont;
    
    switchTeamButton = new LanguageButton(SpawnMenuText.Switch_Team, buttonFont);
    switchTeamButton.setSize(buttonWidth, smallHeight);
    switchTeamButton.setXY(buttonX, content.getHeight() - switchTeamButton.getHeight());
    switchTeamButton.addButtonPressedListener(new IButtonPressedListener() {
      @Override
      public void buttonPressed(ButtonPressedEvent e) {
        Player player = spawnMenu.getGame().getCurrentPlayer();
        AbsInitGame init = InitGame.get();
        
        if(init.isServer()) {
          if(spawnMenu.canSwitchTeam()) player.switchTeam(player.getEnemyTeam());
          else player.teamChangeFailed();
        } else if(!init.isServer()) 
          init.getClientState().playerWantsTeamChange(player);
      }
    });
    
    content.addWidget(switchTeamButton);
  }
  
  private void makeCenterButtons() {
    tacticButton = new LanguageButton(SpawnMenuText.Squads, GUISource.bigFont);
    tacticButton.setSize(buttonWidth, bigHeight);
    tacticButton.setXY(buttonX, switchTeamButton.getY() - tacticButton.getHeight());
    tacticButton.addButtonPressedListener(new IButtonPressedListener() {
      @Override
      public void buttonPressed(ButtonPressedEvent e) {
        spawnMenu.setCurrentWindow(spawnMenu.getTacticWindow());
      }
    });
    content.addWidget(tacticButton);
    
    customButton = new LanguageButton(SpawnMenuText.Costumize, GUISource.bigFont);
    customButton.setSize(buttonWidth, bigHeight);
    customButton.setXY(buttonX, tacticButton.getY() - customButton.getHeight());
    customButton.addButtonPressedListener(new IButtonPressedListener() {
      @Override
      public void buttonPressed(ButtonPressedEvent e) {
        spawnMenu.setCurrentWindow(spawnMenu.getCustomWindow());
      }
    });
    content.addWidget(customButton);
    
    spawnMapButton = new LanguageButton(SpawnMenuText.Spawn_Map, GUISource.bigFont);
    spawnMapButton.setSize(buttonWidth, bigHeight);
    spawnMapButton.setXY(buttonX, customButton.getY() - spawnMapButton.getHeight());
    spawnMapButton.addButtonPressedListener(new IButtonPressedListener() {
      @Override
      public void buttonPressed(ButtonPressedEvent e) {
        spawnMenu.setCurrentWindow(spawnMenu.getSpawnMap());
      }
    });
    content.addWidget(spawnMapButton);
  }
  
  private void makeSpawnButton() {
    readyButton = new ReadyButton(SpawnMenuText.Ready, GUISource.bigFont);
    int height = spawnMapButton.getY();
    readyButton.setSize(buttonWidth / 6 * 5, height);
    readyButton.setXY(buttonX, 0);
    readyButton.addButtonPressedListener(new IButtonPressedListener() {
      @Override
      public void buttonPressed(ButtonPressedEvent e) {
        if(spawnMenu.isReady()) {
          spawnMenu.setReady(false);
          readyButton.setReady(false);
        } else if(spawnMenu.getSelectedHunter() != null && spawnMenu.getSelectedSpawnLocation() != null) {
          spawnMenu.setReady(true);
          readyButton.setReady(true);
        }
      }
    });
    content.addWidget(readyButton);
    
    spawnTimeLabel = new InterfaceLabel(" ", GUISource.bigFont);
    spawnTimeLabel.setSize(buttonWidth - readyButton.getWidth(), height);
    spawnTimeLabel.setXY(buttonX + readyButton.getWidth(), 0);
    content.addWidget(spawnTimeLabel);
  }
  
  public void teamChanged() {
    readyButton.setReady(false);
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.