//归属 public virtual void SetTypeOwner(ITEM_OWNER owner) { m_typeOwner = owner; }
void NotifyPacketDrag(string sName, string tName) { int srcIndex = Convert.ToInt32(sName.Substring(1, sName.Length - 1)) - 1; int tarIndex = Convert.ToInt32(tName.Substring(1, tName.Length - 1)) - 1; ITEM_OWNER nTypeOwner = ItemImpl.TypeOwner; switch (nTypeOwner) { //Package -> Package case ITEM_OWNER.IO_MYSELF_PACKET: { //同一格 if (srcIndex == tarIndex) { break; } //不同格 CGPackage_SwapItem msg = new CGPackage_SwapItem(); msg.PIndex1 = (byte)srcIndex; msg.PIndex2 = (byte)tarIndex; NetManager.GetNetManager().SendPacket(msg); } break; case ITEM_OWNER.IO_PET_EQUIPT: { // 发送卸下宠物装备消息. CObject_Item_Equip curEquipt = ItemImpl as CObject_Item_Equip; if (GameProcedure.s_pUISystem != null && UISystem.Instance.IsWindowShow("RoleTipWindow") && curEquipt != null) { GameObject roleTip = UIWindowMng.Instance.GetWindowGo("RoleTipWindow"); UISelfEquip selfEquip = roleTip.GetComponent <UISelfEquip>(); SDATA_PET curPet = CDataPool.Instance.Pet_GetValidPet(selfEquip.ActivePet); //CDataPool.Instance.Pet_GetPet(selfEquip.ActivePet); if (curPet != null) { CGOperatePetEquip msg = new CGOperatePetEquip(); msg.OperatorType = 1; msg.GUID = curPet.GUID; msg.DestBagIndex = (byte)curEquipt.GetItemType(); msg.SourecBagIndex = (byte)tarIndex; NetManager.GetNetManager().SendPacket(msg); } } } break; default: break; } // switch(nTypeOwner) // { // //jiaoyikuang->Package // case tObject_Item::IO_MYEXBOX: // { // //发送拖动物品的消息 // CGExchangeSynchItemII msg; // msg.SetOpt(EXCHANGE_MSG::OPT_REMOVEITEM); // msg.SetFromIndex(this->GetPosIndex()); // msg.SetToType(EXCHANGE_MSG::POS_BAG); // msg.SetToIndex(nTargetIndex); // CNetManager::GetMe()->SendPacket(&msg); // } // break; // //Bank -> Package // case tObject_Item::IO_MYSELF_BANK: // { // CGBankRemoveItem msg; // msg.SetToType(CGBankRemoveItem::BAG_POS); // msg.SetIndexFrom(this->GetPosIndex()); // msg.SetIndexTo(nTargetIndex); // // CNetManager::GetMe()->SendPacket(&msg); // } // break; // //Package -> Package // case tObject_Item::IO_MYSELF_PACKET: // { // //同一格 // if(this->GetPosIndex() == nTargetIndex) break; // // //不同格 // CGPackage_SwapItem msg; // msg.SetPackageIndex1(GetPosIndex()); // msg.SetPackageIndex2(nTargetIndex); // // CNetManager::GetMe()->SendPacket(&msg); // } // break; // //SelfEquip -> package // case tObject_Item::IO_MYSELF_EQUIP: // { // //发送卸下装备的消息 // CGUnEquip msg; // msg.setEquipPoint(this->GetPosIndex()); // msg.setBagIndex((BYTE)nTargetIndex); // // CNetManager::GetMe()->SendPacket(&msg); // break; // } // //playerShop -> package // case tObject_Item::IO_PS_SELFBOX: // { // _ITEM_GUID Guid; // tObject_Item::ITEM_GUID temp; // temp.m_idUnion = 0; // // tObject_Item* pSelectItem = this->GetItemImpl(); // if(NULL == pSelectItem) // { // return; // } // // //需要先判定这个物品是否满足移动的条件 // //查询这个物品是不是处于上架的状态 // INT nIndex = pSelectItem->GetPosIndex(); // INT nConIndex = nIndex/20; // INT nPosition = nIndex%20; // if(CDataPool::GetMe()->PlayerShop_GetItemOnSale(TRUE, nConIndex, nPosition)) // { // //已经上架,不能取回 // return; // } // // pSelectItem->GetGUID(temp.m_idOrg.m_idWorld, temp.m_idOrg.m_idServer, temp.m_idOrg.m_uSerial); // Guid.m_World = (BYTE)temp.m_idOrg.m_idWorld; // Guid.m_Server = (BYTE)temp.m_idOrg.m_idServer; // Guid.m_Serial = (INT)temp.m_idOrg.m_uSerial; // // CGItemSynch msg; // msg.SetOpt(CGItemSynch::OPT_MOVE_ITEM_MANU); // msg.SetFromType(CGItemSynch::POS_PLAYERSHOP); // msg.SetToIndex(nTargetIndex); // msg.SetToType(CGItemSynch::POS_BAG); // msg.SetItemGUID(Guid); // // INT nPage = CDataPool::GetMe()->PlayerShop_GetMySelectConTa(); // CGManuMoveItemFromPlayerShopToBag_t ExtraDataInfo; // ExtraDataInfo.m_ShopGuid = CDataPool::GetMe()->PlayerShop_GetShopID(TRUE); // ExtraDataInfo.m_nStallIndex = (BYTE)nPage; // ExtraDataInfo.m_uSerial = CDataPool::GetMe()->PlayerShop_GetItemSerial(TRUE,nPage,this->GetPosIndex()%20); // msg.SetExtraInfoLength(ExtraDataInfo.GetSize()); // msg.SetExtraInfoData((BYTE*)&ExtraDataInfo); // // CNetManager::GetMe()->SendPacket(&msg); // } // break; // default: // break; // } }
private void DestoryItem(string szSourceName) { char cSourceType = szSourceName[0]; switch (cSourceType) { case 'M': //主菜单 { int nIndex = int.Parse(szSourceName.Substring(1)); CActionSystem.Instance.MainMenuBar_Set(nIndex, -1); return; } default: break; } ITEM_OWNER itemOwner = ItemImpl.TypeOwner; if (itemOwner == ITEM_OWNER.IO_MYSELF_PACKET || itemOwner == ITEM_OWNER.IO_MYSELF_BANK) { if (itemOwner == ITEM_OWNER.IO_MYSELF_PACKET && ItemImpl.GetItemClass() == ITEM_CLASS.ICLASS_TASKITEM) { CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "任务道具不能丢弃"); } else { // 先取消可能存在的锁定 int nTypeOwner = CDataPool.Instance.DisCard_GetItemConta(); int nItemPos = CDataPool.Instance.DisCard_GetItemPos(); switch ((ITEM_OWNER)nTypeOwner) { case ITEM_OWNER.IO_MYSELF_PACKET: // 来自玩家的背包 { CObject_Item pItem = CDataPool.Instance.UserBag_GetItem(nItemPos); if (pItem != null) { pItem.SetLock(false); } } break; case ITEM_OWNER.IO_MYSELF_EQUIP: // 来自玩家身上的装备 { CObject_Item pItem = CDataPool.Instance.UserEquip_GetItem((HUMAN_EQUIP)nItemPos); if (pItem != null) { pItem.SetLock(false); } } break; case ITEM_OWNER.IO_MYSELF_BANK: // 玩家的银行 { CObject_Item pItem = CDataPool.Instance.UserBank_GetItem(nItemPos); if (pItem != null) { pItem.SetLock(false); } } break; default: break; } // 需要先询问是否销毁这个装备 CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_OPEN_DISCARD_ITEM_FRAME, ItemImpl.GetName()); // 锁定这个物品 ItemImpl.SetLock(true); //通知背包锁定状态 CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_PACKAGE_ITEM_CHANGED); CDataPool.Instance.DisCard_SetItemConta((int)ItemImpl.TypeOwner); CDataPool.Instance.DisCard_SetItemPos(GetPosIndex()); } } }
////////////////////////////////////////////////////////////////////////// // 所有标记 [7/14/2011 ivan edit] // case 'S': //摆摊界面 // case 'Q': //任务提交界面(MissionReply) // case 'B': //银行 // case 'P': //背包 // case 'E': //交易界面,只能拖动到自己的(右边的)格子里头(1~6) // case 'R': //银行的界面上的租赁箱格子 // case 'G': //宝石合成/镶嵌界面 // case 'C': //装备打孔 [7/14/2011 ivan edit] // case 'T': //宠物技能学习/还童/延长寿命/宠物驯养/宠物征友 // case 'Z': //人物装备界面 // case 'A': //玩家商店 // case 'M': //主菜单 // case 'Y': //对象头像 // case 'L': //自己头像 // case 'I': // 装备强化 [7/18/2011 ivan edit] // case 'E': // 宠物装备 ////////////////////////////////////////////////////////////////////////// public override void NotifyDragDropDragged(bool bDestory, string szTargetName, string szSourceName) { //LogManager.LogWarning("Drag From:" + szSourceName + " to:" + szTargetName); //拖动到表示销毁的地方 if (bDestory) { DestoryItem(szSourceName); return; } //拖动到空白地方 if (szTargetName == "") { return; } char cSourceName = szSourceName[0]; char cTargetType = szTargetName[0]; //如果是快捷栏,不能往其他地方拖,除了自己本身。 if (cSourceName == 'M' && cTargetType != 'M') { return; } switch (cTargetType) { case 'P': NotifyPacketDrag(szSourceName, szTargetName); break; case 'E': { ITEM_OWNER typeOwner = ItemImpl.TypeOwner; switch (typeOwner) { case ITEM_OWNER.IO_MYSELF_PACKET: { // 发送装备宠物装备消息. CObject_Item_Equip curEquipt = ItemImpl as CObject_Item_Equip; if (GameProcedure.s_pUISystem != null && UISystem.Instance.IsWindowShow("RoleTipWindow") && curEquipt != null) { GameObject roleTip = UIWindowMng.Instance.GetWindowGo("RoleTipWindow"); UISelfEquip selfEquip = roleTip.GetComponent <UISelfEquip>(); SDATA_PET curPet = CDataPool.Instance.Pet_GetValidPet(selfEquip.ActivePet); //CDataPool.Instance.Pet_GetPet(selfEquip.ActivePet); int tarIndex = Convert.ToInt32(szTargetName.Substring(1, szTargetName.Length - 1)) - 1; if ((int)curEquipt.GetItemType() != tarIndex) { CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "该装备不能装备到目标位置"); } else if (!curEquipt.IsPetEquipt()) { CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "该装备不能装备到宠物上"); } else if (curPet != null && curEquipt != null) { CGOperatePetEquip msg = new CGOperatePetEquip(); msg.OperatorType = 0; msg.GUID = curPet.GUID; msg.DestBagIndex = (byte)curEquipt.GetItemType(); msg.SourecBagIndex = (byte)GetPosIndex(); NetManager.GetNetManager().SendPacket(msg); } } } break; } } break; case 'B': //bank { int tarIndex = Convert.ToInt32(szTargetName.Substring(1, szTargetName.Length - 1)) - 1; if (!CDataPool.Instance.UserBank_IsValid(tarIndex)) { CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "格子未解封"); return; } //根据物品的来源决定发送什么消息 ITEM_OWNER typeOwner = ItemImpl.TypeOwner; //任务物品不能放入银行 if (ItemImpl.GetItemClass() == ITEM_CLASS.ICLASS_TASKITEM) { CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "任务物品不能放入"); return; } switch (typeOwner) { case ITEM_OWNER.IO_MYSELF_PACKET: //来自玩家的背包 { CGBankAddItem msg = new CGBankAddItem(); msg.FromType = (byte)(CGBankAddItem.AddType.BAG_POS); msg.IndexFrom = (byte)GetPosIndex(); msg.IndexTo = (byte)tarIndex; NetManager.GetNetManager().SendPacket(msg); } break; case ITEM_OWNER.IO_MYSELF_BANK: //来自银行内部 { CGBankSwapItem msg = new CGBankSwapItem(); msg.FromType = (byte)CGBankSwapItem.AddType.BANK_POS; msg.IndexFrom = (byte)GetPosIndex(); msg.IndexTo = (byte)tarIndex; msg.ToType = (byte)(CGBankSwapItem.AddType.BANK_POS); if (msg.IndexFrom == msg.IndexTo) { break; } NetManager.GetNetManager().SendPacket(msg); } break; default: break; } } break; } //switch(cSourceName) //{ //case 'M': // { // INT nIndex = szSourceName[1]-'0'; // nIndex = szSourceName[2]-'0' + nIndex*10 ; // CActionSystem::GetMe()->MainMenuBar_Set(nIndex, nOldTargetId); // } // break; //default: // break; //} //CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_SUPERTOOLTIP); }