DayZ 1.28
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ CreateZones()

static void EffectAreaLoader::CreateZones ( )
inlinestaticprivate

См. определение в файле ContaminatedAreaLoader.c строка 6

7 {
8 JsonDataContaminatedAreas effectAreaData;
9
10 // We confirm the contaminated area configuration file exists in mission folder
11 if (!FileExist(m_Path))
12 {
13 // We fallback to check in data and notify user file was not found in mission
14 PrintToRPT("[WARNING] :: [EffectAreaLoader CreateZones] :: No contaminated area file found in MISSION folder, your path is " + m_Path + " Attempting DATA folder"); // If the path is invalid, we warn the user
15
16 m_Path = "";
18 m_Path = string.Format("dz/worlds/%1/ce/cfgeffectarea.json", m_Path);
19
20 if (!FileExist(m_Path))
21 {
22 PrintToRPT("[WARNING] :: [EffectAreaLoader CreateZones] :: No contaminated area file found in DATA folder, your path is " + m_Path); // If the path is invalid, we warn the user
23 return; // Nothing could be read, just end here
24 }
25 }
26
27 // We load the data from file, in case of failure we notify user
28 effectAreaData = EffectAreaLoader.GetData();
29 if (effectAreaData)
30 {
31 // Now that we have extracted the data we go through every declared area
32 //Debug.Log("Contaminated area JSON contains : " + effectAreaData.Areas.Count());
33
34 for (int i = 0; i < effectAreaData.Areas.Count(); ++i)
35 {
36 EffectAreaParams params = new EffectAreaParams();
37
38 // We feed in all relevant data
39 params.m_ParamName = effectAreaData.Areas.Get( i ).AreaName;
40 string areaType = effectAreaData.Areas.Get( i ).Type;
41 params.m_ParamTriggerType = effectAreaData.Areas.Get( i ).TriggerType;
42 JsonDataAreaData data = effectAreaData.Areas.Get( i ).Data;
43
44 // World level area data ( Trigger info, world particles, etc... )
45 vector pos = Vector( data.Pos[0], data.Pos[1], data.Pos[2] );
46 if (data.Radius <= 0)
47 {
48 ErrorEx(string.Format("Radius cannot be <= 0. Fix [%1] area definition in cfgeffectarea.json", params.m_ParamName));
49 continue;
50 }
51
52 params.m_ParamRadius = data.Radius;
53
54 params.m_ParamPosHeight = data.PosHeight;
55 params.m_ParamNegHeight = data.NegHeight;
56
57 params.m_ParamInnerRings = data.InnerRingCount;
58 params.m_ParamInnerSpace = data.InnerPartDist;
59 params.m_ParamOuterToggle = data.OuterRingToggle;
60 params.m_ParamOuterSpace = data.OuterPartDist;
61 params.m_ParamOuterOffset = data.OuterOffset;
62 params.m_ParamVertLayers = data.VerticalLayers;
63 params.m_ParamVerticalOffset = data.VerticalOffset;
64 string particleName = data.ParticleName;
65 params.m_ParamEffectInterval = data.EffectInterval;
66 params.m_ParamEffectDuration = data.EffectDuration;
67 params.m_ParamEffectModifier = data.EffectModifier;
68
69 // Local level area data ( Player particles and PPE )
70 JsonDataPlayerData playerData = effectAreaData.Areas.Get( i ).PlayerData;
71 string aroundPartName = playerData.AroundPartName;
72 string tinyPartName = playerData.TinyPartName;
73 string ppeRequesterType = playerData.PPERequesterType;
74
75 // Conversion of particle name to ID for synchronization and loading
76 if (particleName != "")
77 params.m_ParamPartId = ParticleList.GetParticleID( particleName );
78
79 if (aroundPartName != "")
80 params.m_ParamAroundPartId = ParticleList.GetParticleID(aroundPartName);
81
82 if (tinyPartName != "")
83 params.m_ParamTinyPartId = ParticleList.GetParticleID(tinyPartName);
84
85 params.m_ParamPpeRequesterType = ppeRequesterType;
86
87 EffectArea newZone; // Zones MUST inherit from EffectArea
88
89 // We snap item position to ground before creating if specified Y is 0
90 if (pos[1] == 0)
91 {
92 pos[1] = GetGame().SurfaceRoadY(pos[0], pos[2]);
93 newZone = EffectArea.Cast(GetGame().CreateObjectEx(areaType, pos, ECE_PLACE_ON_SURFACE));
94 }
95 else
96 newZone = EffectArea.Cast(GetGame().CreateObjectEx(areaType, pos, ECE_NONE));
97
98 // We created a new zone, we feed in the data to finalize setup
99 if (newZone)
100 newZone.SetupZoneData(params);
101 else
102 Error("[WARNING] :: [EffectAreaLoader CreateZones] :: Cast failed, are you sure your class ( 'Type:' ) inherits from EffectArea and that there are no Typos?");
103 }
104 }
105 else
106 Error("[WARNING] :: [EffectAreaLoader CreateZones] :: Data could not be read, please check data and syntax"); // Most JSON related errors should be handled, but we have an extra check in case data could not be read
107 }
const int ECE_NONE
Определения CentralEconomy.c:7
const int ECE_PLACE_ON_SURFACE
Определения CentralEconomy.c:37
proto void GetWorldName(out string world_name)
proto native float SurfaceRoadY(float x, float z, RoadSurfaceDetection rsd=RoadSurfaceDetection.LEGACY)
static string m_Path
Определения ContaminatedAreaLoader.c:4
float PosHeight
Определения JsonDataContaminatedArea.c:21
int EffectDuration
Определения JsonDataContaminatedArea.c:32
int InnerPartDist
Определения JsonDataContaminatedArea.c:24
bool EffectModifier
Определения JsonDataContaminatedArea.c:33
int VerticalLayers
Определения JsonDataContaminatedArea.c:28
string ParticleName
Определения JsonDataContaminatedArea.c:30
int VerticalOffset
Определения JsonDataContaminatedArea.c:29
int EffectInterval
Определения JsonDataContaminatedArea.c:31
int InnerRingCount
Определения JsonDataContaminatedArea.c:23
ref array< float > Pos
Определения JsonDataContaminatedArea.c:19
int OuterPartDist
Определения JsonDataContaminatedArea.c:26
float NegHeight
Определения JsonDataContaminatedArea.c:22
bool OuterRingToggle
Определения JsonDataContaminatedArea.c:25
ref array< ref JsonDataContaminatedArea > Areas
Определения JsonDataContaminatedArea.c:4
string PPERequesterType
Определения JsonDataContaminatedArea.c:40
string AroundPartName
Определения JsonDataContaminatedArea.c:38
string TinyPartName
Определения JsonDataContaminatedArea.c:39
proto native CGame GetGame()
void Error(string err)
Messagebox with error message.
Определения EnDebug.c:90
proto void PrintToRPT(void var)
Prints content of variable to RPT file (performance warning - each write means fflush!...
enum ShapeType ErrorEx
proto bool FileExist(string name)
Check existence of file.
proto native vector Vector(float x, float y, float z)
Vector constructor from components.

Перекрестные ссылки JsonDataContaminatedAreas::Areas, JsonDataPlayerData::AroundPartName, ECE_NONE, ECE_PLACE_ON_SURFACE, JsonDataAreaData::EffectDuration, JsonDataAreaData::EffectInterval, JsonDataAreaData::EffectModifier, Error(), ErrorEx, FileExist(), GetData(), GetGame(), ParticleList::GetParticleID(), CGame::GetWorldName(), JsonDataAreaData::InnerPartDist, JsonDataAreaData::InnerRingCount, m_Path, JsonDataAreaData::NegHeight, JsonDataAreaData::OuterOffset, JsonDataAreaData::OuterPartDist, JsonDataAreaData::OuterRingToggle, JsonDataAreaData::ParticleName, JsonDataAreaData::Pos, JsonDataAreaData::PosHeight, JsonDataPlayerData::PPERequesterType, PrintToRPT(), JsonDataAreaData::Radius, CGame::SurfaceRoadY(), JsonDataPlayerData::TinyPartName, Vector(), JsonDataAreaData::VerticalLayers и JsonDataAreaData::VerticalOffset.

Используется в MissionBase::OnMissionStart().