Пример #1
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 );
}
Пример #2
0
void CFlashUIFromArrayNode::ProcessEvent( EFlowEvent event,SActivationInfo* pActInfo )
{
	if (event == eFE_Activate && IsPortActive( pActInfo, eI_Array ))
	{
		SUIArguments args( GetPortString( pActInfo, eI_Array ).c_str());
		ActivateOutput( pActInfo, eO_Count, args.GetArgCount());

		SUIArguments leftOver;
		int          port = eO_Val1;

		for (int i = 0; i < args.GetArgCount(); ++i)
		{
			string arg;
			args.GetArg( i, arg );
			if (port + i < eO_LeftOver)
			{
				ActivateOutput( pActInfo, port + i, arg );
			}
			else
			{
				leftOver.AddArgument( arg );
			}
		}
		if (leftOver.GetArgCount() > 0)
		{
			ActivateOutput( pActInfo, eO_LeftOver, string( leftOver.GetAsString()));
		}
	}
}
Пример #3
0
//------------------------------------------------------------------------
bool SUIToLuaConversationHelper::UIArgsToLuaTable(const SUIArguments &args, SmartScriptTable table)
{
	bool res = true;
	for (int i = 0; i < args.GetArgCount(); ++i)
	{
		switch (args.GetArgType(i))
		{
		case eUIDT_Bool:
			SUIConvHelperTmpl::ArgToLuaTable<bool>(args, table, i);
			break;
		case eUIDT_Int:
			SUIConvHelperTmpl::ArgToLuaTable<int>(args, table, i);
			break;
		case eUIDT_Float:
			SUIConvHelperTmpl::ArgToLuaTable<float>(args, table, i);
			break;
		case eUIDT_EntityId:
			SUIConvHelperTmpl::ArgToLuaTable<EntityId>(args, table, i);
			break;
		case eUIDT_Vec3:
			SUIConvHelperTmpl::ArgToLuaTable<Vec3>(args, table, i);
			break;
		case eUIDT_String:
		case eUIDT_WString:
			SUIConvHelperTmpl::ArgToLuaTable<string>(args, table, i);
			break;
		case eUIDT_Any:
			{
				bool ok = SUIConvHelperTmpl::TryArgToLuaTable<int>(args, table, i)
					|| SUIConvHelperTmpl::TryArgToLuaTable<float>(args, table, i)
					|| SUIConvHelperTmpl::TryArgToLuaTable<string>(args, table, i);
				res &= ok;
			}
		default:
			res = false;
		}
	}
	return res;
}