hatchback_02.c 10 KB

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