missions.gd 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. extends Node
  2. var missions = []
  3. var missions_available = []
  4. var missions_finished = []
  5. func create_random_missions():
  6. missions_available.clear()
  7. create_random_bounty_missions()
  8. create_random_escort_missions()
  9. create_random_transport_missions()
  10. create_random_passenger_missions()
  11. func create_random_bounty_missions():
  12. #async load, it will be called on ready after init and thus endure cyclic deps
  13. var missons_object = load("res://scripts/missions/bounty_missions.gd")
  14. var num_basic_bounty_missions = randi()%3
  15. var num_alive_bounty_missions = randi()%2
  16. var index = missions_available.size()
  17. var num_missions = num_basic_bounty_missions+num_alive_bounty_missions
  18. missions_available.resize(missions_available.size()+num_missions)
  19. for i in range(index,index+num_basic_bounty_missions):
  20. var data = missons_object.basic_bounty_mission_init()
  21. missions_available[i] = data
  22. index += num_basic_bounty_missions
  23. for i in range(index,index+num_alive_bounty_missions):
  24. var data = missons_object.alive_bounty_mission_init()
  25. missions_available[i] = data
  26. index += num_alive_bounty_missions
  27. func create_random_escort_missions():
  28. #async load, it will be called on ready after init and thus endure cyclic deps
  29. var missons_object = load("res://scripts/missions/escort_missions.gd")
  30. var num_basic_escort_missions = randi()%3
  31. var num_medium_escort_missions = randi()%3
  32. var num_small_fleet_escort_missions = randi()%2
  33. var index = missions_available.size()
  34. var num_missions = num_basic_escort_missions+num_medium_escort_missions+num_small_fleet_escort_missions
  35. missions_available.resize(missions_available.size()+num_missions)
  36. for i in range(index,index+num_basic_escort_missions):
  37. var data = missons_object.basic_escort_mission_init()
  38. missions_available[i] = data
  39. index += num_basic_escort_missions
  40. for i in range(index,index+num_medium_escort_missions):
  41. var data = missons_object.medium_escort_mission_init()
  42. missions_available[i] = data
  43. index += num_medium_escort_missions
  44. for i in range(index,index+num_small_fleet_escort_missions):
  45. var data = missons_object.small_fleet_escort_mission_init()
  46. missions_available[i] = data
  47. index += num_small_fleet_escort_missions
  48. func create_random_transport_missions():
  49. #async load, it will be called on ready after init and thus endure cyclic deps
  50. var missons_object = load("res://scripts/missions/transport_missions.gd")
  51. var num_basic_transport_missions = randi()%4+3
  52. var num_large_transport_missions = randi()%3+2
  53. var num_basic_rush_missions = randi()%3+2
  54. var index = missions_available.size()
  55. var num_missions = num_basic_transport_missions+num_large_transport_missions+num_basic_rush_missions
  56. missions_available.resize(missions_available.size()+num_missions)
  57. for i in range(index,index+num_basic_transport_missions):
  58. var data = missons_object.basic_transport_mission_init()
  59. missions_available[i] = data
  60. index += num_basic_transport_missions
  61. for i in range(index,index+num_large_transport_missions):
  62. var data = missons_object.large_transport_mission_init()
  63. missions_available[i] = data
  64. index += num_large_transport_missions
  65. for i in range(index,index+num_basic_rush_missions):
  66. var data = missons_object.basic_rush_mission_init()
  67. missions_available[i] = data
  68. index += num_basic_rush_missions
  69. func create_random_passenger_missions():
  70. #async load, it will be called on ready after init and thus endure cyclic deps
  71. var missons_object = load("res://scripts/missions/passenger_missions.gd")
  72. var num_basic_passenger_missions = randi()%4+1
  73. var num_cargo_passenger_missions = randi()%3
  74. var num_rush_passenger_missions = randi()%3
  75. var num_missions = num_basic_passenger_missions+num_cargo_passenger_missions+num_rush_passenger_missions
  76. var index = missions_available.size()
  77. missions_available.resize(missions_available.size()+num_missions)
  78. for i in range(index,index+num_basic_passenger_missions):
  79. var data = missons_object.basic_passenger_mission_init()
  80. missions_available[i] = data
  81. index += num_basic_passenger_missions
  82. for i in range(index,index+num_cargo_passenger_missions):
  83. var data = missons_object.cargo_passenger_mission_init()
  84. missions_available[i] = data
  85. index += num_cargo_passenger_missions
  86. for i in range(index,index+num_rush_passenger_missions):
  87. var data = missons_object.rush_passenger_mission_init()
  88. missions_available[i] = data
  89. index += num_rush_passenger_missions
  90. func landed(station):
  91. for i in range(missions.size()-1,-1,-1):
  92. var data = missions[i]
  93. if (data.has("on_land")):
  94. call(data["on_land"],station,i)
  95. for i in range(missions.size()-1,-1,-1):
  96. if (missions[i]==null):
  97. missions.remove(i)
  98. func take_off(station):
  99. for i in range(missions.size()-1,-1,-1):
  100. var data = missions[i]
  101. if (data.has("on_take_off")):
  102. call(data["on_take_off"],station,i)
  103. for i in range(missions.size()-1,-1,-1):
  104. if (missions[i]==null):
  105. missions.remove(i)