3 protected string FILE_ROOT =
"$saves:";
4 protected const string FILE_ROOT_SCENES =
"scenes";
6 protected const string PARAM_MISSION =
"Mission";
7 protected const string PARAM_TIME =
"InitTime";
8 protected const string PARAM_YEAR =
"InitYear";
9 protected const string PARAM_MONTH =
"InitMonth";
10 protected const string PARAM_DAY =
"InitDay";
11 protected const string PARAM_HOUR =
"InitHour";
12 protected const string PARAM_MINUTE =
"InitMinute";
13 protected const string PARAM_OVERCAST =
"WeatherInitOvercast";
14 protected const string PARAM_RAIN =
"WeatherInitRain";
15 protected const string PARAM_FOG =
"WeatherInitFog";
16 protected const string PARAM_WIND_F =
"WeatherInitWindForce";
17 protected const string PARAM_PLAYER =
"Player";
18 protected const string PARAM_OBJ_COUNT =
"SceneObjectsCount";
19 protected const string PARAM_OBJ_NAME =
"SceneObject";
20 protected const string PARAM_OBJ_ATT =
"Att";
21 protected const string PARAM_OBJ_LNK =
"Lnk";
22 protected const string PARAM_OBJ_TYPE =
"type";
23 protected const string PARAM_OBJ_POS =
"position";
24 protected const string PARAM_OBJ_ROT =
"rotation";
25 protected const string PARAM_OBJ_DMG =
"damage";
26 protected const string PARAM_OBJ_HLT =
"health";
27 protected const string PARAM_OBJ_ISCR =
"init_script";
40 FILE_ROOT =
g_Game.GetMissionFolderPath();
64 string file_path =
GetPathScenes()+
"\\"+scene_name+
"."+PluginSceneManager.SCENE_SUFIX;
65 string file_path_new =
GetPathScenes()+
"\\"+scene_name_new+
"."+PluginSceneManager.SCENE_SUFIX;
74 string file_path =
GetPathScenes()+
"\\"+scene_name+
"."+PluginSceneManager.SCENE_SUFIX;
83 string file_path =
GetPathScenes()+
"\\"+scene_name+
"."+PluginSceneManager.SCENE_SUFIX;
84 string file_path_new = file_path;
89 file_path_new =
GetPathScenes()+
"\\"+scene_name+
"_copy"+i.ToString()+
"."+PluginSceneManager.SCENE_SUFIX;
111 string path_find_pattern =
GetPathScenes()+
"/*."+PluginSceneManager.SCENE_SUFIX;
117 int pos = file_name.IndexOf(
".");
121 list.Insert( file_name.Substring(0, pos) );
124 found =
FindNextFile(file_handler, file_name, file_attr);
135 script.Replace(
"\"",
"^" );
136 script.Replace(
"\n",
"$" );
145 script.Replace(
"^",
"\"" );
146 script.Replace(
"$",
"\n" );
161 PluginSceneManager module_scene_editor = PluginSceneManager.Cast(
GetPlugin(PluginSceneManager) );
163 EntityAI player = PluginSceneManager.PLAYER;
166 m_FileSceneName = scene.
GetNameScene()+
"."+PluginSceneManager.SCENE_SUFIX;
191 CfgParamString cfg_mission = CfgParamString.Cast( GetParamByName(PARAM_MISSION,
CFG_TYPE_STRING) );
195 CfgParamFloat cfg_time = CfgParamFloat.Cast( GetParamByName(PARAM_TIME,
CFG_TYPE_FLOAT) );
199 CfgParamInt cfg_year = CfgParamInt.Cast( GetParamByName(PARAM_YEAR,
CFG_TYPE_INT) );
203 CfgParamInt cfg_month = CfgParamInt.Cast( GetParamByName(PARAM_MONTH,
CFG_TYPE_INT) );
207 CfgParamInt cfg_day = CfgParamInt.Cast( GetParamByName(PARAM_DAY,
CFG_TYPE_INT) );
211 CfgParamInt cfg_hour = CfgParamInt.Cast( GetParamByName(PARAM_HOUR,
CFG_TYPE_INT) );
215 CfgParamInt cfg_minute = CfgParamInt.Cast( GetParamByName(PARAM_MINUTE,
CFG_TYPE_INT) );
225 CfgParamFloat cfg_overcast = CfgParamFloat.Cast( GetParamByName(PARAM_OVERCAST,
CFG_TYPE_FLOAT) );
229 CfgParamFloat cfg_rain = CfgParamFloat.Cast( GetParamByName(PARAM_RAIN,
CFG_TYPE_FLOAT) );
233 CfgParamFloat cfg_fog = CfgParamFloat.Cast( GetParamByName(PARAM_FOG,
CFG_TYPE_FLOAT) );
237 CfgParamFloat cfg_wind_force = CfgParamFloat.Cast( GetParamByName(PARAM_WIND_F,
CFG_TYPE_FLOAT) );
248 if ( players.Count() > 0 )
250 ScenePlayer plyr = players.Get(0);
253 CfgParamArray cfg_param_player = CfgParamArray.Cast( GetParamByName(PARAM_PLAYER,
CFG_TYPE_ARRAY) );
256 CfgParamString cfg_param_player_pos = CfgParamString.Cast( cfg_param_player.GetValueByName(PARAM_OBJ_POS,
CFG_TYPE_STRING) );
257 cfg_param_player_pos.SetValue(plyr.GetPositionAsString());
260 CfgParamFloat cfg_param_player_rot = CfgParamFloat.Cast( cfg_param_player.GetValueByName(PARAM_OBJ_ROT,
CFG_TYPE_FLOAT) );
261 cfg_param_player_rot.SetValue(plyr.GetRotation());
264 CfgParamFloat cfg_param_player_hlt = CfgParamFloat.Cast( cfg_param_player.GetValueByName(PARAM_OBJ_HLT,
CFG_TYPE_FLOAT) );
265 cfg_param_player_hlt.SetValue(plyr.GetHealth());
268 CfgParamString cfg_param_player_iscr = CfgParamString.Cast( cfg_param_player.GetValueByName(PARAM_OBJ_ISCR,
CFG_TYPE_STRING) );
281 for (
int i = 0; i < objects.Count(); ++i )
287 param_name = PARAM_OBJ_NAME+
"_"+i.ToString();
290 CfgParamArray cfg_param_obj = CfgParamArray.Cast( GetParamByName(param_name,
CFG_TYPE_ARRAY) );
293 CfgParamString cfg_param_obj_type = CfgParamString.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_TYPE,
CFG_TYPE_STRING) );
297 CfgParamString cfg_param_obj_pos = CfgParamString.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_POS,
CFG_TYPE_STRING) );
301 CfgParamFloat cfg_param_obj_rot = CfgParamFloat.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_ROT,
CFG_TYPE_FLOAT) );
305 CfgParamFloat cfg_param_obj_hlt = CfgParamFloat.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_HLT,
CFG_TYPE_FLOAT) );
306 cfg_param_obj_hlt.SetValue(obj.
GetHealth());
309 CfgParamString cfg_param_obj_iscr = CfgParamString.Cast( cfg_param_obj.GetValueByName(PARAM_OBJ_ISCR,
CFG_TYPE_STRING) );
314 int attcount = e_obj.GetInventory().AttachmentCount();
319 CfgParamArray cfg_param_att = CfgParamArray.Cast( GetParamByName(param_name_att,
CFG_TYPE_ARRAY) );
320 cfg_param_att.Clear();
322 for (
int att = 0; att < attcount; att++)
324 EntityAI attachment = e_obj.GetInventory().GetAttachmentFromIndex(att);
326 CfgParamString cfg_param_att_str =
new CfgParamString(
"");
327 cfg_param_att_str.SetValue( attachment.GetType() );
328 cfg_param_att.InsertValue( cfg_param_att_str );
333 if ( linked_scene_objects.Count() > 0 )
336 CfgParamArray cfg_param_lnk = CfgParamArray.Cast( GetParamByName( param_name_lnk,
CFG_TYPE_ARRAY ) );
337 cfg_param_lnk.Clear();
339 for (
int lnk = 0; lnk < linked_scene_objects.Count(); lnk++ )
341 CfgParamInt cfg_param_lnk_int =
new CfgParamInt(
"");
343 int index = objects.Find( linked_scene_objects.Get(lnk) );
347 cfg_param_lnk_int.SetValue( index );
348 cfg_param_lnk.InsertValue( cfg_param_lnk_int );
355 CfgParamInt cfg_obj_count = CfgParamInt.Cast( GetParamByName(PARAM_OBJ_COUNT,
CFG_TYPE_INT) );
356 cfg_obj_count.SetValue(objects.Count());
370 m_FileSceneName = scene_name+
"."+PluginSceneManager.SCENE_SUFIX;
406 CfgParamString cfg_mission = CfgParamString.Cast( GetParamByName(PARAM_MISSION,
CFG_TYPE_STRING) );
410 CfgParamFloat cfg_time = CfgParamFloat.Cast( GetParamByName(PARAM_TIME,
CFG_TYPE_FLOAT) );
413 int year, month, day, hour, minute;
414 GetGame().GetWorld().GetDate( year, month, day, hour, minute );
417 if ( ParamExist(PARAM_YEAR) )
419 CfgParamInt cfg_year = CfgParamInt.Cast( GetParamByName( PARAM_YEAR,
CFG_TYPE_INT ) );
428 if ( ParamExist(PARAM_MONTH) )
430 CfgParamInt cfg_month = CfgParamInt.Cast( GetParamByName( PARAM_MONTH,
CFG_TYPE_INT ) );
439 if ( ParamExist(PARAM_DAY) )
441 CfgParamInt cfg_day = CfgParamInt.Cast( GetParamByName( PARAM_DAY,
CFG_TYPE_INT ) );
450 if ( ParamExist(PARAM_HOUR) )
452 CfgParamInt cfg_hour = CfgParamInt.Cast( GetParamByName( PARAM_HOUR,
CFG_TYPE_INT ) );
461 if ( ParamExist(PARAM_MINUTE) )
463 CfgParamInt cfg_minute = CfgParamInt.Cast( GetParamByName( PARAM_MINUTE,
CFG_TYPE_INT ) );
478 if ( ParamExist(PARAM_OVERCAST) )
480 CfgParamFloat cfg_overcast = CfgParamFloat.Cast( GetParamByName(PARAM_OVERCAST,
CFG_TYPE_FLOAT) );
485 if ( ParamExist(PARAM_RAIN) )
487 CfgParamFloat cfg_rain = CfgParamFloat.Cast( GetParamByName(PARAM_RAIN,
CFG_TYPE_FLOAT) );
492 if ( ParamExist(PARAM_FOG) )
494 CfgParamFloat cfg_fog = CfgParamFloat.Cast( GetParamByName(PARAM_FOG,
CFG_TYPE_FLOAT) );
499 if ( ParamExist(PARAM_WIND_F) )
501 CfgParamFloat cfg_wind_force = CfgParamFloat.Cast( GetParamByName(PARAM_WIND_F,
CFG_TYPE_FLOAT) );
514 CfgParamArray cfg_player = CfgParamArray.Cast( GetParamByName(PARAM_PLAYER,
CFG_TYPE_ARRAY) );
515 CfgParamString cfg_ply_pos = CfgParamString.Cast( cfg_player.GetValueByName(PARAM_OBJ_POS,
CFG_TYPE_STRING) );
516 CfgParamFloat cfg_ply_rot = CfgParamFloat.Cast( cfg_player.GetValueByName(PARAM_OBJ_ROT,
CFG_TYPE_FLOAT) );
517 CfgParamFloat cfg_ply_hlt = CfgParamFloat.Cast( cfg_player.GetValueByName(PARAM_OBJ_HLT,
CFG_TYPE_FLOAT) );
518 CfgParamString cfg_ply_iscr = CfgParamString.Cast( cfg_player.GetValueByName(PARAM_OBJ_ISCR,
CFG_TYPE_STRING) );
523 if ( PluginSceneManager.GetInstance().GetLoadPlayerPos() )
526 vector start_pos = cfg_ply_pos.GetValue().ToVector();
528 if ( start_pos !=
vector.Zero )
531 scn_player.SetPosition(cfg_ply_pos.GetValue().ToVector());
534 scn_player.SetRotation(cfg_ply_rot.GetValue());
540 float health2 = cfg_ply_hlt.GetValue();
542 health2 = scn_player.GetMaxHealth();
544 scn_player.SetHealth(health2);
557 CfgParamInt cfg_obj_count = CfgParamInt.Cast( GetParamByName(PARAM_OBJ_COUNT,
CFG_TYPE_INT) );
558 int obj_count = cfg_obj_count.GetValue();
560 for (
int i = 0; i < obj_count; ++i )
562 string param_name = PARAM_OBJ_NAME+
"_"+i.ToString();
565 CfgParamArray cfg_obj = CfgParamArray.Cast( GetParamByName(param_name,
CFG_TYPE_ARRAY) );
567 CfgParamString cfg_obj_type = CfgParamString.Cast( cfg_obj.GetValueByName(PARAM_OBJ_TYPE,
CFG_TYPE_STRING) );
568 CfgParamString cfg_obj_pos = CfgParamString.Cast( cfg_obj.GetValueByName(PARAM_OBJ_POS,
CFG_TYPE_STRING) );
569 CfgParamFloat cfg_obj_rot = CfgParamFloat.Cast( cfg_obj.GetValueByName(PARAM_OBJ_ROT,
CFG_TYPE_FLOAT) );
570 CfgParamFloat cfg_obj_hlt = CfgParamFloat.Cast( cfg_obj.GetValueByName(PARAM_OBJ_HLT,
CFG_TYPE_FLOAT) );
571 CfgParamString cfg_obj_iscr = CfgParamString.Cast( cfg_obj.GetValueByName(PARAM_OBJ_ISCR,
CFG_TYPE_STRING) );
581 scn_obj.
SetHealth(cfg_obj_hlt.GetValue());
586 CfgParamArray cfg_obj_param_links = CfgParamArray.Cast( GetParamByName(param_name +
"_" + PARAM_OBJ_LNK,
CFG_TYPE_ARRAY) );
589 for (
int lnko = 0; lnko < cfg_obj_links.Count(); lnko++ )
591 CfgParamInt cfg_obj_param_lnk_int = CfgParamInt.Cast( cfg_obj_links.Get(lnko) );
597 if ( ParamExist(param_name_att) )
599 CfgParamArray cfg_param_att = CfgParamArray.Cast( GetParamByName(param_name_att,
CFG_TYPE_ARRAY) );
603 for (
int j = 0; j < cfg_param_attachments.Count(); ++j )
605 CfgParamString cfg_param_att_str = CfgParamString.Cast( cfg_param_attachments.Get(j) );
606 scn_obj.
GetObject().GetInventory().CreateAttachment( cfg_param_att_str.GetValue() );
const int CFG_TYPE_STRING
const string PARAM_OBJ_LNK
override string GetFileName()
void LoadSceneWeather(SceneData scene)
TStringArray m_CfgTemplate
void SceneRename(string scene_name, string scene_name_new)
string EncodeInitScript(string script)
void LoadSceneSettings(SceneData scene)
void SaveSceneWeather(SceneData scene)
TStringArray GetSceneList()
void SceneDelete(string scene_name)
const string PARAM_OBJ_ATT
void LoadSceneObjects(SceneData scene)
void SaveScenePlayer(SceneData scene)
SceneData SceneDataLoad(string scene_name)
void SceneDataSave(SceneData scene)
void LoadScenePlayer(SceneData scene)
string DecodeInitScript(string script)
const string FILE_ROOT_SCENES
void SceneDuplicate(string scene_name)
void SaveSceneSettings(SceneData scene)
void SaveSceneObjects(SceneData scene)
void SetInitRain(float value)
void SetNameScene(string name)
void SetInitFog(float value)
array< ref SceneObject > GetSceneObjects()
void SetInitHour(int value)
ScenePlayer CreateScenePlayer()
void SetInitMonth(int value)
void SetInitMinute(int value)
void SetInitOvercast(float value)
void SetInitWindForce(float value)
SceneObject CreateSceneObject(string obj_name, vector pos)
void SetInitDay(int value)
void SetInitYear(int value)
array< ref ScenePlayer > GetScenePlayers()
void SetInitTime(float time)
void SetNameMission(string name)
array< SceneObject > GetLinkedSceneObjects()
void SetInitScript(string init_script)
void SetRotation(float rot)
ref array< int > m_LinkedSceneObjectsIndices
void SetHealth(float value)
string GetPositionAsString()
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto native CGame GetGame()
array< string > TStringArray
proto native bool MakeDirectory(string name)
Makes a directory.
enum FindFileFlags FindFile(string pattern, out string fileName, out FileAttr fileAttributes, FindFileFlags flags)
proto bool FindNextFile(FindFileHandle handle, out string fileName, out FileAttr fileAttributes)
proto bool FileExist(string name)
Check existence of file.
PluginBase GetPlugin(typename plugin_type)