bool NDPlayer::DirectSwitch(int iSwitchCellX, int iSwitchCellY, int iPassIndex) { if (!CanSwitch(iSwitchCellX, iSwitchCellY)) { return false; } AutoPathTipObj.Stop(); this->stopMoving(); ScriptGlobalEvent::OnEvent(GE_SWITCH, iPassIndex); /* NDTransData SEND_DATA; SEND_DATA.WriteShort(_MSG_POSITION); SEND_DATA.WriteInt(m_id); SEND_DATA.WriteShort(iSwitchCellX); SEND_DATA.WriteShort(iSwitchCellY); SEND_DATA.WriteInt(iPassIndex); SEND_DATA.WriteInt(_POSITION_MAPCHANGE); NDDataTransThread::DefaultThread()->GetSocket()->Send(& SEND_DATA); isLoadingMap = true; NDDirector::DefaultDirector()->PushScene(GameSceneLoading::Scene()); this->stopMoving(); */ return true; }
Opt<Item> InventoryComponent::SetSelectedItem( ItemType::Type type, int32_t Id, bool force /*= false */ ) { auto selectedItem(mItems[type].GetSelectedItem()); if (force || !selectedItem.IsValid() || selectedItem->CanSwitch()) { if (selectedItem.IsValid()) { selectedItem->Deselected(); } selectedItem = mItems[type].SetSelectedItem(Id); if (selectedItem.IsValid()) { selectedItem->Selected(); } } return selectedItem; }
void BPMiniGame_JewelFlip::SwapGems(BPMiniGame_JewelFlip_Jewel* gem1, BPMiniGame_JewelFlip_Jewel* gem2) { if (!CanSwitch(gem1, gem2)) return; TheGame->PlaySound("slide"); SelectedGem = NULL; gem1->DestX = gem2->X; gem1->DestY = gem2->Y; gem2->DestX = gem1->X; gem2->DestY = gem1->Y; if (gem1->DestX < gem1->X || gem1->DestY < gem1->Y) { gem1->Speed = -1; } else { gem1->Speed = 1; } if (gem2->DestX < gem2->X || gem2->DestY < gem2->Y) { gem2->Speed = -1; } else { gem2->Speed = 1; } // we need to swap positions in the Gems array, otherwise CanSwap() won't work int Gem1Pos = Gems.IndexOf(gem1); int Gem2Pos = Gems.IndexOf(gem2); // remove and insert the higher-positioned gem first if (Gem1Pos > Gem2Pos) { Gems.RemoveAt(Gem1Pos); Gems.RemoveAt(Gem2Pos); Gems.Insert(Gem2Pos, gem1); Gems.Insert(Gem1Pos, gem2); } else { Gems.RemoveAt(Gem2Pos); Gems.RemoveAt(Gem1Pos); Gems.Insert(Gem1Pos, gem2); Gems.Insert(Gem2Pos, gem1); } }