00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 package com.realtime.crossfire.jxclient.items;
00023
00024 import com.realtime.crossfire.jxclient.faces.FacesManager;
00025 import com.realtime.crossfire.jxclient.guistate.ClientSocketState;
00026 import com.realtime.crossfire.jxclient.guistate.GuiStateListener;
00027 import com.realtime.crossfire.jxclient.guistate.GuiStateManager;
00028 import com.realtime.crossfire.jxclient.server.crossfire.messages.UpdItem;
00029 import com.realtime.crossfire.jxclient.skills.SkillSet;
00030 import com.realtime.crossfire.jxclient.stats.Stats;
00031 import org.jetbrains.annotations.NotNull;
00032
00039 public class ItemsManager {
00040
00044 @NotNull
00045 private final FacesManager facesManager;
00046
00050 @NotNull
00051 private final Stats stats;
00052
00056 @NotNull
00057 private final SkillSet skillSet;
00058
00062 @NotNull
00063 private final ItemSet itemSet;
00064
00069 @NotNull
00070 private final GuiStateListener guiStateListener = new GuiStateListener() {
00071
00072 @Override
00073 public void start() {
00074 itemSet.reset();
00075 }
00076
00077 @Override
00078 public void metaserver() {
00079 itemSet.reset();
00080 }
00081
00082 @Override
00083 public void preConnecting(@NotNull final String serverInfo) {
00084
00085 }
00086
00087 @Override
00088 public void connecting(@NotNull final String serverInfo) {
00089 itemSet.reset();
00090 }
00091
00092 @Override
00093 public void connecting(@NotNull final ClientSocketState clientSocketState) {
00094
00095 }
00096
00097 @Override
00098 public void connected() {
00099
00100 }
00101
00102 @Override
00103 public void connectFailed(@NotNull final String reason) {
00104
00105 }
00106
00107 };
00108
00117 public ItemsManager(@NotNull final FacesManager facesManager, @NotNull final Stats stats, @NotNull final SkillSet skillSet, @NotNull final GuiStateManager guiStateManager, @NotNull final ItemSet itemSet) {
00118 this.facesManager = facesManager;
00119 this.stats = stats;
00120 this.skillSet = skillSet;
00121 this.itemSet = itemSet;
00122 guiStateManager.addGuiStateListener(guiStateListener);
00123 }
00124
00129 public void delinvReceived(final int tag) {
00130 itemSet.cleanInventory(tag);
00131 }
00132
00137 public void delitemReceived(@NotNull final int[] tags) {
00138 itemSet.removeItems(tags);
00139 }
00140
00155 public void addItemReceived(final int location, final int tag, final int flags, final int weight, final int faceNum, @NotNull final String name, @NotNull final String namePl, final int anim, final int animSpeed, final int nrof, final int type) {
00156 itemSet.addItem(new CfItem(location, tag, flags, weight, facesManager.getFace(faceNum), name, namePl, anim, animSpeed, nrof, type));
00157 }
00158
00166 public void playerReceived(final int tag, final int weight, final int faceNum, @NotNull final String name) {
00167 stats.setActiveSkill("");
00168 skillSet.clearNumberedSkills();
00169 itemSet.setPlayer(new CfPlayer(tag, weight, facesManager.getFace(faceNum), name));
00170 stats.setStat(Stats.C_STAT_WEIGHT, weight);
00171 }
00172
00187 public void upditemReceived(final int flags, final int tag, final int valLocation, final int valFlags, final int valWeight, final int valFaceNum, @NotNull final String valName, @NotNull final String valNamePl, final int valAnim, final int valAnimSpeed, final int valNrof) {
00188 itemSet.updateItem(flags, tag, valLocation, valFlags, valWeight, facesManager.getFace(valFaceNum), valName, valNamePl, valAnim, valAnimSpeed, valNrof);
00189 if ((flags&UpdItem.UPD_WEIGHT) != 0) {
00190 final CfItem player = itemSet.getPlayer();
00191 if (player != null && player.getTag() == tag) {
00192 stats.setStat(Stats.C_STAT_WEIGHT, valWeight);
00193 }
00194 }
00195 }
00196
00197 }