AchievementMenu.tscn 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  1. [gd_scene load_steps=20 format=3 uid="uid://bxaeo8dtil8jy"]
  2. [ext_resource type="Script" uid="uid://d3jebf1trkaor" path="res://Scripts/UI/AchievementMenu.gd" id="1_85no8"]
  3. [ext_resource type="Theme" uid="uid://dtn507x2b5de7" path="res://Resources/Theme.tres" id="1_gq2qe"]
  4. [ext_resource type="Texture2D" uid="uid://bhuybr2gtuco5" path="res://Assets/Sprites/UI/MenuBG.png" id="2_khc1b"]
  5. [ext_resource type="Script" uid="uid://xem6lai3ufyj" path="res://Scripts/Classes/UI/PackNinePatch.gd" id="4_85no8"]
  6. [ext_resource type="Texture2D" uid="uid://3ai0ggxah360" path="res://Assets/Sprites/UI/MenuBorder.png" id="6_25fff"]
  7. [ext_resource type="Texture2D" uid="uid://26v45a5r1gpd" path="res://Assets/Sprites/UI/AchievementBG.png" id="7_761rq"]
  8. [ext_resource type="Script" uid="uid://co6tjg3w6qpd8" path="res://Scripts/Parts/LabelFontChanger.gd" id="7_khc1b"]
  9. [ext_resource type="Script" uid="uid://cq6f682453q6o" path="res://Scripts/Classes/Components/ResourceSetter.gd" id="8_flkjp"]
  10. [ext_resource type="AudioStream" uid="uid://cj5eemp85esmq" path="res://Assets/Audio/BGM/Achievements.mp3" id="8_khc1b"]
  11. [ext_resource type="Script" uid="uid://cmvlgsjmsk0v5" path="res://Scripts/Classes/Resources/ThemedResource.gd" id="9_25fff"]
  12. [sub_resource type="Shader" id="Shader_mm3k3"]
  13. code = "shader_type canvas_item;
  14. uniform vec2 motion = vec2(0.0);
  15. uniform float scale = 1.0;
  16. uniform vec2 offset = vec2(0.0);
  17. void vertex(){
  18. UV = (VERTEX + offset + TIME * motion) * TEXTURE_PIXEL_SIZE * (1.0/scale);
  19. }"
  20. [sub_resource type="ShaderMaterial" id="ShaderMaterial_6w7a6"]
  21. shader = SubResource("Shader_mm3k3")
  22. shader_parameter/motion = Vector2(-4, -4)
  23. shader_parameter/scale = 1.0
  24. shader_parameter/offset = Vector2(0, 0)
  25. [sub_resource type="StyleBoxLine" id="StyleBoxLine_khc1b"]
  26. color = Color(1, 1, 1, 1)
  27. [sub_resource type="Resource" id="Resource_761rq"]
  28. script = ExtResource("9_25fff")
  29. Overworld = ExtResource("8_khc1b")
  30. metadata/_custom_type_script = "uid://cmvlgsjmsk0v5"
  31. [sub_resource type="GDScript" id="GDScript_lqtx1"]
  32. script/source = "extends AchievementProgressCalculator
  33. @export var campaign := \"SMB1\"
  34. func get_progress() -> int:
  35. var save = JSON.parse_string(FileAccess.open(\"user://saves/\" + campaign + \".sav\", FileAccess.READ).get_as_text())
  36. var levels_finished := 0
  37. for world in 8:
  38. for level in 4:
  39. if save[\"ChallengeScores\"][world][level] >= ChallengeModeHandler.CHALLENGE_TARGETS[campaign][world][level]:
  40. if save[\"RedCoins\"][world][level] >= 63:
  41. levels_finished += 1
  42. return levels_finished
  43. "
  44. [sub_resource type="GDScript" id="GDScript_gq2qe"]
  45. script/source = "extends AchievementProgressCalculator
  46. @export var campaign := \"SMB1\"
  47. func get_progress() -> int:
  48. var save = JSON.parse_string(FileAccess.open(\"user://saves/\" + campaign + \".sav\", FileAccess.READ).get_as_text())
  49. var levels_finished := 0
  50. for i in save[\"ClearedBooLevels\"]:
  51. if int(i) > 0:
  52. levels_finished += 1
  53. return levels_finished
  54. "
  55. [sub_resource type="GDScript" id="GDScript_khc1b"]
  56. script/source = "extends AchievementProgressCalculator
  57. @export var campaign := \"SMB1\"
  58. func get_progress() -> int:
  59. var save = JSON.parse_string(FileAccess.open(\"user://saves/\" + campaign + \".sav\", FileAccess.READ).get_as_text())
  60. var levels_finished := 0
  61. for i in save[\"ClearedBooLevels\"]:
  62. if int(i) >= 5:
  63. levels_finished += 1
  64. return levels_finished
  65. "
  66. [sub_resource type="GDScript" id="GDScript_85no8"]
  67. script/source = "extends AchievementProgressCalculator
  68. @export var campaign := \"SMB1\"
  69. @export var medal_index := 0
  70. func get_progress() -> int:
  71. var medal_amount := 0
  72. SpeedrunHandler.load_best_times(campaign)
  73. print(SpeedrunHandler.best_level_warpless_times)
  74. var world := 0
  75. for x in SpeedrunHandler.best_level_warpless_times:
  76. var level := 0
  77. for i in x:
  78. if i <= SpeedrunHandler.LEVEL_GOLD_WARPLESS_TIMES[campaign][world][level] * SpeedrunHandler.MEDAL_CONVERSIONS[medal_index] and i > 0:
  79. medal_amount += 1
  80. level += 1
  81. world += 1
  82. for x in SpeedrunHandler.best_level_any_times:
  83. print(SpeedrunHandler.best_level_any_times)
  84. if SpeedrunHandler.best_level_any_times[x] <= SpeedrunHandler.LEVEL_GOLD_ANY_TIMES[campaign][x] * SpeedrunHandler.MEDAL_CONVERSIONS[medal_index] and SpeedrunHandler.best_level_any_times[x] > 0:
  85. medal_amount += 1
  86. var save = JSON.parse_string(FileAccess.open(\"user://saves/\" + campaign + \".sav\", FileAccess.READ).get_as_text())
  87. if save.get(\"BestWarplessTime\", -1) <= SpeedrunHandler.GOLD_WARPLESS_TIMES[campaign] and save.get(\"BestWarplessTime\", -1) > 0:
  88. medal_amount += 1
  89. if save.get(\"BestAnyTime\", -1) <= SpeedrunHandler.GOLD_ANY_TIMES[campaign] and save.get(\"BestAnyTime\", -1) > 0:
  90. medal_amount += 1
  91. return medal_amount
  92. "
  93. [sub_resource type="GDScript" id="GDScript_refm4"]
  94. script/source = "extends AchievementProgressCalculator
  95. func get_progress() -> int:
  96. var p_amount := 0
  97. var save = JSON.parse_string(FileAccess.open(\"user://saves/SMBANN.sav\", FileAccess.READ). get_as_text())
  98. for i in save[\"Ranks\"]:
  99. if i == \"P\":
  100. p_amount += 1
  101. print(p_amount)
  102. return p_amount
  103. "
  104. [node name="AchievementMenu" type="Node"]
  105. script = ExtResource("1_85no8")
  106. [node name="BG" type="NinePatchRect" parent="."]
  107. texture_repeat = 2
  108. anchors_preset = 15
  109. anchor_right = 1.0
  110. anchor_bottom = 1.0
  111. grow_horizontal = 2
  112. grow_vertical = 2
  113. theme = ExtResource("1_gq2qe")
  114. texture = ExtResource("2_khc1b")
  115. region_rect = Rect2(48, 0, 16, 16)
  116. axis_stretch_horizontal = 1
  117. axis_stretch_vertical = 1
  118. script = ExtResource("4_85no8")
  119. metadata/_custom_type_script = "uid://xem6lai3ufyj"
  120. [node name="Border" type="NinePatchRect" parent="BG"]
  121. layout_mode = 1
  122. anchors_preset = -1
  123. anchor_left = 0.01
  124. anchor_right = 0.99
  125. anchor_bottom = 1.0
  126. grow_horizontal = 2
  127. grow_vertical = 2
  128. texture = ExtResource("6_25fff")
  129. region_rect = Rect2(32, 32, 32, 32)
  130. patch_margin_left = 8
  131. patch_margin_top = 8
  132. patch_margin_right = 8
  133. patch_margin_bottom = 8
  134. axis_stretch_horizontal = 2
  135. axis_stretch_vertical = 2
  136. script = ExtResource("4_85no8")
  137. metadata/_custom_type_script = "uid://xem6lai3ufyj"
  138. [node name="BG" type="TextureRect" parent="BG/Border"]
  139. show_behind_parent = true
  140. material = SubResource("ShaderMaterial_6w7a6")
  141. layout_mode = 1
  142. anchors_preset = 15
  143. anchor_right = 1.0
  144. anchor_bottom = 1.0
  145. grow_horizontal = 2
  146. grow_vertical = 2
  147. mouse_filter = 2
  148. texture = ExtResource("7_761rq")
  149. stretch_mode = 1
  150. [node name="MarginContainer" type="MarginContainer" parent="BG/Border"]
  151. layout_mode = 1
  152. anchors_preset = 15
  153. anchor_right = 1.0
  154. anchor_bottom = 1.0
  155. grow_horizontal = 2
  156. grow_vertical = 2
  157. mouse_filter = 2
  158. theme_override_constants/margin_left = 9
  159. theme_override_constants/margin_top = 8
  160. theme_override_constants/margin_right = 9
  161. theme_override_constants/margin_bottom = 12
  162. [node name="VBoxContainer" type="VBoxContainer" parent="BG/Border/MarginContainer"]
  163. layout_mode = 2
  164. mouse_filter = 2
  165. theme_override_constants/separation = 0
  166. [node name="Title" type="Label" parent="BG/Border/MarginContainer/VBoxContainer"]
  167. custom_minimum_size = Vector2(0, 24)
  168. layout_mode = 2
  169. text = "MENU_ACHIEVEMENTS"
  170. horizontal_alignment = 1
  171. vertical_alignment = 1
  172. uppercase = true
  173. [node name="HSeparator" type="HSeparator" parent="BG/Border/MarginContainer/VBoxContainer/Title"]
  174. layout_mode = 1
  175. anchors_preset = -1
  176. anchor_top = 1.0
  177. anchor_right = 1.0
  178. anchor_bottom = 1.0
  179. offset_top = -4.0
  180. grow_horizontal = 2
  181. grow_vertical = 0
  182. mouse_filter = 2
  183. theme_override_styles/separator = SubResource("StyleBoxLine_khc1b")
  184. [node name="Progress" type="Label" parent="BG/Border/MarginContainer/VBoxContainer/Title"]
  185. unique_name_in_owner = true
  186. custom_minimum_size = Vector2(0, 24)
  187. layout_mode = 1
  188. anchors_preset = -1
  189. anchor_left = 1.0
  190. anchor_right = 1.0
  191. offset_left = -232.0
  192. offset_right = 4.4400024
  193. offset_bottom = 24.0
  194. grow_horizontal = 0
  195. text = "0% "
  196. horizontal_alignment = 2
  197. vertical_alignment = 1
  198. uppercase = true
  199. [node name="ScrollContainer" type="ScrollContainer" parent="BG/Border/MarginContainer/VBoxContainer"]
  200. layout_mode = 2
  201. size_flags_vertical = 3
  202. mouse_filter = 0
  203. follow_focus = true
  204. horizontal_scroll_mode = 0
  205. [node name="VBoxContainer" type="VBoxContainer" parent="BG/Border/MarginContainer/VBoxContainer/ScrollContainer"]
  206. layout_mode = 2
  207. size_flags_horizontal = 3
  208. size_flags_vertical = 3
  209. mouse_filter = 2
  210. [node name="BGM" type="AudioStreamPlayer" parent="."]
  211. stream = ExtResource("8_khc1b")
  212. bus = &"Music"
  213. [node name="ResourceSetter" type="Node" parent="BGM" node_paths=PackedStringArray("node_to_affect")]
  214. script = ExtResource("8_flkjp")
  215. node_to_affect = NodePath("..")
  216. property_name = "stream"
  217. themed_resource = SubResource("Resource_761rq")
  218. metadata/_custom_type_script = "uid://cq6f682453q6o"
  219. [node name="ProgressCalculators" type="Node" parent="."]
  220. [node name="4" type="Node" parent="ProgressCalculators"]
  221. script = SubResource("GDScript_lqtx1")
  222. target_number = 32
  223. metadata/_custom_type_script = "uid://dwrso5q5r5bak"
  224. [node name="5" type="Node" parent="ProgressCalculators"]
  225. script = SubResource("GDScript_lqtx1")
  226. campaign = "SMBLL"
  227. target_number = 32
  228. metadata/_custom_type_script = "uid://dwrso5q5r5bak"
  229. [node name="6" type="Node" parent="ProgressCalculators"]
  230. script = SubResource("GDScript_lqtx1")
  231. campaign = "SMBS"
  232. target_number = 32
  233. metadata/_custom_type_script = "uid://dwrso5q5r5bak"
  234. [node name="7" type="Node" parent="ProgressCalculators"]
  235. script = SubResource("GDScript_gq2qe")
  236. metadata/_custom_type_script = "uid://dwrso5q5r5bak"
  237. [node name="8" type="Node" parent="ProgressCalculators"]
  238. script = SubResource("GDScript_gq2qe")
  239. campaign = "SMBLL"
  240. metadata/_custom_type_script = "uid://dwrso5q5r5bak"
  241. [node name="9" type="Node" parent="ProgressCalculators"]
  242. script = SubResource("GDScript_gq2qe")
  243. campaign = "SMBS"
  244. metadata/_custom_type_script = "uid://dwrso5q5r5bak"
  245. [node name="10" type="Node" parent="ProgressCalculators"]
  246. script = SubResource("GDScript_khc1b")
  247. metadata/_custom_type_script = "uid://dwrso5q5r5bak"
  248. [node name="11" type="Node" parent="ProgressCalculators"]
  249. script = SubResource("GDScript_khc1b")
  250. campaign = "SMBLL"
  251. metadata/_custom_type_script = "uid://dwrso5q5r5bak"
  252. [node name="12" type="Node" parent="ProgressCalculators"]
  253. script = SubResource("GDScript_khc1b")
  254. campaign = "SMBS"
  255. metadata/_custom_type_script = "uid://dwrso5q5r5bak"
  256. [node name="13" type="Node" parent="ProgressCalculators"]
  257. script = SubResource("GDScript_85no8")
  258. target_number = 36
  259. metadata/_custom_type_script = "uid://dwrso5q5r5bak"
  260. [node name="14" type="Node" parent="ProgressCalculators"]
  261. script = SubResource("GDScript_85no8")
  262. campaign = "SMBLL"
  263. target_number = 39
  264. metadata/_custom_type_script = "uid://dwrso5q5r5bak"
  265. [node name="15" type="Node" parent="ProgressCalculators"]
  266. script = SubResource("GDScript_85no8")
  267. campaign = "SMBS"
  268. target_number = 35
  269. metadata/_custom_type_script = "uid://dwrso5q5r5bak"
  270. [node name="16" type="Node" parent="ProgressCalculators"]
  271. script = SubResource("GDScript_85no8")
  272. medal_index = 1
  273. target_number = 36
  274. metadata/_custom_type_script = "uid://dwrso5q5r5bak"
  275. [node name="17" type="Node" parent="ProgressCalculators"]
  276. script = SubResource("GDScript_85no8")
  277. campaign = "SMBLL"
  278. medal_index = 1
  279. target_number = 39
  280. metadata/_custom_type_script = "uid://dwrso5q5r5bak"
  281. [node name="18" type="Node" parent="ProgressCalculators"]
  282. script = SubResource("GDScript_85no8")
  283. campaign = "SMBS"
  284. medal_index = 1
  285. target_number = 35
  286. metadata/_custom_type_script = "uid://dwrso5q5r5bak"
  287. [node name="19" type="Node" parent="ProgressCalculators"]
  288. script = SubResource("GDScript_85no8")
  289. medal_index = 2
  290. target_number = 36
  291. metadata/_custom_type_script = "uid://dwrso5q5r5bak"
  292. [node name="20" type="Node" parent="ProgressCalculators"]
  293. script = SubResource("GDScript_85no8")
  294. campaign = "SMBLL"
  295. medal_index = 2
  296. target_number = 39
  297. metadata/_custom_type_script = "uid://dwrso5q5r5bak"
  298. [node name="21" type="Node" parent="ProgressCalculators"]
  299. script = SubResource("GDScript_85no8")
  300. campaign = "SMBS"
  301. medal_index = 2
  302. target_number = 35
  303. metadata/_custom_type_script = "uid://dwrso5q5r5bak"
  304. [node name="25" type="Node" parent="ProgressCalculators"]
  305. script = SubResource("GDScript_refm4")
  306. target_number = 32
  307. metadata/_custom_type_script = "uid://dwrso5q5r5bak"
  308. [node name="LabelFontChanger" type="Node" parent="." node_paths=PackedStringArray("labels")]
  309. script = ExtResource("7_khc1b")
  310. labels = [NodePath("../BG/Border/MarginContainer/VBoxContainer/Title/Progress"), NodePath("../BG/Border/MarginContainer/VBoxContainer/Title")]
  311. metadata/_custom_type_script = "uid://co6tjg3w6qpd8"
  312. [connection signal="sprites_updated" from="BGM/ResourceSetter" to="BGM" method="play"]