hatchback_02.c 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452
  1. class Hatchback_02 extends CarScript
  2. {
  3. protected ref UniversalTemperatureSource m_UTSource;
  4. protected ref UniversalTemperatureSourceSettings m_UTSSettings;
  5. protected ref UniversalTemperatureSourceLambdaEngine m_UTSLEngine;
  6. void Hatchback_02()
  7. {
  8. //m_dmgContactCoef = 0.070;
  9. m_EngineStartOK = "Hatchback_02_engine_start_SoundSet";
  10. m_EngineStartBattery = "Hatchback_02_engine_failed_start_battery_SoundSet";
  11. m_EngineStartPlug = "Hatchback_02_engine_failed_start_sparkplugs_SoundSet";
  12. m_EngineStartFuel = "Hatchback_02_engine_failed_start_fuel_SoundSet";
  13. m_EngineStop = "Hatchback_02_engine_stop_SoundSet";
  14. m_EngineStopFuel = "Hatchback_02_engine_stop_fuel_SoundSet";
  15. m_CarDoorOpenSound = "offroad_door_open_SoundSet";
  16. m_CarDoorCloseSound = "offroad_door_close_SoundSet";
  17. m_CarHornShortSoundName = "Hatchback_02_Horn_Short_SoundSet";
  18. m_CarHornLongSoundName = "Hatchback_02_Horn_SoundSet";
  19. SetEnginePos("0 0.7 1.4");
  20. }
  21. override void EEInit()
  22. {
  23. super.EEInit();
  24. if (GetGame().IsServer() || !GetGame().IsMultiplayer())
  25. {
  26. m_UTSSettings = new UniversalTemperatureSourceSettings();
  27. m_UTSSettings.m_ManualUpdate = true;
  28. m_UTSSettings.m_TemperatureItemCap = GameConstants.ITEM_TEMPERATURE_NEUTRAL_ZONE_MIDDLE;
  29. m_UTSSettings.m_TemperatureCap = 0;
  30. m_UTSSettings.m_RangeFull = 0.5;
  31. m_UTSSettings.m_RangeMax = 2;
  32. m_UTSLEngine = new UniversalTemperatureSourceLambdaEngine();
  33. m_UTSource = new UniversalTemperatureSource(this, m_UTSSettings, m_UTSLEngine);
  34. }
  35. }
  36. override void OnEngineStart()
  37. {
  38. super.OnEngineStart();
  39. if (GetGame().IsServer() || !GetGame().IsMultiplayer())
  40. {
  41. m_UTSource.SetDefferedActive(true, 20.0);
  42. }
  43. }
  44. override void OnEngineStop()
  45. {
  46. super.OnEngineStop();
  47. if (GetGame().IsServer() || !GetGame().IsMultiplayer())
  48. {
  49. m_UTSource.SetDefferedActive(false, 10.0);
  50. }
  51. }
  52. override void EOnPostSimulate(IEntity other, float timeSlice)
  53. {
  54. if (GetGame().IsServer() || !GetGame().IsMultiplayer())
  55. {
  56. if (m_UTSource.IsActive())
  57. {
  58. m_UTSource.Update(m_UTSSettings, m_UTSLEngine);
  59. }
  60. }
  61. }
  62. override int GetAnimInstance()
  63. {
  64. return VehicleAnimInstances.GOLF;
  65. }
  66. override int GetSeatAnimationType(int posIdx)
  67. {
  68. switch (posIdx)
  69. {
  70. case 0:
  71. return DayZPlayerConstants.VEHICLESEAT_DRIVER;
  72. case 1:
  73. return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
  74. case 2:
  75. return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
  76. case 3:
  77. return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
  78. }
  79. return 0;
  80. }
  81. // Override for car-specific light type
  82. override CarRearLightBase CreateRearLight()
  83. {
  84. return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Hatchback_02RearLight));
  85. }
  86. // Override for car-specific light type
  87. override CarLightBase CreateFrontLight()
  88. {
  89. return CarLightBase.Cast(ScriptedLightBase.CreateLight(Hatchback_02FrontLight));
  90. }
  91. override bool CanReleaseAttachment(EntityAI attachment)
  92. {
  93. if (!super.CanReleaseAttachment(attachment))
  94. {
  95. return false;
  96. }
  97. if (EngineIsOn() || GetCarDoorsState("Hatchback_02_Hood") == CarDoorState.DOORS_CLOSED)
  98. {
  99. string attType = attachment.GetType();
  100. if (attType == "CarRadiator" || attType == "CarBattery" || attType == "SparkPlug")
  101. {
  102. return false;
  103. }
  104. }
  105. return true;
  106. }
  107. override protected bool CanManipulateSpareWheel(string slotSelectionName)
  108. {
  109. return GetCarDoorsState("Hatchback_02_Trunk") != CarDoorState.DOORS_CLOSED;
  110. }
  111. override bool CanDisplayAttachmentCategory( string category_name )
  112. {
  113. //super
  114. if ( !super.CanDisplayAttachmentCategory( category_name ) )
  115. return false;
  116. //
  117. category_name.ToLower();
  118. if ( category_name.Contains("engine") )
  119. {
  120. if ( GetCarDoorsState("Hatchback_02_Hood") == CarDoorState.DOORS_CLOSED )
  121. return false;
  122. }
  123. return true;
  124. }
  125. override bool CanDisplayCargo()
  126. {
  127. if ( !super.CanDisplayCargo() )
  128. return false;
  129. if ( GetCarDoorsState("Hatchback_02_Trunk") == CarDoorState.DOORS_CLOSED )
  130. return false;
  131. return true;
  132. }
  133. override int GetCarDoorsState(string slotType)
  134. {
  135. CarDoor carDoor;
  136. Class.CastTo(carDoor, FindAttachmentBySlotName(slotType));
  137. if (!carDoor)
  138. {
  139. return CarDoorState.DOORS_MISSING;
  140. }
  141. switch (slotType)
  142. {
  143. case "Hatchback_02_Door_1_1":
  144. return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
  145. case "Hatchback_02_Door_2_1":
  146. return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
  147. case "Hatchback_02_Door_1_2":
  148. return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
  149. case "Hatchback_02_Door_2_2":
  150. return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
  151. case "Hatchback_02_Hood":
  152. return TranslateAnimationPhaseToCarDoorState("DoorsHood");
  153. case "Hatchback_02_Trunk":
  154. return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
  155. }
  156. return CarDoorState.DOORS_MISSING;
  157. }
  158. override bool CrewCanGetThrough(int posIdx)
  159. {
  160. switch (posIdx)
  161. {
  162. case 0:
  163. if (GetCarDoorsState("Hatchback_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
  164. {
  165. return false;
  166. }
  167. return true;
  168. case 1:
  169. if (GetCarDoorsState("Hatchback_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
  170. {
  171. return false;
  172. }
  173. return true;
  174. case 2:
  175. if (GetCarDoorsState("Hatchback_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
  176. {
  177. return false;
  178. }
  179. return true;
  180. case 3:
  181. if (GetCarDoorsState("Hatchback_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
  182. {
  183. return false;
  184. }
  185. return true;
  186. }
  187. return false;
  188. }
  189. override string GetDoorSelectionNameFromSeatPos(int posIdx)
  190. {
  191. switch( posIdx )
  192. {
  193. case 0:
  194. return "doors_driver";
  195. break;
  196. case 1:
  197. return "doors_codriver";
  198. break;
  199. case 2:
  200. return "doors_cargo1";
  201. break;
  202. case 3:
  203. return "doors_cargo2";
  204. break;
  205. }
  206. return super.GetDoorSelectionNameFromSeatPos(posIdx);
  207. }
  208. override string GetDoorInvSlotNameFromSeatPos(int posIdx)
  209. {
  210. switch( posIdx )
  211. {
  212. case 0:
  213. return "Hatchback_02_Door_1_1";
  214. break;
  215. case 1:
  216. return "Hatchback_02_Door_2_1";
  217. break;
  218. case 2:
  219. return "Hatchback_02_Door_1_2";
  220. break;
  221. case 3:
  222. return "Hatchback_02_Door_2_2";
  223. break;
  224. }
  225. return super.GetDoorInvSlotNameFromSeatPos(posIdx);
  226. }
  227. override float OnSound(CarSoundCtrl ctrl, float oldValue)
  228. {
  229. switch (ctrl)
  230. {
  231. case CarSoundCtrl.DOORS:
  232. float newValue = 0;
  233. if (GetCarDoorsState("Hatchback_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
  234. {
  235. newValue += 0.25;
  236. }
  237. if (GetCarDoorsState("Hatchback_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
  238. {
  239. newValue += 0.25;
  240. }
  241. if (GetCarDoorsState("Hatchback_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
  242. {
  243. newValue += 0.25;
  244. }
  245. if (GetCarDoorsState("Hatchback_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
  246. {
  247. newValue += 0.25;
  248. }
  249. return Math.Clamp(newValue, 0, 1);
  250. break;
  251. }
  252. return super.OnSound(ctrl, oldValue);
  253. }
  254. override string GetAnimSourceFromSelection( string selection )
  255. {
  256. switch( selection )
  257. {
  258. case "doors_driver":
  259. return "DoorsDriver";
  260. case "doors_codriver":
  261. return "DoorsCoDriver";
  262. case "doors_cargo1":
  263. return "DoorsCargo1";
  264. case "doors_cargo2":
  265. return "DoorsCargo2";
  266. case "doors_hood":
  267. return "DoorsHood";
  268. case "doors_trunk":
  269. return "DoorsTrunk";
  270. }
  271. return "";
  272. }
  273. override bool IsVitalTruckBattery()
  274. {
  275. return false;
  276. }
  277. override bool IsVitalGlowPlug()
  278. {
  279. return false;
  280. }
  281. override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
  282. {
  283. switch (currentSeat)
  284. {
  285. case 0:
  286. return nextSeat == 1;
  287. case 1:
  288. return nextSeat == 0;
  289. case 2:
  290. return nextSeat == 3;
  291. case 3:
  292. return nextSeat == 2;
  293. }
  294. return false;
  295. }
  296. override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
  297. {
  298. switch (pCurrentSeat)
  299. {
  300. case 0:
  301. return pDoorsSelection == "DoorsDriver";
  302. case 1:
  303. return pDoorsSelection == "DoorsCoDriver";
  304. case 2:
  305. return pDoorsSelection == "DoorsCargo1";
  306. case 3:
  307. return pDoorsSelection == "DoorsCargo2";
  308. }
  309. return false;
  310. }
  311. override void OnDebugSpawn()
  312. {
  313. SpawnUniversalParts();
  314. SpawnAdditionalItems();
  315. FillUpCarFluids();
  316. GetInventory().CreateInInventory("Hatchback_02_Wheel");
  317. GetInventory().CreateInInventory("Hatchback_02_Wheel");
  318. GetInventory().CreateInInventory("Hatchback_02_Wheel");
  319. GetInventory().CreateInInventory("Hatchback_02_Wheel");
  320. GetInventory().CreateInInventory("Hatchback_02_Door_1_1");
  321. GetInventory().CreateInInventory("Hatchback_02_Door_1_2");
  322. GetInventory().CreateInInventory("Hatchback_02_Door_2_1");
  323. GetInventory().CreateInInventory("Hatchback_02_Door_2_2");
  324. GetInventory().CreateInInventory("Hatchback_02_Hood");
  325. GetInventory().CreateInInventory("Hatchback_02_Trunk");
  326. //-----IN CAR CARGO
  327. GetInventory().CreateInInventory("Hatchback_02_Wheel");
  328. GetInventory().CreateInInventory("Hatchback_02_Wheel");
  329. }
  330. }
  331. class Hatchback_02_Black extends Hatchback_02
  332. {
  333. override void OnDebugSpawn()
  334. {
  335. SpawnUniversalParts();
  336. SpawnAdditionalItems();
  337. FillUpCarFluids();
  338. GetInventory().CreateInInventory("Hatchback_02_Wheel");
  339. GetInventory().CreateInInventory("Hatchback_02_Wheel");
  340. GetInventory().CreateInInventory("Hatchback_02_Wheel");
  341. GetInventory().CreateInInventory("Hatchback_02_Wheel");
  342. GetInventory().CreateInInventory("Hatchback_02_Door_1_1_Black");
  343. GetInventory().CreateInInventory("Hatchback_02_Door_1_2_Black");
  344. GetInventory().CreateInInventory("Hatchback_02_Door_2_1_Black");
  345. GetInventory().CreateInInventory("Hatchback_02_Door_2_2_Black");
  346. GetInventory().CreateInInventory("Hatchback_02_Hood_Black");
  347. GetInventory().CreateInInventory("Hatchback_02_Trunk_Black");
  348. //-----IN CAR CARGO
  349. GetInventory().CreateInInventory("Hatchback_02_Wheel");
  350. GetInventory().CreateInInventory("Hatchback_02_Wheel");
  351. }
  352. };
  353. class Hatchback_02_Blue extends Hatchback_02
  354. {
  355. override void OnDebugSpawn()
  356. {
  357. SpawnUniversalParts();
  358. SpawnAdditionalItems();
  359. FillUpCarFluids();
  360. GetInventory().CreateInInventory("Hatchback_02_Wheel");
  361. GetInventory().CreateInInventory("Hatchback_02_Wheel");
  362. GetInventory().CreateInInventory("Hatchback_02_Wheel");
  363. GetInventory().CreateInInventory("Hatchback_02_Wheel");
  364. GetInventory().CreateInInventory("Hatchback_02_Door_1_1_Blue");
  365. GetInventory().CreateInInventory("Hatchback_02_Door_1_2_Blue");
  366. GetInventory().CreateInInventory("Hatchback_02_Door_2_1_Blue");
  367. GetInventory().CreateInInventory("Hatchback_02_Door_2_2_Blue");
  368. GetInventory().CreateInInventory("Hatchback_02_Hood_Blue");
  369. GetInventory().CreateInInventory("Hatchback_02_Trunk_Blue");
  370. //-----IN CAR CARGO
  371. GetInventory().CreateInInventory("Hatchback_02_Wheel");
  372. GetInventory().CreateInInventory("Hatchback_02_Wheel");
  373. }
  374. };