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

📄 datamanager.java

📁 Vyger offers a D & D and Rogue-like environment in a graphical online roleplay game.
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
            
            /*
            // player near enough the door ?
            if( door.isPlayerNear( myPlayer.getCurrentRectangle() ) ) {
            }
            */
            targetRange = UserAction.TARGET_RANGE_SAME_MAP;
            
            // checking if the target and the range are right
            if( !commandAction.isValidTarget(indexForMaskTarget, targetRange) ){
                if (SHOW_DEBUG) {
                    System.out.println("Action aborting: invalid target/range.....");
                }
                loc = null;
                commandRequest = COMMAND_NOTHING;
                getClientScreen().getMapPanel().setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
                return true;
            }
            
            // executing command
            switch(commandRequest) {
                case COMMAND_CAST:
                    // check if can cast
                    // .....
                    // check if have mana
                    // .....
                    // send message
                    switch(targetRange){
                        case UserAction.TARGET_RANGE_NONE:
                            break;
                        case UserAction.TARGET_RANGE_TOUCH:
                        case UserAction.TARGET_RANGE_SHORT:
                        case UserAction.TARGET_RANGE_MEDIUM:
                        case UserAction.TARGET_RANGE_LONG:
                        // case UserAction.TARGET_RANGE_SEE_AND_SHORT:
                        // case UserAction.TARGET_RANGE_SEE_AND_MEDIUM:
                        // case UserAction.TARGET_RANGE_SEE_AND_LONG:
                        case UserAction.TARGET_RANGE_SAME_MAP:
                            sendMessage( 
                            new CastActionWithPositionMessage( commandAction.getId(), x, y,targetKey ,targetRange ) );
                            break;
                        case UserAction.TARGET_RANGE_ONE_MAP:
                        case UserAction.TARGET_RANGE_MAP_ON_SAME_WORLD:
                        case UserAction.TARGET_RANGE_ANY:
                            sendMessage( new CastActionWithLocationMessage( commandAction.getId(), loc ) );
                            break;
                    }

                    getClientScreen().getMapPanel().setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
                    commandRequest = COMMAND_NOTHING;
                    loc = null;
                    return true;

            }

            // reset vars and screen cursor
            loc = null;
            commandRequest = COMMAND_NOTHING;
            getClientScreen().getMapPanel().setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
            if (SHOW_DEBUG) {
                System.out.println("Action aborted.....");
            }
        }
        else if( object instanceof PlayerImpl ) {
          // We display selection and player info
             String previouslySelectedPlayerKey = "";

             if (selectedPlayer!=null)
                 previouslySelectedPlayerKey = selectedPlayer.getPrimaryKey();

             selectedPlayer = (PlayerImpl) object; // new player selected

          // We get the InfoPlugIn
             InfoPlugIn infoPanel = (InfoPlugIn) clientScreen.getPlayerPanel().getPlugIn("Info");

             if(infoPanel==null) {
                Debug.signal(Debug.ERROR,this,"InfoPlugIn not found !");
       	        return true;
             }

          // We erase the previous selection circle
             if (circle!=null) {
                 gDirector.removeDrawable(circle);
                 circle=null;
             }

          // Deselect ?
             if ( previouslySelectedPlayerKey.equals(selectedPlayer.getPrimaryKey()) && isLeftClick ) {
                gDirector.addDrawable(selectedPlayer.getTextDrawable());
                gDirector.addDrawable(selectedPlayer.getBasicChar().getAura());
                selectedPlayer=null;

                if(infoPanel!=null) infoPanel.reset();
                return true;
             }

          // Select
             circle = new CircleDrawable( selectedPlayer.getDrawable(), 20,
                                       selectedPlayer.getBasicChar().getColor(), true,
                                       ImageLibRef.AURA_PRIORITY );
             gDirector.addDrawable(circle);
             gDirector.addDrawable(selectedPlayer.getTextDrawable());
             if(!selectedPlayer.getLocation().isTileMap())
                gDirector.addDrawable(selectedPlayer.getBasicChar().getAura());

             if(infoPanel!=null)
                infoPanel.setPlayerInfo( selectedPlayer );

          // Connection state
             if( selectedPlayer.getPlayerState().value == PlayerState.CONNECTED )
                return true;

             if( !isLeftClick )
                return true; // no away message displayed if right click

          // Away Message
             String awayMessage = selectedPlayer.getPlayerAwayMessage();

             if( !selectedPlayer.canDisplayAwayMessage() )  return true;

             if( awayMessage!=null ) {
                 JChatRoom chatRoom = clientScreen.getChatPanel().getCurrentJChatRoom();
                 if ( selectedPlayer.getPlayerState().value==PlayerState.DISCONNECTED ) {
                      chatRoom.appendText("<font color='gray'> "+selectedPlayer.getFullPlayerName()+" (disconnected) says: <i> "
                                                     +selectedPlayer.getPlayerAwayMessage()+" </i></font>");
                 } else
                     chatRoom.appendText("<font color='gray'> "+selectedPlayer.getFullPlayerName()+" (away) says: <i> "
                                                     +selectedPlayer.getPlayerAwayMessage()+" </i></font>");
             }

             return true;
        }
        else if( object instanceof Door ) {
          // We open/close the door IF the player is near enough...
             Door door = (Door) object;

             if (SHOW_DEBUG)
                System.out.println("A door has been clicked...");

          // player near enough the door ?
             if( door.isPlayerNear( myPlayer.getCurrentRectangle() ) ) {

                 if( isLeftClick ) {
                     WotlasLocation location = new WotlasLocation(myPlayer.getLocation());
                    
                    // ADD HERE lock test, does the player has the key if the door is locked ?
                    
                     sendMessage( new DoorStateMessage(location, door.getMyRoomLinkID(), !door.isOpened()) );
                 }
                 else {
                    // Door Selection ?

                 }
             }
             else {
              // we go to the door
                 Point doorPoint = door.getPointNearDoor( myPlayer.getCurrentRectangle() );

                 if( doorPoint!=null )
                     myPlayer.moveTo( doorPoint, worldManager );
             }

             return true;
        }
//      else if( object instanceof BaseObject ) {
//
//             ADD HERE SELECTION CODE FOR OBJECTS (use the player selection as example)
//      }
        else if( object!=null ) {
           // Unknown Object !
              Debug.signal(Debug.WARNING,this,"Unknown Object Clicked : "+object);
              return true;
        }

       return false; // event not for us
    }

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

 /** To add a wave arc effect on the player.
  */
   public void addWaveDrawable( PlayerImpl player ) {
      if(gDirector!=null)
         gDirector.addDrawable(player.getWaveArcDrawable());
   }

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

  /** To add a new player to the screen<br>
   * (called by client.message.description.PlayerDataMsgBehaviour)
   *
   * @player the player to add
   */
    public synchronized void addPlayer(PlayerImpl player) {
       players.put( player.getPrimaryKey(), player );
    }

  /** To remove a player
   *
   * @player the player to remove
   */
    public synchronized boolean removePlayer(PlayerImpl player) {
       players.remove(player.getPrimaryKey());
       return true;
    }

    /** To add a new screenObject to the screen<br>
   * (called by client.message.description.MsgBehaviour)
   *
   * @screenObject  to add to the player screen
   */
    public synchronized void addScreenObject(ScreenObject item) {
       screenObjects.put( item.getPrimaryKey(), item );
    }

  /** To remove a screenObject from player screen
   *
   * @screeenObject the player no more see, cause it's no more there
   */
    public synchronized boolean removeScreenObject(ScreenObject item) {
       screenObjects.remove( item.getPrimaryKey() );
       return true;
    }

  /** To set our player<br>
   * (called by client.message.description.YourPlayerDataMsgBehaviour)
   *
   * @param player Our player
   */
    public void setCurrentPlayer(Player player) {
      myPlayer = (PlayerImpl) player;

       synchronized(startGameLock) {
           startGameLock.notify();      
       }
    }

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

  /** To change the current MapData ( TownMap, WorldMap, InteriorMap ).
   */
    public void changeMapData() {
      updatingMapData=true;

      if( menuManager.isVisible() )
          menuManager.hide();

      try{
        if ( myPlayer.getLocation().isRoom() ) {
            myMapData = new InteriorMapData();      
        }
        else if ( myPlayer.getLocation().isTown() ) {
            myMapData = new TownMapData();
        }
        else if ( myPlayer.getLocation().isWorld() ) {
            myMapData = new WorldMapData();
        }
        else if ( myPlayer.getLocation().isTileMap() ) {
            myMapData = new TileMapData();
        }

        myMapData.showDebug(SHOW_DEBUG);
        myMapData.initDisplay(myPlayer, this);
      }
      catch(Exception e ) {
         Debug.signal(Debug.ERROR, this, e);
      }

      updatingMapData=false;
   }

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

  /** To suppress drawables, shadows, data
   */
    public void cleanInteriorMapData() {
      gDirector.removeAllDrawables();
      circle = null;
      selectedPlayer = null;
    }

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

  /** To draw a rectangle on the screen
   *
   * @param rect the rectangle to display
   */
    public void drawScreenRectangle(Rectangle rect, Color color) {
        Point p[] = new Point[5];
        int x = (int) rect.getX();
        int y = (int) rect.getY();
        int width = (int) rect.getWidth();
        int height = (int) rect.getHeight();
        p[0] = new Point(x,y);
        p[1] = new Point(x+width, y);
        p[2] = new Point(x+width, y+height);
        p[3] = new Point(x, y+height);
        p[4] = new Point(x,y);

        Drawable pathDrawable = (Drawable) new PathDrawable( p, color, (short) ImageLibRef.AURA_PRIORITY );
        gDirector.addDrawable( pathDrawable);
    }

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

  /** To exit wotlas.
   */
    public void exit() {
    
        if(clientScreen!=null) {
           int clientScreenWidth =  clientScreen.getWidth();
           int clientScreenHeight = clientScreen.getHeight();

            if(clientScreenWidth>100)
               ClientDirector.getClientConfiguration().setClientWidth(clientScreenWidth);

            if(clientScreenHeight>100)
               ClientDirector.getClientConfiguration().setClientHeight(clientScreenHeight);
        }

       ClientDirector.getClientConfiguration().save();
       SoundLibrary.clear();
       Debug.exit();
    }

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

  /** To get the master player.
   */
    public PlayerImpl getMyPlayer() {
        return myPlayer;
    }

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

   /** Method called when an item has been clicked on an item who is not a menu link.
    *  @param e menu event generated.
    */
      public void menuItemClicked( Menu2DEvent e ) {
          if(SHOW_DEBUG)
             System.out.println("Menu Item Clicked : "+e.toString()); 
// Test petrus
          if (e.getItemName().equals("test inventory plugin")) {
            System.out.println("ok");
          } else {
            System.out.println("not a test");
          }
      }

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

}

⌨️ 快捷键说明

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