Package org.pokenet.client.ui

Source Code of org.pokenet.client.ui.Ui

package org.pokenet.client.ui;

import java.util.HashMap;

import mdes.slick.sui.Display;
import mdes.slick.sui.Frame;
import mdes.slick.sui.Label;
import mdes.slick.sui.event.ActionEvent;
import mdes.slick.sui.event.ActionListener;

import org.newdawn.slick.Color;
import org.newdawn.slick.SlickException;
import org.pokenet.client.GameClient;
import org.pokenet.client.backend.BattleManager;
import org.pokenet.client.backend.entity.PlayerItem;
import org.pokenet.client.ui.base.ConfirmationDialog;
import org.pokenet.client.ui.base.HUDButtonFactory;
import org.pokenet.client.ui.base.ImageButton;
import org.pokenet.client.ui.frames.BagDialog;
import org.pokenet.client.ui.frames.BigBagDialog;
import org.pokenet.client.ui.frames.ChatDialog;
import org.pokenet.client.ui.frames.FriendListDialog;
import org.pokenet.client.ui.frames.HelpWindow;
import org.pokenet.client.ui.frames.NPCSpeechFrame;
import org.pokenet.client.ui.frames.OptionsDialog;
import org.pokenet.client.ui.frames.PartyInfoDialog;
import org.pokenet.client.ui.frames.PlayerInfoDialog;
import org.pokenet.client.ui.frames.PokeStorageBoxFrame;
import org.pokenet.client.ui.frames.RequestDialog;
import org.pokenet.client.ui.frames.ShopDialog;
import org.pokenet.client.ui.frames.TownMap;
import org.pokenet.client.ui.frames.TradeDialog;

/**
* The main ui on screen
* @author shadowkanji
* @author ZombieBear
*
*/
public class Ui extends Frame {
  private static Ui m_instance;
  private FriendListDialog m_friendsList;
  private ChatDialog m_chat;
  private ImageButton [] m_buttons;
  private Display m_display;
  private Label m_moneyLabel = new Label();
    private OptionsDialog m_optionsForm;
    private RequestDialog m_requestsForm;
    private HelpWindow m_helpForm;
    private Frame m_bagForm;
    private PartyInfoDialog m_teamInfo;
  private NPCSpeechFrame m_speechFrame;
  @SuppressWarnings("unused")
  private BattleManager m_battleManager;
  private PokeStorageBoxFrame m_storageBox;
  private TownMap m_map;
  private TradeDialog m_trade;
  private ShopDialog m_shop;
    private boolean m_isOption;
    private static final int UI_WIDTH = 32*7;
    private ConfirmationDialog m_evolveDialog;
    private BigBagDialog m_bag;
    private PlayerInfoDialog m_stats;
 
  /**
   * Default constructor
   */
  public Ui(Display display) {
    m_instance = this;
    getContentPane().setX(getContentPane().getX() - 1);
    getContentPane().setY(getContentPane().getY() + 1);
    this.setSize(800, 66);
    this.setLocation(0, -getTitleBar().getHeight());
    this.setBackground(new Color(0, 0, 0, 75));
    this.setResizable(false);
    this.setDraggable(false);
   
   
    m_battleManager = new BattleManager();
   
    m_display = display;
   
    m_chat = new ChatDialog();
    m_requestsForm = new RequestDialog();

    m_friendsList = new FriendListDialog();
    m_friendsList.setVisible(false);
    m_display.add(m_friendsList);
   
    m_map = new TownMap();
    m_map.setAlwaysOnTop(true);
   
    m_map.setVisible(false);
    m_display.add(m_map);
   
    startButtons();

    m_moneyLabel.setText("$0");
    m_moneyLabel.pack();
    m_moneyLabel.setLocation(m_buttons[m_buttons.length - 1].getX() + 37, 6);
    m_moneyLabel.setVisible(true);
    m_moneyLabel.setFont(GameClient.getFontLarge());
    m_moneyLabel.setForeground(new Color(255, 255, 255));
    this.add(m_moneyLabel);
   
    this.add(GameClient.getInstance().getTimeService());
    GameClient.getInstance().getTimeService().setX(745);
    this.getTitleBar().setVisible(false);

    m_chat.setLocation(0, GameClient.getInstance().getDisplay().getHeight() - m_chat.getHeight());
    m_display.add(m_chat);
    m_display.add(this);
  }
 
  /**
   * Returns the map
   * @return the map
   */
  public TownMap getMap() {
    return m_map;
  }

  /**
   * Returns the instance
   * @return the instance
   */
  public static Ui getInstance(){
    return m_instance;
  }
 
  /**
   * Starts the HUD buttons
   */
  public void startButtons(){
    m_buttons = new ImageButton[8];
   
    m_buttons[0] = HUDButtonFactory.getButton("stats");
        m_buttons[0].addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            toggleStats();
          }
        });
        m_buttons[0].setToolTipText("Stats");
   
        m_buttons[1] = HUDButtonFactory.getButton("pokemon");
        m_buttons[1].addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            togglePokemon();
          }
        });
        m_buttons[1].setToolTipText("Pokemon");

    m_buttons[2] = HUDButtonFactory.getButton("bag");
        m_buttons[2].addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            toggleBag();
          }
        });
        m_buttons[2].setToolTipText("Bag");

    m_buttons[3] = HUDButtonFactory.getButton("map");
        m_buttons[3].addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            toggleMap();
          }
        });
        m_buttons[3].setToolTipText("Map");

        m_buttons[4] = HUDButtonFactory.getButton("friends");
    m_buttons[4].addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        toggleFriends();
      }
    });
    m_buttons[4].setToolTipText("Friends");
       
        m_buttons[5] = HUDButtonFactory.getButton("requests");
    m_buttons[5].addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        toggleRequests();
      }
    });
    m_buttons[5].setToolTipText("Requests");

    m_buttons[6] = HUDButtonFactory.getButton("options");
    m_buttons[6].addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        toggleOptions();
      }
    });
    m_buttons[6].setToolTipText("Options");
   
        m_buttons[7] = HUDButtonFactory.getButton("help");
        m_buttons[7].addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            toggleHelp();
          }
        });
        m_buttons[7].setToolTipText("Help");

        for (int i = 0; i < m_buttons.length; i++){
          m_buttons[i].pack();
          getContentPane().add(m_buttons[i]);
          m_buttons[i].setLocation(5 + (32 * i) + (5 * i), 7);
        }
  }
 
  /**
   * Adds a message to its appropriate chat window
   * @param m
   */
  public void messageReceived(String m) {
    switch(m.charAt(0)) {
    case 'n':
      //NPC Speeech
      String [] speech = m.substring(1).split(",");
      String result = "";
      for(int i = 0; i < speech.length; i++) {
        result += GameClient.getInstance().getMapMatrix().getSpeech(Integer.parseInt(speech[i])) + "/n";
      }
      talkToNPC(result);
      break;
    case 't':
      //Trade npc speech
      talkToNPC(m.substring(1));
      break;
    // The following is for in case the chat server is down...
    case 'l':
      //Local Chat
      if(!GameClient.getInstance().m_chatServerIsActive)
        if(m.substring(1).toLowerCase().contains(GameClient.getInstance().getOurPlayer().getUsername().toLowerCase())&&!m.substring(1).contains("<"+GameClient.getInstance().getOurPlayer().getUsername()+">"))
          m_chat.addChatLine(0,"!"+m.substring(1));
        else
          m_chat.addChatLine(0, m.substring(1));
      break;
    case 'p':
      //Private Chat
      String [] details = m.substring(1).split(",");
      if(!GameClient.getInstance().m_chatServerIsActive)
        m_chat.addChat(details[0], true);
        m_chat.addWhisperLine(details[0], details[1]);
      break;
    case 's':
      //Server Announcement
      if(!GameClient.getInstance().m_chatServerIsActive)
        m_chat.addSystemMessage(m.substring(1));
      break;
    }
  }
 
  /**
   * Sets all components visible/invisible
   * @param b
   */
  public void setAllVisible(boolean b) {
    this.setVisible(b);
    m_chat.setVisible(b);
  }
 
    /**
     * Updates the data
     * @param p
     */
    public void update(boolean money){
      if (money){
        try{
          m_moneyLabel.setText("$" + String.valueOf(GameClient.getInstance().getOurPlayer().getMoney()));
          m_moneyLabel.pack();
        } catch (Exception e) {System.err.println("Failed to update money");}
      } else {
        try{
          if (m_teamInfo != null)
            m_teamInfo.update(GameClient.getInstance().getOurPlayer().getPokemon());
        } catch (Exception e) {System.err.println("Failed to update pokemon data");}
      }
    }
   
    /**
     * Returns true if a pane is being shown
     * @return true if a pane is being shown
     */
    public boolean isOccupied() {
      return ( (m_optionsForm != null && m_optionsForm.isVisible())
          || (m_bagForm != null && m_bagForm.isVisible()) ||
          (m_teamInfo != null && m_teamInfo.isVisible()));
    }
   
    /**
     * ????
     * @return
     */
    public boolean isOption() {
            return m_isOption;
    }
   
    /**
     * Returns the options form
     * @return the options form
     */
    public OptionsDialog getOptionPane() {
            return m_optionsForm;
    }
   
    /**
     * Returns the request window
     * @return the request window
     */
    public RequestDialog getReqWindow() {
            return m_requestsForm;
    }
   
    /**
     * Toggles the Request Pane
     */
    public void toggleRequests(){
      if (getDisplay().containsChild(m_requestsForm)) {
      getDisplay().remove(m_requestsForm);     
      hideHUDElements();
    } else {
      hideHUDElements();
      m_requestsForm.setWidth(UI_WIDTH);
      m_requestsForm.setLocation(m_buttons[4].getX()67 - getTitleBar().getHeight());
      m_requestsForm.setDraggable(false);
      getDisplay().add(m_requestsForm);
    }
    }
   
    /**
     * Toggles the Player Stats pane
     */
    public void toggleStats() {
      if (m_stats != null) {
      getDisplay().remove(m_stats);
      hideHUDElements();
    } else {
      hideHUDElements();  
          m_stats = new PlayerInfoDialog();
          m_stats.setBackground(new Color(0, 0, 0, 70));
        m_stats.setResizable(false);
        m_stats.setDraggable(false);
        m_stats.getTitleBar().setVisible(false);
        m_stats.setLocation(m_buttons[0].getX(), 67 - getTitleBar().getHeight() * 2);
        getDisplay().add(m_stats);
      }
    }
   
    /**
     * Toggles the Bag Pane
     */
    public void toggleBag(){
      if (m_bagForm != null) {
      getDisplay().remove(m_bagForm);
      hideHUDElements();
    } else {
      hideHUDElements();
      m_bagForm = new Frame();
      m_bagForm.getContentPane().setX(m_bagForm.getContentPane().getX() - 1);
      m_bagForm.getContentPane().setY(m_bagForm.getContentPane().getY() + 1);
      m_bagForm.setBackground(new Color(0, 0, 0, 70));
      m_bagForm.setResizable(false);
      m_bagForm.setDraggable(false);
      m_bagForm.setTitle("     Bag");
      BagDialog pane = new BagDialog(
          GameClient.getInstance().getOurPlayer().getItems()) {
        public void itemClicked(PlayerItem item) {
          GameClient.getInstance().getPacketGenerator().writeTcpMessage("u" +
              item.getItem().getName());
        }
        public void cancelled() {
          getDisplay().remove(m_bagForm);
          m_bagForm = null;
        }
        public void loadBag() {
          getDisplay().remove(m_bagForm);
          m_bagForm = null;
          m_bag = new BigBagDialog();
          getDisplay().add(m_bag);
        }
      };
      pane.setSize(80, 246);
      pane.pack();
     
      m_bagForm.getTitleBar().getCloseButton().setVisible(false);
      m_bagForm.getContentPane().add(pane);
      m_bagForm.setSize(pane.getWidth(),
          pane.getHeight() + m_bagForm.getTitleBar().getHeight());
      getDisplay().add(m_bagForm);
      m_bagForm.setLocation(m_buttons[2].getX()67 - getTitleBar().getHeight());
      m_bagForm.setDraggable(false);
    }
    }

    /**
     * Toggles the Pokemon Pane
     */
    public void togglePokemon(){
      if (m_teamInfo != null) {
      getDisplay().remove(m_teamInfo);
      hideHUDElements();
    } else {
      hideHUDElements();
      m_teamInfo = new PartyInfoDialog(GameClient.getInstance().getOurPlayer()
          .getPokemon());
      m_teamInfo.setWidth(175);
      m_teamInfo.setLocation(m_buttons[1].getX(), 67 - getTitleBar().getHeight() * 2);
      m_teamInfo.getTitleBar().setVisible(false);
      m_teamInfo.setDraggable(false);
      getDisplay().add(m_teamInfo);
    }
    }
   
    /**
     * Toggles the Options Pane
     */
    public void toggleOptions(){
      if (m_optionsForm != null) {
      getDisplay().remove(m_optionsForm);
      hideHUDElements();
    } else {
      hideHUDElements();
      m_isOption = true;
      m_optionsForm = new OptionsDialog();
      m_optionsForm.setWidth(UI_WIDTH);
      m_optionsForm.setLocation(m_buttons[6].getX(), 67 - getTitleBar().getHeight());
      m_optionsForm.setDraggable(false);
      getDisplay().add(m_optionsForm);
    }
    }
   
    /**
     * Toggles the Help Pane
     */
    public void toggleHelp(){
      if (m_helpForm != null) {
      getDisplay().remove(m_helpForm);
      hideHUDElements();
    } else {
      hideHUDElements();
      m_helpForm = new HelpWindow();
      m_helpForm.setWidth(UI_WIDTH);
      m_helpForm.setHeight(300);
      m_helpForm.setLocation(m_buttons[7].getX(), 67 - getTitleBar().getHeight());
      getDisplay().add(m_helpForm);
    }
    }
   
    /**
     * Toggles the Map Pane
     */
    public void toggleMap(){
      if (m_map.isVisible()) {
      m_map.setVisible(false);
      hideHUDElements();
    } else {
      hideHUDElements();
      m_map.setLocation(m_buttons[3].getX()67 - getTitleBar().getHeight());
      m_map.setVisible(true);
    }
    }
   
    /**
     * Toggles the Friends Pane
     */
    public void toggleFriends(){
      if (m_friendsList.isVisible()) {
        m_friendsList.setVisible(false);
      hideHUDElements();
    } else {
      hideHUDElements();
      m_friendsList.setLocation(m_buttons[4].getX()67 - getTitleBar().getHeight());
      m_friendsList.setVisible(true);
    }
    }
       
    /**
     * Toggles the Chat Pane
     */
    public void toggleChat(){
      if (m_chat.isVisible()) {
        m_chat.setVisible(false);
    } else{
      if(m_chat==null)
        m_chat = new ChatDialog();
      m_chat.setLocation(0, GameClient.getInstance().getDisplay().getHeight() - m_chat.getHeight());
      m_chat.setVisible(true);
   
    }
    /**
     * Hides all HUD elements
     */
    private void hideHUDElements() {
            if (m_display.containsChild(m_requestsForm))
              m_display.remove(m_requestsForm);
            if (m_bagForm != null)
              m_bagForm.setVisible(false);
            m_bagForm = null;
            if (m_teamInfo != null)
              m_teamInfo.setVisible(false);
            m_teamInfo = null;
            if (m_optionsForm != null)
              m_optionsForm.setVisible(false);
            m_optionsForm = null;
            if (m_helpForm != null)
              m_helpForm.setVisible(false);
            m_helpForm = null;
            if (m_map.isVisible())
              m_map.setVisible(false);
            if (m_friendsList.isVisible())
              m_friendsList.setVisible(false);
            if (m_stats != null && m_stats.isVisible())
              m_stats.setVisible(false);
            m_stats = null;
      
    }
   
    /**
     * Hides the HUD
     * @param hide
     */
    public void hideHUD(boolean hide) {
      if (hide){
        hideHUDElements();
        setVisible(false);
      } else {
        setVisible(true);
      }
    }
   
    /**
     * Starts to talk to an NPC
     * @param speech
     * @throws SlickException
     */
    public void talkToNPC(String speech){
    m_speechFrame = new NPCSpeechFrame(speech);
    getDisplay().add(m_speechFrame);
//    if (speech.startsWith("*"))
//      usePokeStorageBox("");
  }
   
    /**
   * Nulls m_speechFrame
   */
  public void nullSpeechFrame() {
    getDisplay().remove(m_speechFrame);
    m_speechFrame = null;
  }
 
  /**
   * Returns the NPC Speech Frame
   * @return the NPC Speech Frame
   */
  public NPCSpeechFrame getNPCSpeech(){
    return m_speechFrame;
  }

  /**
   * Returns the Chat Dialog
   * @return the Chat Dialog
   */
  public ChatDialog getChat(){
    return m_chat;
 
 
  /**
   * Pops up the trade dialog
   * @param pokes
   * @param player
   */
  public void openTrade(String player){
    new TradeDialog(player);
  }
   
    /**
     * Starts a Storage Box
     */
    public void useStorageBox(int[] data){
      m_storageBox = new PokeStorageBoxFrame(data);
      getDisplay().add(m_storageBox);
    }
   
    /**
     * Stops the Storage Box
     */
    public void stopUsingBox(){
      getDisplay().remove(m_storageBox);
      m_storageBox = null;
    }
   
    /**
     * Returns the Storage Box
     * @return the Storage Box
     */
    public PokeStorageBoxFrame getStorageBox(){
      return m_storageBox;
    }

  /**
   * Returns the Friends List
   * @return the Friends List
   */
  public FriendListDialog getFriendsList() {
    return m_friendsList;
  }
 
  /**
     * Refreshes PokemonParty HUD
     */
    public void refreshParty(){
      m_teamInfo.update(GameClient.getInstance().getOurPlayer().getPokemon());
    }
   
    /**
     * Starts a trade
     * @param pokeNums
     * @param trainer
     */
    public void startTrade(String trainer){
      m_trade = new TradeDialog(trainer);
      m_display.add(m_trade);
    }
   
    /**
     * Stops a trade
     */
    public void stopTrade(){
      m_display.remove(m_trade);
      m_trade = null;
    }
   
    /**
     * Returns the trade dialog
     * @return the trade dialog
     */
    public TradeDialog getTrade() {
      return m_trade;
    }
   
    /**
     * Returns the bag dialog
     * @return the bag dialog
     */
    public BigBagDialog getBag() {
      return m_bag;
    }
   
    /**
     * Opens a store
     * @param pokeNums
     * @param trainer
     */
    public void startShop(HashMap<Integer, Integer> stock){
      if(m_shop != null) {
        /* Attempt to remove previous GUI */
        m_display.remove(m_shop);
      }
      if (!m_display.containsChild(m_shop)) {
        m_shop = new ShopDialog(stock);
        m_display.add(m_shop);
      } else {
        /* If previous GUI couldn't be removed, just update it */
        m_shop.updateStock(stock);
        m_shop.setVisible(true);
      }
    }
   
    /**
     * Closes the store
     */
    public void stopShop(){
      m_display.remove(m_shop);
      m_shop = null;
    }
   
    /**
     * Returns the shop dialog
     * @return the shop dialog
     */
    public ShopDialog getShop() {
      return m_shop;
    }
   
  /**
   * Initializes the Friends List
   * @param friends
   */
  public void initFriendsList(String[] friends){
    for (int i =0; i < friends.length; i++)
      m_friendsList.addFriend(friends[i]);
  }
   
    /**
     * A pokemon wants to evolve
     * @param pokeIndex
     */
    public void tryEvolve(int pokeIndex) {
      final int index = pokeIndex;
      ActionListener yes = new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          GameClient.getInstance().getPacketGenerator().writeTcpMessage("Pe1" + index);
          GameClient.getInstance().getDisplay().remove(m_evolveDialog);
        }
      };
      ActionListener no = new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          GameClient.getInstance().getPacketGenerator().writeTcpMessage("Pe0" + index);
          GameClient.getInstance().getDisplay().remove(m_evolveDialog);
        }
      };
      m_evolveDialog = new ConfirmationDialog(GameClient.getInstance().getOurPlayer().getPokemon()
          [pokeIndex].getName() + " is trying to evolve.", yes, no);
    }
}
TOP

Related Classes of org.pokenet.client.ui.Ui

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.