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

📄 tradefunction.java

📁 一套MMORPG手机网络游戏的服务端
💻 JAVA
字号:
package com.swing.game.crystal.function;

import java.util.List;
import java.util.ArrayList;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.Logger;

import com.swing.game.crystal.CrystalController;
import com.swing.game.crystal.CrystalPlayer;
import com.swing.server.common.GameFunction;

import java.util.Iterator;

import com.swing.game.crystal.utils.Equip;
import com.swing.game.crystal.utils.TradeCenter.TradeNode;

public class TradeFunction
    extends GameFunction {

  public static Logger logger = Logger.getLogger(TradeFunction.class);
  static {
    PropertyConfigurator.configure("./cfg/Log4j.properties");
  }

  /**
   * handle
   *
   * @param param String
   * @return String
   * @todo Implement this simpleserver.function.FuncInterface method
   */
  public List handleRequest(String player, String message) {
    String[] command = message.split(CrystalController.SPLITTER_2);
    String re = "";
    CrystalPlayer user = (CrystalPlayer) gc.playersByPlayerId.get(player);
    if (command.length == 3) {

      if (command[0].equals("I")) {
        // 同意出售
        // 格式 S`地图号`用户名`买家用户名`Y
        if (command[2].equals("Y")) {
          // 修改买家和卖家的属性
          // 通知买家购买成功
          CrystalPlayer seller = (CrystalPlayer) gc.playersByPlayerId.get(player);

          TradeNode tn = CrystalController.Trades.getNode(player);

          CrystalPlayer buyer = (CrystalPlayer) gc.playersByPlayerId.
              get(command[1]);

          CrystalPlayer u = null;
          if (seller != null && buyer != null) {
            seller.removeEquip(tn.eId);
            seller.money += tn.price;
            seller.money %= 10000;

            buyer.addEquip(tn.eId, "1");
            buyer.money -= tn.price;

            buyer.addTradeData("R_Y");

            // 通知其他人取消交易
            for (Iterator iter = gc.playersByPlayerId.values().iterator(); iter.hasNext(); ) {
              u = (CrystalPlayer) iter.next();
              u.addTradeData("X " + command[2]);
            }

            CrystalController.Trades.clearBuyers(command[1]);
            CrystalController.Trades.removeSeller(player);
          }
          else
            logger.warn("出售物品出错");
        }
        // 不同意出售
        // 格式 S`地图号`用户名`买家用户名`N
        else if (command[2].equals("N")) {
          // 取消买家的临时购买者资格
          // 通知买家购买失败
          // String[] data = CrystalController.Trades.removeBuyer(player, command[1]).split("_");

          CrystalPlayer buyer = (CrystalPlayer) gc.playersByPlayerId.
              get(command[1]);

          buyer.addTradeData("R_N");
        }
        // 挂牌出售物品是5个参数
        // 格式 S`地图号`用户名`装备ID`价格
        else {
            
          // 挂牌
            CrystalController.Trades.addSeller("" + user.mapCode , player, command[1],
                                      Integer.parseInt(command[2]));
          Equip e = (Equip) CrystalController.WeaponMapping.get(command[1]);
          if (e != null) {
            // 通知该地图内的其他用户
            for (Iterator i = gc.playersByPlayerId.
                 values().iterator(); i.hasNext(); ) {
                CrystalPlayer u = (CrystalPlayer) i.next();
              // S_卖家用户名_卖的物品名_价格
              u.addTradeData("S " + player + " " + e.name + " " + command[2]);
            }
          }
        }
      }
      // 购买请求
      // 格式 B`地图号`用户名`卖家用户名`买家的话
      else if (command[0].equals("F")) {
        // 加入临时买家列表
        // 通知卖家有人要卖
          CrystalController.Trades.addBuyer(command[1], player, "" + user.mapCode,
                                   command[2]);
        ( (CrystalPlayer) gc.playersByPlayerId.get(
            command[1])).
            addTradeData("B " + player + " " + command[2]);
      }
    }
    else if (command.length == 2) {
      // 取消出售
      // 格式 S`地图号`用户名`C
      if (command[1].equals("C")) {
        // Map m = CrystalController.Trades.getTempBuyers(player);
        CrystalPlayer u = null;
        // 通知当前地图的所有玩家
        for (Iterator iter = gc.playersByPlayerId.values().iterator(); iter.hasNext(); ) {
          u = (CrystalPlayer) iter.next();
          u.addTradeData("X " + player);
        }
      }
    }
    List l = new ArrayList();
    l.add(re);
    return l;
  }


}

⌨️ 快捷键说明

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