📄 tradefunction.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 + -