package module.utility;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import module.character.CharList;
import module.character.Group;
import module.character.api.ICharacter;
import module.command.CommandServer;
import module.item.ItemList;
import module.item.SingleItemList;
import module.item.api.IContainer;
import module.item.api.IEquipment;
import module.item.api.IEquipment.EquipType;
import module.item.api.IItem;
public class ItemUtil {
public static String wearMsg(IEquipment equip) {
switch (equip.getEquipType()) {
case WEAPON:
return String.format("�|�_%s��@�Z���C", equip.getChiName());
case SHIELD:
return String.format("�|�_%s��@�P�C", equip.getChiName());
case HELMET:
return String.format("�N%s���b�Y�W�C", equip.getChiName());
case ARMOR:
return String.format("�N%s��b���W�C", equip.getChiName());
case GLOVES:
return String.format("�N%s���b��W�C", equip.getChiName());
case BOOTS:
return String.format("�N%s��b�}�W�C", equip.getChiName());
case ACCESSORY:
return String.format("��%s�����b���W�C", equip.getChiName());
default:
return null;
}
}
public static String getEquipmentType(IEquipment equip){
switch (equip.getEquipType()){
case WEAPON:
return "�Z��";
case SHIELD:
return "�P";
case HELMET:
return "�Y��";
case ARMOR:
return "�@��";
case GLOVES:
return "��M";
case BOOTS:
return "�c�l";
case ACCESSORY:
return "���~";
default:
return null;
}
}
public static String showPlayerEquip(ICharacter c) {
ConcurrentHashMap<IEquipment.EquipType, IEquipment> equipMap = c
.getEquipment();
StringBuffer buf = new StringBuffer();
buf.append("|�Y��| ");
buf.append(showSingleEquip(EquipType.HELMET, equipMap));
buf.append("|����| ");
buf.append(showSingleEquip(EquipType.ARMOR, equipMap));
buf.append("|����| ");
buf.append(showSingleEquip(EquipType.GLOVES, equipMap));
buf.append("|�Z��| ");
buf.append(showSingleEquip(EquipType.WEAPON, equipMap));
buf.append("|�P| ");
buf.append(showSingleEquip(EquipType.SHIELD, equipMap));
buf.append("|���}| ");
buf.append(showSingleEquip(EquipType.BOOTS, equipMap));
buf.append("|���~| ");
buf.append(showSingleEquip(EquipType.ACCESSORY, equipMap));
return buf.toString();
}
private static String showSingleEquip(IEquipment.EquipType type,
ConcurrentHashMap<IEquipment.EquipType, IEquipment> equipMap) {
IEquipment equip = equipMap.get(type);
if (equip != null)
return String.format("%s/%s\n", equip.getChiName(),
equip.getEngName());
else
return "�L\n";
}
public static String showLookEquip(ICharacter c) {
ConcurrentHashMap<IEquipment.EquipType, IEquipment> equipMap = c
.getEquipment();
StringBuffer buf = new StringBuffer("");
if (equipMap.containsKey(EquipType.HELMET))
buf.append("|�Y��| " + showSingleEquip(EquipType.HELMET, equipMap));
if (equipMap.containsKey(EquipType.ARMOR))
buf.append("|����| " + showSingleEquip(EquipType.ARMOR, equipMap));
if (equipMap.containsKey(EquipType.GLOVES))
buf.append("|����| " + showSingleEquip(EquipType.GLOVES, equipMap));
if (equipMap.containsKey(EquipType.WEAPON))
buf.append("|�Z��| " + showSingleEquip(EquipType.WEAPON, equipMap));
if (equipMap.containsKey(EquipType.SHIELD))
buf.append("|�P| " + showSingleEquip(EquipType.SHIELD, equipMap));
if (equipMap.containsKey(EquipType.BOOTS))
buf.append("|���}| " + showSingleEquip(EquipType.BOOTS, equipMap));
if (equipMap.containsKey(EquipType.ACCESSORY))
buf.append("|���~| "
+ showSingleEquip(EquipType.ACCESSORY, equipMap));
return buf.toString();
}
public static void dropAllItemOnDefeat(Group g) {
// add all equipments to inventory
for (CharList cList : g.list){
for (ICharacter c : cList.charList){
for (Entry<EquipType, IEquipment> entry : c.getEquipment().entrySet()){
IItem equip = entry.getValue();
g.getInventory().addItem(equip);
}
c.getEquipment().clear();
}
}
if (g.getInventory().itemList.size() == 0)
return;
synchronized (g.getAtRoom().getItemList()) {
StringBuffer buf = new StringBuffer();
buf.append(g.getChiName() + "�����F���~�G\n");
for (SingleItemList sil : g.getInventory().itemList)
buf.append(sil.displayInfo());
IItem obj = null;
while (g.getInventory().itemList.size() > 0){
obj = g.getInventory().itemList.get(0).findItem(0);
g.getInventory().removeItem(obj);
g.getAtRoom().getItemList().addItem(obj);
}
g.getAtRoom().informRoomExceptGroup(g, buf.toString());
}
}
public static void createLootingItem(Group g){
for (CharList cList : g.list){
for (ICharacter c : cList.charList)
c.looting();
}
}
public static IContainer checkIsContainer(Group g, ItemList list, String target){
IItem objContainer = list.findItem(target);
if (objContainer != null) {
if (objContainer instanceof IContainer){
return (IContainer) objContainer;
} else
CommandServer.informGroup(g, "���˪F��ä��O�e����!\n");
} else
CommandServer.informGroup(g, "�o�̨S���A���w���e���C\n");
return null;
}
public static String showContainerStatus(IContainer c){
switch (c.getStatus()){
case CLOSED: case LOCKED:
return "��";
case OPENED:
return "�}";
}
return null;
}
public static IEquipment findEquipByName(Group g, String name){
for (CharList cList : g.list){
for (ICharacter c : cList.charList){
for (Entry<EquipType, IEquipment> entry : c.getEquipment().entrySet()){
if (Search.searchName(entry.getValue().getEngName(), name))
return entry.getValue();
}
}
}
return null;
}
}