123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611 |
- class PluginConfigScene extends PluginConfigHandler
- {
- protected string FILE_ROOT = "$saves:";
- protected const string FILE_ROOT_SCENES = "scenes";
-
- protected const string PARAM_MISSION = "Mission";
- protected const string PARAM_TIME = "InitTime";
- protected const string PARAM_YEAR = "InitYear";
- protected const string PARAM_MONTH = "InitMonth";
- protected const string PARAM_DAY = "InitDay";
- protected const string PARAM_HOUR = "InitHour";
- protected const string PARAM_MINUTE = "InitMinute";
- protected const string PARAM_OVERCAST = "WeatherInitOvercast";
- protected const string PARAM_RAIN = "WeatherInitRain";
- protected const string PARAM_FOG = "WeatherInitFog";
- protected const string PARAM_WIND_F = "WeatherInitWindForce";
- protected const string PARAM_PLAYER = "Player";
- protected const string PARAM_OBJ_COUNT = "SceneObjectsCount";
- protected const string PARAM_OBJ_NAME = "SceneObject";
- protected const string PARAM_OBJ_ATT = "Att";
- protected const string PARAM_OBJ_LNK = "Lnk";
- protected const string PARAM_OBJ_TYPE = "type";
- protected const string PARAM_OBJ_POS = "position";
- protected const string PARAM_OBJ_ROT = "rotation";
- protected const string PARAM_OBJ_DMG = "damage";
- protected const string PARAM_OBJ_HLT = "health";
- protected const string PARAM_OBJ_ISCR = "init_script";
-
- TStringArray m_CfgTemplate;
-
- protected string m_FileSceneName;
- //========================================
- // OnInit
- //========================================
- override void OnInit()
- {
- //super.OnInit();
-
- FILE_ROOT = g_Game.GetMissionFolderPath();
- }
-
- //========================================
- // GetPathScenes
- //========================================
- string GetPathScenes()
- {
- return FILE_ROOT+"\\"+FILE_ROOT_SCENES;
- }
- //========================================
- // GetFileName
- //========================================
- override string GetFileName()
- {
- return GetPathScenes()+"\\"+m_FileSceneName;
- }
- //========================================
- // SceneRename
- //========================================
- void SceneRename(string scene_name, string scene_name_new)
- {
- string file_path = GetPathScenes()+"\\"+scene_name+"."+PluginSceneManager.SCENE_SUFIX;
- string file_path_new = GetPathScenes()+"\\"+scene_name_new+"."+PluginSceneManager.SCENE_SUFIX;
- PluginFileHandler.FileRename(file_path, file_path_new);
- }
- //========================================
- // SceneDelete
- //========================================
- void SceneDelete(string scene_name)
- {
- string file_path = GetPathScenes()+"\\"+scene_name+"."+PluginSceneManager.SCENE_SUFIX;
- PluginFileHandler.FileDelete(file_path);
- }
- //========================================
- // SceneDuplicate
- //========================================
- void SceneDuplicate(string scene_name)
- {
- string file_path = GetPathScenes()+"\\"+scene_name+"."+PluginSceneManager.SCENE_SUFIX;
- string file_path_new = file_path;
-
- int i = 0;
- while ( FileExist(file_path_new) )
- {
- file_path_new = GetPathScenes()+"\\"+scene_name+"_copy"+i.ToString()+"."+PluginSceneManager.SCENE_SUFIX;
- i++;
- }
-
- PluginFileHandler.FileDuplicate(file_path, file_path_new);
- }
- //========================================
- // GetSceneList
- //========================================
- TStringArray GetSceneList()
- {
- if ( !FileExist( GetPathScenes() ) )
- {
- MakeDirectory( GetPathScenes() );
- }
-
- string file_name;
- int file_attr;
- int flags;
- TStringArray list = new TStringArray;
-
- string path_find_pattern = GetPathScenes()+"/*."+PluginSceneManager.SCENE_SUFIX; //*/
- FindFileHandle file_handler = FindFile(path_find_pattern, file_name, file_attr, flags);
-
- bool found = true;
- while ( found )
- {
- int pos = file_name.IndexOf(".");
-
- if ( pos > -1 )
- {
- list.Insert( file_name.Substring(0, pos) );
- }
-
- found = FindNextFile(file_handler, file_name, file_attr);
- }
-
- return list;
- }
- //========================================
- // EncodeInitScript
- //========================================
- string EncodeInitScript( string script )
- {
- script.Replace( "\"", "^" );
- script.Replace( "\n", "$" );
- return script;
- }
- //========================================
- // DecodeInitScript
- //========================================
- string DecodeInitScript( string script )
- {
- script.Replace( "^", "\"" );
- script.Replace( "$", "\n" );
- return script;
- }
- //=====================================================================================
- //=====================================================================================
- // SAVE SCENE
- //=====================================================================================
- //=====================================================================================
-
- //========================================
- // SceneSave
- //========================================
- void SceneDataSave(SceneData scene)
- {
- PluginSceneManager module_scene_editor = PluginSceneManager.Cast( GetPlugin(PluginSceneManager) );
-
- EntityAI player = PluginSceneManager.PLAYER;
-
- // Log("Saving started....")
- m_FileSceneName = scene.GetNameScene()+"."+PluginSceneManager.SCENE_SUFIX;
-
- // Save Settings
- SaveSceneSettings(scene);
-
- // Save Weater
- SaveSceneWeather(scene);
-
- // Save Players
- SaveScenePlayer(scene);
-
- // Save Objects
- SaveSceneObjects(scene);
-
- // Save To File
- SaveConfigToFile();
- }
-
-
- //=============================================
- // SAVE: SaveSceneSettings (Mission Name, Time, Year, Month, Day, Hour, Minute)
- //=============================================
- void SaveSceneSettings(SceneData scene)
- {
- // Save Mission Name
- CfgParamString cfg_mission = CfgParamString.Cast( GetParamByName(PARAM_MISSION, CFG_TYPE_STRING) );
- cfg_mission.SetValue(scene.GetNameMission());
-
- // Save Time
- CfgParamFloat cfg_time = CfgParamFloat.Cast( GetParamByName(PARAM_TIME, CFG_TYPE_FLOAT) );
- cfg_time.SetValue(scene.GetInitTime());
-
- // Save Year
- CfgParamInt cfg_year = CfgParamInt.Cast( GetParamByName(PARAM_YEAR, CFG_TYPE_INT) );
- cfg_year.SetValue(scene.GetInitYear());
-
- // Save Month
- CfgParamInt cfg_month = CfgParamInt.Cast( GetParamByName(PARAM_MONTH, CFG_TYPE_INT) );
- cfg_month.SetValue(scene.GetInitMonth());
-
- // Save Day
- CfgParamInt cfg_day = CfgParamInt.Cast( GetParamByName(PARAM_DAY, CFG_TYPE_INT) );
- cfg_day.SetValue(scene.GetInitDay());
-
- // Save Hour
- CfgParamInt cfg_hour = CfgParamInt.Cast( GetParamByName(PARAM_HOUR, CFG_TYPE_INT) );
- cfg_hour.SetValue(scene.GetInitHour());
-
- // Save Minute
- CfgParamInt cfg_minute = CfgParamInt.Cast( GetParamByName(PARAM_MINUTE, CFG_TYPE_INT) );
- cfg_minute.SetValue(scene.GetInitMinute());
- }
-
- //=============================================
- // SAVE: SaveSceneWeather (Overcast, Rain, Fog, Wind Force)
- //=============================================
- void SaveSceneWeather(SceneData scene)
- {
- // Save Weather Overcast
- CfgParamFloat cfg_overcast = CfgParamFloat.Cast( GetParamByName(PARAM_OVERCAST, CFG_TYPE_FLOAT) );
- cfg_overcast.SetValue(scene.GetInitOvercast());
-
- // Save Weather Rain
- CfgParamFloat cfg_rain = CfgParamFloat.Cast( GetParamByName(PARAM_RAIN, CFG_TYPE_FLOAT) );
- cfg_rain.SetValue(scene.GetInitRain());
-
- // Save Weather Fog
- CfgParamFloat cfg_fog = CfgParamFloat.Cast( GetParamByName(PARAM_FOG, CFG_TYPE_FLOAT) );
- cfg_fog.SetValue(scene.GetInitFog());
-
- // Save Weather Wind Force
- CfgParamFloat cfg_wind_force = CfgParamFloat.Cast( GetParamByName(PARAM_WIND_F, CFG_TYPE_FLOAT) );
- cfg_wind_force.SetValue(scene.GetInitWindForce());
- }
-
- //=============================================
- // SAVE: SaveScenePlayer (position, rotation, health, script)
- //=============================================
- void SaveScenePlayer(SceneData scene)
- {
- array<ref ScenePlayer> players = scene.GetScenePlayers();
-
- if ( players.Count() > 0 )
- {
- ScenePlayer plyr = players.Get(0);
-
- // Save Player
- CfgParamArray cfg_param_player = CfgParamArray.Cast( GetParamByName(PARAM_PLAYER, CFG_TYPE_ARRAY) );
-
- // Obj Position
- CfgParamString cfg_param_player_pos = CfgParamString.Cast( cfg_param_player.GetValueByName(PARAM_OBJ_POS, CFG_TYPE_STRING) );
- cfg_param_player_pos.SetValue(plyr.GetPositionAsString());
-
- // Obj Rotation
- CfgParamFloat cfg_param_player_rot = CfgParamFloat.Cast( cfg_param_player.GetValueByName(PARAM_OBJ_ROT, CFG_TYPE_FLOAT) );
- cfg_param_player_rot.SetValue(plyr.GetRotation());
-
- // Obj Health
- CfgParamFloat cfg_param_player_hlt = CfgParamFloat.Cast( cfg_param_player.GetValueByName(PARAM_OBJ_HLT, CFG_TYPE_FLOAT) );
- cfg_param_player_hlt.SetValue(plyr.GetHealth());
-
- // Obj Init Script
- CfgParamString cfg_param_player_iscr = CfgParamString.Cast( cfg_param_player.GetValueByName(PARAM_OBJ_ISCR, CFG_TYPE_STRING) );
- cfg_param_player_iscr.SetValue( EncodeInitScript(plyr.GetInitScript()) );
- }
- }
-
- //=============================================
- // SAVE: SaveSceneObjects (position, rotation, health, script, scripted links)
- //=============================================
- void SaveSceneObjects(SceneData scene)
- {
- array<ref SceneObject> objects = scene.GetSceneObjects();
-
- // Save Objects
- for ( int i = 0; i < objects.Count(); ++i )
- {
- SceneObject obj = objects.Get(i);
-
- string param_name;
-
- param_name = PARAM_OBJ_NAME+"_"+i.ToString();
-
- // Save Scene Object
- CfgParamArray cfg_param_obj = CfgParamArray.Cast( GetParamByName(param_name, CFG_TYPE_ARRAY) );
-
- // Obj Type Name
- CfgParamString cfg_param_obj_type = CfgParamString.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_TYPE, CFG_TYPE_STRING) );
- cfg_param_obj_type.SetValue(obj.GetTypeName());
-
- // Obj Position
- CfgParamString cfg_param_obj_pos = CfgParamString.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_POS, CFG_TYPE_STRING) );
- cfg_param_obj_pos.SetValue(obj.GetPositionAsString());
-
- // Obj Rotation
- CfgParamFloat cfg_param_obj_rot = CfgParamFloat.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_ROT, CFG_TYPE_FLOAT) );
- cfg_param_obj_rot.SetValue(obj.GetRotation());
-
- // Obj Health
- CfgParamFloat cfg_param_obj_hlt = CfgParamFloat.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_HLT, CFG_TYPE_FLOAT) );
- cfg_param_obj_hlt.SetValue(obj.GetHealth());
-
- // Obj Init Script
- CfgParamString cfg_param_obj_iscr = CfgParamString.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_ISCR, CFG_TYPE_STRING) );
- cfg_param_obj_iscr.SetValue( EncodeInitScript(obj.GetInitScript()) );
-
- EntityAI e_obj = obj.GetObject();
- int attcount = e_obj.GetInventory().AttachmentCount();
-
- if ( attcount > 0 )
- {
- string param_name_att = param_name+"_"+PARAM_OBJ_ATT;
- CfgParamArray cfg_param_att = CfgParamArray.Cast( GetParamByName(param_name_att, CFG_TYPE_ARRAY) );
- cfg_param_att.Clear();
-
- for (int att = 0; att < attcount; att++)
- {
- EntityAI attachment = e_obj.GetInventory().GetAttachmentFromIndex(att);
-
- CfgParamString cfg_param_att_str = new CfgParamString("");
- cfg_param_att_str.SetValue( attachment.GetType() );
- cfg_param_att.InsertValue( cfg_param_att_str );
- }
- }
-
- array<SceneObject> linked_scene_objects = obj.GetLinkedSceneObjects();
- if ( linked_scene_objects.Count() > 0 )
- {
- string param_name_lnk = param_name + "_" + PARAM_OBJ_LNK;
- CfgParamArray cfg_param_lnk = CfgParamArray.Cast( GetParamByName( param_name_lnk, CFG_TYPE_ARRAY ) );
- cfg_param_lnk.Clear();
-
- for ( int lnk = 0; lnk < linked_scene_objects.Count(); lnk++ )
- {
- CfgParamInt cfg_param_lnk_int = new CfgParamInt("");
-
- int index = objects.Find( linked_scene_objects.Get(lnk) );
-
- if ( index >= 0 )
- {
- cfg_param_lnk_int.SetValue( index );
- cfg_param_lnk.InsertValue( cfg_param_lnk_int );
- }
- }
- }
- }
-
- // Save Count Of objects
- CfgParamInt cfg_obj_count = CfgParamInt.Cast( GetParamByName(PARAM_OBJ_COUNT, CFG_TYPE_INT) );
- cfg_obj_count.SetValue(objects.Count());
- }
-
- //=====================================================================================
- //=====================================================================================
- // LOAD SCENE
- //=====================================================================================
- //=====================================================================================
- //=============================================
- // LOAD: SceneDataLoad (Settings, Weather, Player, Objects)
- //=============================================
- SceneData SceneDataLoad(string scene_name)
- {
- m_FileSceneName = scene_name+"."+PluginSceneManager.SCENE_SUFIX;
-
- //PrintString("Loading scene: "+ scene_name);
-
- LoadConfigFile();
-
- // Load Scene name
- SceneData scene = new SceneData;
- scene.SetNameScene(scene_name);
-
- // Load Scene settings
- LoadSceneSettings(scene);
-
- // Load Scene Weather
- LoadSceneWeather(scene);
-
- // Load Scene Player
- LoadScenePlayer(scene);
-
- // Load Scene Objects
- LoadSceneObjects(scene);
-
- if ( !FileExist(GetFileName()) )
- {
- SceneDataSave(scene);
- }
-
- return scene;
- }
-
- //=============================================
- // LOAD: LoadSceneSettings (Mission Name, Time, Year, Month, Day, Hour, Minute)
- //=============================================
- void LoadSceneSettings(SceneData scene)
- {
- // Load Mission Name
- CfgParamString cfg_mission = CfgParamString.Cast( GetParamByName(PARAM_MISSION, CFG_TYPE_STRING) );
- scene.SetNameMission(cfg_mission.GetValue());
-
- // Load Time
- CfgParamFloat cfg_time = CfgParamFloat.Cast( GetParamByName(PARAM_TIME, CFG_TYPE_FLOAT) );
- scene.SetInitTime(cfg_time.GetValue());
-
- int year, month, day, hour, minute;
- GetGame().GetWorld().GetDate( year, month, day, hour, minute );
-
- // Load Year
- if ( ParamExist(PARAM_YEAR) )
- {
- CfgParamInt cfg_year = CfgParamInt.Cast( GetParamByName( PARAM_YEAR, CFG_TYPE_INT ) );
- scene.SetInitYear( cfg_year.GetValue() );
- }
- else
- {
- scene.SetInitYear( year );
- }
-
- // Load Month
- if ( ParamExist(PARAM_MONTH) )
- {
- CfgParamInt cfg_month = CfgParamInt.Cast( GetParamByName( PARAM_MONTH, CFG_TYPE_INT ) );
- scene.SetInitMonth( cfg_month.GetValue() );
- }
- else
- {
- scene.SetInitMonth( month );
- }
-
- // Load Day
- if ( ParamExist(PARAM_DAY) )
- {
- CfgParamInt cfg_day = CfgParamInt.Cast( GetParamByName( PARAM_DAY, CFG_TYPE_INT ) );
- scene.SetInitDay( cfg_day.GetValue() );
- }
- else
- {
- scene.SetInitDay( day );
- }
-
- // Load Hour
- if ( ParamExist(PARAM_HOUR) )
- {
- CfgParamInt cfg_hour = CfgParamInt.Cast( GetParamByName( PARAM_HOUR, CFG_TYPE_INT ) );
- scene.SetInitHour( cfg_hour.GetValue() );
- }
- else
- {
- scene.SetInitHour( hour );
- }
-
- // Load Minute
- if ( ParamExist(PARAM_MINUTE) )
- {
- CfgParamInt cfg_minute = CfgParamInt.Cast( GetParamByName( PARAM_MINUTE, CFG_TYPE_INT ) );
- scene.SetInitMinute( cfg_minute.GetValue() );
- }
- else
- {
- scene.SetInitMinute( minute );
- }
- }
-
- //=============================================
- // LOAD: LoadSceneWeather (Overcast, Rain, Fog, Wind Force)
- //=============================================
- void LoadSceneWeather(SceneData scene)
- {
- //Load Weather Overcast
- if ( ParamExist(PARAM_OVERCAST) )
- {
- CfgParamFloat cfg_overcast = CfgParamFloat.Cast( GetParamByName(PARAM_OVERCAST, CFG_TYPE_FLOAT) );
- scene.SetInitOvercast(cfg_overcast.GetValue());
- }
- //Load Weather Rain
- if ( ParamExist(PARAM_RAIN) )
- {
- CfgParamFloat cfg_rain = CfgParamFloat.Cast( GetParamByName(PARAM_RAIN, CFG_TYPE_FLOAT) );
- scene.SetInitRain(cfg_rain.GetValue());
- }
- //Load Weather Fog
- if ( ParamExist(PARAM_FOG) )
- {
- CfgParamFloat cfg_fog = CfgParamFloat.Cast( GetParamByName(PARAM_FOG, CFG_TYPE_FLOAT) );
- scene.SetInitFog(cfg_fog.GetValue());
- }
- //Load Weather Wind Force
- if ( ParamExist(PARAM_WIND_F) )
- {
- CfgParamFloat cfg_wind_force = CfgParamFloat.Cast( GetParamByName(PARAM_WIND_F, CFG_TYPE_FLOAT) );
- scene.SetInitWindForce(cfg_wind_force.GetValue());
- }
- }
-
- //=============================================
- // LOAD: LoadScenePlayer (position, rotation, health, script)
- //=============================================
- void LoadScenePlayer(SceneData scene)
- {
- // Only in local game (without server, (GetGame.GetPlayer is null on server! -> by design)
- if ( GetGame().GetPlayer() != NULL )
- {
- CfgParamArray cfg_player = CfgParamArray.Cast( GetParamByName(PARAM_PLAYER, CFG_TYPE_ARRAY) );
- CfgParamString cfg_ply_pos = CfgParamString.Cast( cfg_player.GetValueByName(PARAM_OBJ_POS, CFG_TYPE_STRING) );
- CfgParamFloat cfg_ply_rot = CfgParamFloat.Cast( cfg_player.GetValueByName(PARAM_OBJ_ROT, CFG_TYPE_FLOAT) );
- CfgParamFloat cfg_ply_hlt = CfgParamFloat.Cast( cfg_player.GetValueByName(PARAM_OBJ_HLT, CFG_TYPE_FLOAT) );
- CfgParamString cfg_ply_iscr = CfgParamString.Cast( cfg_player.GetValueByName(PARAM_OBJ_ISCR, CFG_TYPE_STRING) );
-
- ScenePlayer scn_player = scene.CreateScenePlayer();
- scn_player.LinkEntityAI(GetGame().GetPlayer());
-
- if ( PluginSceneManager.GetInstance().GetLoadPlayerPos() )
- {
- // start scene position
- vector start_pos = cfg_ply_pos.GetValue().ToVector();
-
- if ( start_pos != vector.Zero )
- {
- // Set Position
- scn_player.SetPosition(cfg_ply_pos.GetValue().ToVector());
-
- // Set Rotation
- scn_player.SetRotation(cfg_ply_rot.GetValue());
- }
- }
-
- // Set Health
- // Health check. Do not spawn player character as dead. He can still be spawned as injured.
- float health2 = cfg_ply_hlt.GetValue();
- if (health2 <= 0)
- health2 = scn_player.GetMaxHealth();
-
- scn_player.SetHealth(health2);
-
- // Exe Script
- scn_player.SetInitScript( DecodeInitScript(cfg_ply_iscr.GetValue()) );
- }
- //PrintString("LoadScenePlayer.. Finished");
- }
-
- //=============================================
- // LOAD: LoadSceneObjects (position, rotation, health, script, scripted links)
- //=============================================
- void LoadSceneObjects(SceneData scene)
- {
- CfgParamInt cfg_obj_count = CfgParamInt.Cast( GetParamByName(PARAM_OBJ_COUNT, CFG_TYPE_INT) );
- int obj_count = cfg_obj_count.GetValue();
-
- for ( int i = 0; i < obj_count; ++i )
- {
- string param_name = PARAM_OBJ_NAME+"_"+i.ToString();
-
- // Load scene object name
- CfgParamArray cfg_obj = CfgParamArray.Cast( GetParamByName(param_name, CFG_TYPE_ARRAY) );
-
- CfgParamString cfg_obj_type = CfgParamString.Cast( cfg_obj.GetValueByName(PARAM_OBJ_TYPE, CFG_TYPE_STRING) );
- CfgParamString cfg_obj_pos = CfgParamString.Cast( cfg_obj.GetValueByName(PARAM_OBJ_POS, CFG_TYPE_STRING) );
- CfgParamFloat cfg_obj_rot = CfgParamFloat.Cast( cfg_obj.GetValueByName(PARAM_OBJ_ROT, CFG_TYPE_FLOAT) );
- CfgParamFloat cfg_obj_hlt = CfgParamFloat.Cast( cfg_obj.GetValueByName(PARAM_OBJ_HLT, CFG_TYPE_FLOAT) );
- CfgParamString cfg_obj_iscr = CfgParamString.Cast( cfg_obj.GetValueByName(PARAM_OBJ_ISCR, CFG_TYPE_STRING) );
-
- //PrintString(itoa(i)+ " Loading param_name: "+ param_name+ " => object type: "+ cfg_obj_type.GetValue());
-
- // Create Scene Object + position
- SceneObject scn_obj = scene.CreateSceneObject(cfg_obj_type.GetValue(), cfg_obj_pos.GetValue().ToVector());
-
- // Setup rotation
- scn_obj.SetRotation(cfg_obj_rot.GetValue());
- // Setup health
- scn_obj.SetHealth(cfg_obj_hlt.GetValue());
- // Setup init script
- scn_obj.SetInitScript( DecodeInitScript(cfg_obj_iscr.GetValue()) );
-
- // Setup indices for linked objects
- CfgParamArray cfg_obj_param_links = CfgParamArray.Cast( GetParamByName(param_name + "_" + PARAM_OBJ_LNK, CFG_TYPE_ARRAY) );
- array<ref CfgParam> cfg_obj_links = cfg_obj_param_links.GetValues();
-
- for ( int lnko = 0; lnko < cfg_obj_links.Count(); lnko++ )
- {
- CfgParamInt cfg_obj_param_lnk_int = CfgParamInt.Cast( cfg_obj_links.Get(lnko) );
- scn_obj.m_LinkedSceneObjectsIndices.Insert( cfg_obj_param_lnk_int.GetValue() );
- }
-
- string param_name_att = param_name +"_"+ PARAM_OBJ_ATT;
-
- if ( ParamExist(param_name_att) )
- {
- CfgParamArray cfg_param_att = CfgParamArray.Cast( GetParamByName(param_name_att, CFG_TYPE_ARRAY) );
-
- array<ref CfgParam> cfg_param_attachments = cfg_param_att.GetValues();
-
- for ( int j = 0; j < cfg_param_attachments.Count(); ++j )
- {
- CfgParamString cfg_param_att_str = CfgParamString.Cast( cfg_param_attachments.Get(j) );
- scn_obj.GetObject().GetInventory().CreateAttachment( cfg_param_att_str.GetValue() );
- }
- }
- }
- }
- }
|