void CDevMode::OnGameplayCommand(const char* cmd)
{
	SUIArguments args;
	args.SetDelimiter(":");
	args.SetArguments(cmd);

	string action;
	args.GetArg(0, action);
	if (action == "GotoTagPoint")
	{
		int tagpoint;
		args.GetArg(1, tagpoint);
		if (tagpoint >= 0 && tagpoint <= 11)
			GotoTagPoint(tagpoint);
	}
	else if (action == "SetViewMode" && gEnv->pGame && gEnv->pGame->GetIGameFramework())
	{
		int mode;
		args.GetArg(1, mode);
		IActor* pPlayer = gEnv->pGame->GetIGameFramework()->GetClientActor();
		static ICVar* pCamVar = gEnv->pConsole->GetCVar("cl_cam_orbit");
		if (pPlayer && pCamVar)
		{
			switch (mode)
			{
			case 0:
				pCamVar->Set(0);
				if (pPlayer->IsThirdPerson())
					pPlayer->ToggleThirdPerson();
				break;
			case 1:
				pCamVar->Set(0);
				if (!pPlayer->IsThirdPerson())
					pPlayer->ToggleThirdPerson();
				break;
			case 2:
				pCamVar->Set(1);
				break;
			}
		}
	}
	else if (action == "SetFlyMode" && gEnv->pGame && gEnv->pGame->GetIGameFramework())
	{
		int mode;
		args.GetArg(1, mode);
		IActor* pPlayer = gEnv->pGame->GetIGameFramework()->GetClientActor();
		if (pPlayer && mode >= 0 && mode < 3)
			pPlayer->SetFlyMode(mode);
	}
}
コード例 #2
0
//------------------------------------------------------------------------
int CScriptBind_UIAction::GetArray( IFunctionHandler *pH, const char * elementName, int instanceID, const char* arrayName )
{
	IUIElement* pElement = GetElement( elementName, instanceID );
	if ( pElement )
	{
		const SUIParameterDesc* pArrayDesc = pElement->GetArrayDesc( arrayName );
		SUIArguments vals;
		if ( pArrayDesc && pElement->GetArray( pArrayDesc, vals ) )
		{
			SmartScriptTable res(m_pSS);
			string val;
			for (int i = 0; i < vals.GetArgCount(); ++i)
			{
				vals.GetArg(i).GetValueWithConversion(val);
				res->SetAt( i+1, val.c_str() );
			}
			return pH->EndFunction( res );
		}
		UIACTION_WARNING( "LUA: Element %s has no array %s", elementName, arrayName );
	}
	else
	{
		UIACTION_WARNING( "LUA: UIElement %s does not exist", elementName );
	}
	return pH->EndFunction( false );
}
コード例 #3
0
	bool TryArgToLuaTable(const SUIArguments &args, SmartScriptTable table, int idx)
	{
		T val;
		if (args.GetArg(idx, val))
		{
			SetTableVal<T>(val, table, idx);
			return true;
		}
		return false;
	}
コード例 #4
0
	// IUIElementEventListener
	virtual void OnUIEvent( IUIElement* pSender, const SUIEventDesc& event, const SUIArguments& args )
	{
		assert(pSender == m_pElement);

		if ( strcmp(event.sDisplayName, "OnPlay") == 0)
		{
			ActivateOutput(&m_ActInfo, eO_OnPlay, true);
		}
		else if ( strcmp(event.sDisplayName, "OnPause") == 0)
		{
			ActivateOutput(&m_ActInfo, eO_OnPause, true);
		}
		else if ( strcmp(event.sDisplayName, "OnResume") == 0)
		{
			ActivateOutput(&m_ActInfo, eO_OnResume, true);
		}
		else if ( strcmp(event.sDisplayName, "OnStop") == 0)
		{
			if (m_bPlaying)
			{
				m_bPlaying = false;
				UnloadPlayerNextFrame();

				bool bFinished;
				args.GetArg(0, bFinished);
				ActivateOutput(&m_ActInfo, eO_OnStop, bFinished);
			}
		}
		else if ( strcmp(event.sDisplayName, "OnLooped") == 0)
		{
			ActivateOutput(&m_ActInfo, eO_OnLooped, true);
		}
		else if ( strcmp(event.sDisplayName, "OnFileNotFound") == 0)
		{
			m_bPlaying = false;
			UnloadPlayerNextFrame();
			ActivateOutput(&m_ActInfo, eO_OnStop, false);
			ActivateOutput(&m_ActInfo, eO_OnVideoNotFound, true);
		}
	}
コード例 #5
0
ファイル: HUDInventory.cpp プロジェクト: aronarts/FireNET
void CHUDInventory::HandleFSCommand(const char *strCommand,const char *strArgs, void* pUserData)
{
	if(!strcmp(strCommand,"itemPressed"))
	{
		EntityId id = static_cast<EntityId>(atoi(strArgs));

		if(id>=1)
		{
			CActor *pActor=static_cast<CActor *>(gEnv->pGame->GetIGameFramework()->GetClientActor());

			if(IItem *pItem = gEnv->pGame->GetIGameFramework()->GetIItemSystem()->GetItem(id))
			{
				if (pItem->CanSelect())
				{
					CItem *pItemii = static_cast<CItem*>(gEnv->pGame->GetIGameFramework()->GetIItemSystem()->GetItem(id));
					if(!pItemii->IsSelected())
					{
						pActor->SelectItem(id,true,true);
					}
				}
			}
		}
	}

	if(!strcmp(strCommand,"slotChanged"))
	{
		SUIArguments args;
		args.SetDelimiter(",");
		args.SetArguments(strArgs);

		int oldSlotID;
		int slotID;
		int itemID;

		args.GetArg(0, oldSlotID);
		args.GetArg(1, slotID);
		args.GetArg(2, itemID);

		for(int i = 0; i<inventoryItems.size(); i++)
		{
			if(inventoryItems[i].itemID == itemID)
			{
				//CryLog("ID find in items, changing slotID....");
				inventoryItems[i].slotID = slotID;
			}
		}	
	}

	if(!strcmp(strCommand,"dropItem"))
	{
		EntityId itemID = static_cast<EntityId>(atoi(strArgs));
		CItem *curItem = static_cast<CItem*>(gEnv->pGame->GetIGameFramework()->GetIItemSystem()->GetItem(itemID));
		curItem->Drop(1.f,false,false);
		//CryLog("Drop item = %d", itemID);

		for(int i = 0; i<inventoryItems.size(); i++)
		{
			if(inventoryItems[i].itemID == itemID)
			{
				SFlashVarValue args[1] = {inventoryItems[i].slotID};
				IUIElement* pElement = gEnv->pFlashUI->GetUIElement("Inventory");
				pElement->GetFlashPlayer()->Invoke("removeInventoryItem", args, 1);
			}
		}
	
	}
}