예제 #1
0
파일: NDPlayer.cpp 프로젝트: chaosren/HHHH
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;
}
예제 #2
0
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;
}
예제 #3
0
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);
	}
}