⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 infoplugin.java

📁 Vyger offers a D & D and Rogue-like environment in a graphical online roleplay game.
💻 JAVA
字号:
/* Light And Shadow. A Persistent Universe based on Robert Jordan's Wheel of Time Books.
 * Copyright (C) 2001-2002 WOTLAS Team
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */

package wotlas.client.screen.plugin;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import wotlas.utils.*;
import wotlas.libs.aswing.*;

import wotlas.common.*;
import wotlas.common.message.description.PlayerPastMessage;
import wotlas.client.*;
import wotlas.client.screen.*;
import wotlas.common.character.*;

import wotlas.common.environment.*;


/** Plug In that shows information on the selected player and enables the
 *  local player to set his/her past.
 *
 * @author MasterBob, Diego
 */

public class InfoPlugIn extends JPanelPlugIn {

 /*------------------------------------------------------------------------------------*/

  /** Player Name Label
   */
    private ALabel infoPlayerLabel = new ALabel();

  /** Information Text Area
   */
    private ATextArea playerTextArea;

  /** Can we show the 'save' button ?
   */
    private boolean savePastButtonDisplayed  = false;

  /** Save Button & its panel
   */
    private AButton savePastButton;
    private JPanel whitePanel;

 /*------------------------------------------------------------------------------------*/

  /** Constructor.
   */
    public InfoPlugIn() {
       super();
       setLayout(new BorderLayout());

       infoPlayerLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
       infoPlayerLabel.setHorizontalAlignment(SwingConstants.CENTER);

       playerTextArea = new ATextArea(10,25);
       playerTextArea.setLineWrap(true);
       playerTextArea.setWrapStyleWord(true);    
       playerTextArea.setEditable(false);
       playerTextArea.setAlignmentX(0.5f);

       setText("Click on a player...");
       setLabelText("No Player Selected");

       add(infoPlayerLabel,BorderLayout.NORTH);
       add(new JScrollPane(playerTextArea),BorderLayout.CENTER);
    }

 /*------------------------------------------------------------------------------------*/

  /** Called once to initialize the plug-in.
   *  @return if true we display the plug-in, return false if something fails during
   *          this init(), this way the plug-in won't be displayed.
   */
    public boolean init() {
       return true; // nothing special to init...
    }

 /*------------------------------------------------------------------------------------*/

  /** Called when we need to reset the content of this plug-in.
   */
    public void reset() {

       if(savePastButtonDisplayed) {
          playerTextArea.setEditable(false);
          remove(savePastButton);
          remove(whitePanel);
          revalidate();
          savePastButton = null;
          whitePanel = null;
       }

       savePastButtonDisplayed=false;
       setText("Click on a player...");
       setLabelText("No Player Selected");
    }

 /*------------------------------------------------------------------------------------*/

  /** To set the information text.
   */
    protected void setText(String text) {
       playerTextArea.setText(text);
    }

 /*------------------------------------------------------------------------------------*/

  /** To set the label text content.
   */
    protected void setLabelText(String text) {
       infoPlayerLabel.setText(text);
    }
    
 /*------------------------------------------------------------------------------------*/
    
  /** To set the player info given a player.
   */
    public void setPlayerInfo( Player player ) {
        if( player.getBasicChar().getEnvironment() == EnvironmentManager.ENVIRONMENT_WOT )
            setWotPlayerInfo( player );
        else if ( player.getBasicChar().getEnvironment() == EnvironmentManager.ENVIRONMENT_ROGUE_LIKE )
            setRLikePlayerInfo( player );
    }

 /*------------------------------------------------------------------------------------*/
    
  /** To set the RogueLike player info given a player.
   */
    public void setRLikePlayerInfo( Player player ) {
      if( player==ClientDirector.getDataManager().getMyPlayer() ) {

       // Is there a valid past ?
          String past = player.getPlayerPast();

          if(past.length()==0 && !savePastButtonDisplayed) {
            // No past set we display the save button
                playerTextArea.setEditable(true);
                this.setLabelText("Your player's past:");
                this.setText("...");
                savePastButtonDisplayed = true;

                ImageIcon im_saveup = ClientDirector.getResourceManager().getImageIcon("save-up.gif");
                ImageIcon im_savedo = ClientDirector.getResourceManager().getImageIcon("save-do.gif");
  
                savePastButton = new AButton(im_saveup);
                savePastButton.setRolloverIcon(im_savedo);
                savePastButton.setPressedIcon(im_savedo);
                savePastButton.setBorderPainted(false);
                savePastButton.setContentAreaFilled(false);
                savePastButton.setFocusPainted(false);
                savePastButton.setAlignmentX(Component.CENTER_ALIGNMENT);

                savePastButton.addActionListener(new ActionListener() {
                    public void actionPerformed (ActionEvent e) {                    	
                        savePastButton.setEnabled(false);
                        PlayerImpl p = ClientDirector.getDataManager().getMyPlayer();
                    	p.setPlayerPast( playerTextArea.getText() );
                        p.sendMessage( new PlayerPastMessage( p.getPrimaryKey(), p.getPlayerPast() ) );
                        InfoPlugIn.this.reset();
                        setPlayerInfo( p );
                    }
                });

                whitePanel = new JPanel();
                whitePanel.setBackground( Color.white );
                whitePanel.add(savePastButton);
                add(whitePanel,BorderLayout.SOUTH);
                revalidate();
             
             return;
          }
          else if(past.length()==0)
             return;
      }
      else if(savePastButtonDisplayed)
         reset();

      setLabelText( player.getFullPlayerName(null) );

      if( player!=ClientDirector.getDataManager().getMyPlayer() )
         setText(   
            "Class: "+player.getBasicChar().getCommunityName()+"\n"+
            "Player Past: "+player.getPlayerPast() );
      else
         setText(
            "Nickname: "+player.getPlayerName()+"\n"+
            "Class: "+player.getBasicChar().getCommunityName()+"\n"+
            "Player Past: "+player.getPlayerPast() );
    }

 /*------------------------------------------------------------------------------------*/

  /** To set the Wot player info given a player.
   */
    public void setWotPlayerInfo( Player player ) {
      if( player==ClientDirector.getDataManager().getMyPlayer() ) {

       // Is there a valid past ?
          String past = player.getPlayerPast();

          if(past.length()==0 && !savePastButtonDisplayed) {
            // No past set we display the save button
                playerTextArea.setEditable(true);
                this.setLabelText("Your player's past:");
                this.setText("...");
                savePastButtonDisplayed = true;

                ImageIcon im_saveup = ClientDirector.getResourceManager().getImageIcon("save-up.gif");
                ImageIcon im_savedo = ClientDirector.getResourceManager().getImageIcon("save-do.gif");
  
                savePastButton = new AButton(im_saveup);
                savePastButton.setRolloverIcon(im_savedo);
                savePastButton.setPressedIcon(im_savedo);
                savePastButton.setBorderPainted(false);
                savePastButton.setContentAreaFilled(false);
                savePastButton.setFocusPainted(false);
                savePastButton.setAlignmentX(Component.CENTER_ALIGNMENT);

                savePastButton.addActionListener(new ActionListener() {
                    public void actionPerformed (ActionEvent e) {                    	
                        savePastButton.setEnabled(false);
                        PlayerImpl p = ClientDirector.getDataManager().getMyPlayer();
                    	p.setPlayerPast( playerTextArea.getText() );
                        p.sendMessage( new PlayerPastMessage( p.getPrimaryKey(), p.getPlayerPast() ) );
                        InfoPlugIn.this.reset();
                        setPlayerInfo( p );
                    }
                });

                whitePanel = new JPanel();
                whitePanel.setBackground( Color.white );
                whitePanel.add(savePastButton);
                add(whitePanel,BorderLayout.SOUTH);
                revalidate();
             
             return;
          }
          else if(past.length()==0)
             return;
      }
      else if(savePastButtonDisplayed)
         reset();

      setLabelText( player.getFullPlayerName(null) );

      if( player!=ClientDirector.getDataManager().getMyPlayer() )
         setText(   
            "Community: "+player.getBasicChar().getCommunityName()+"\n"+
            "Rank: "+player.getBasicChar().getCharacterRank()+"\n\n"+
            "Player Past: "+player.getPlayerPast() );
      else
         setText(
            "Nickname: "+player.getPlayerName()+"\n"+
            "Community: "+player.getBasicChar().getCommunityName()+"\n"+
            "Rank: "+player.getBasicChar().getCharacterRank()+"\n\n"+
            "Player Past: "+player.getPlayerPast() );
    }

 /*------------------------------------------------------------------------------------*/

   /** Returns the name of the plug-in that will be displayed in the JPlayerPanel.
    * @return a short name for the plug-in
    */
      public String getPlugInName() {
      	  return "Info";
      }

 /*------------------------------------------------------------------------------------*/

   /** Returns the name of the plug-in's author.
    * @return author name.
    */
      public String getPlugInAuthor() {
          return "Wotlas Team (MasterBob)";
      }

 /*------------------------------------------------------------------------------------*/

   /** Returns the tool tip text that will be displayed in the JPlayerPanel.
    * @return a short tool tip text
    */
      public String getToolTipText() {
          return "Selected Player Information";
      }

 /*------------------------------------------------------------------------------------*/

   /** Eventual index in the list of JPlayerPanels
    * @return -1 if the plug-in has to be added at the end of the plug-in list,
    *         otherwise a positive integer for a precise location.
    */
      public int getPlugInIndex() {
          return 0;
      }

 /*------------------------------------------------------------------------------------*/

   /** Tells if this plug-in is a system plug-in that represents some base
    *  wotlas feature.
    * @return true means system plug-in, false means user plug-in
    */
      public boolean isSystemPlugIn() {
      	  return true;
      }

 /*------------------------------------------------------------------------------------*/
   
 }  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -