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
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);
			}
		}
	
	}
}