generated from krampus/template-godot4
	Compare commits
	
		
			2 Commits
		
	
	
		
			37edad916b
			...
			967db4a303
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 967db4a303 | |||
| 45c8194bbd | 
| @ -126,3 +126,11 @@ Asset credits | |||||||
| *** Author: soneproject | *** Author: soneproject | ||||||
| 
 | 
 | ||||||
| *** License: CC BY 3.0 | *** License: CC BY 3.0 | ||||||
|  | 
 | ||||||
|  | ** heal.wav | ||||||
|  | 
 | ||||||
|  | *** Retrieved from https://freesound.org/people/lulyc/sounds/346116/ | ||||||
|  | 
 | ||||||
|  | *** Author: lulyc | ||||||
|  | 
 | ||||||
|  | *** License CC0 | ||||||
|  | |||||||
							
								
								
									
										
											BIN
										
									
								
								asset_dev/particles/health.xcf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								asset_dev/particles/health.xcf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								asset_dev/soda/Soda.png
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								asset_dev/soda/Soda.png
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								asset_dev/soda/Soda.xcf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								asset_dev/soda/Soda.xcf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								asset_dev/soda/soda.blend
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								asset_dev/soda/soda.blend
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								asset_dev/soda/soda.blend1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								asset_dev/soda/soda.blend1
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								assets/models/items/soda/Soda.png
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/models/items/soda/Soda.png
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										34
									
								
								assets/models/items/soda/Soda.png.import
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								assets/models/items/soda/Soda.png.import
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | |||||||
|  | [remap] | ||||||
|  | 
 | ||||||
|  | importer="texture" | ||||||
|  | type="CompressedTexture2D" | ||||||
|  | uid="uid://dboi03l4xicib" | ||||||
|  | path="res://.godot/imported/Soda.png-de28f19d7b13e19defdbdcc490a1e11e.ctex" | ||||||
|  | metadata={ | ||||||
|  | "vram_texture": false | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | [deps] | ||||||
|  | 
 | ||||||
|  | source_file="res://assets/models/items/soda/Soda.png" | ||||||
|  | dest_files=["res://.godot/imported/Soda.png-de28f19d7b13e19defdbdcc490a1e11e.ctex"] | ||||||
|  | 
 | ||||||
|  | [params] | ||||||
|  | 
 | ||||||
|  | compress/mode=0 | ||||||
|  | compress/high_quality=false | ||||||
|  | compress/lossy_quality=0.7 | ||||||
|  | compress/hdr_compression=1 | ||||||
|  | compress/normal_map=0 | ||||||
|  | compress/channel_pack=0 | ||||||
|  | mipmaps/generate=true | ||||||
|  | mipmaps/limit=-1 | ||||||
|  | roughness/mode=0 | ||||||
|  | roughness/src_normal="" | ||||||
|  | process/fix_alpha_border=true | ||||||
|  | process/premult_alpha=false | ||||||
|  | process/normal_map_invert_y=false | ||||||
|  | process/hdr_as_srgb=false | ||||||
|  | process/hdr_clamp_exposure=false | ||||||
|  | process/size_limit=0 | ||||||
|  | detect_3d/compress_to=0 | ||||||
							
								
								
									
										
											BIN
										
									
								
								assets/models/items/soda/soda.bin
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/models/items/soda/soda.bin
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										138
									
								
								assets/models/items/soda/soda.gltf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										138
									
								
								assets/models/items/soda/soda.gltf
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,138 @@ | |||||||
|  | { | ||||||
|  | 	"asset":{ | ||||||
|  | 		"generator":"Khronos glTF Blender I/O v4.2.60", | ||||||
|  | 		"version":"2.0" | ||||||
|  | 	}, | ||||||
|  | 	"scene":0, | ||||||
|  | 	"scenes":[ | ||||||
|  | 		{ | ||||||
|  | 			"name":"Scene", | ||||||
|  | 			"nodes":[ | ||||||
|  | 				0 | ||||||
|  | 			] | ||||||
|  | 		} | ||||||
|  | 	], | ||||||
|  | 	"nodes":[ | ||||||
|  | 		{ | ||||||
|  | 			"mesh":0, | ||||||
|  | 			"name":"Soda" | ||||||
|  | 		} | ||||||
|  | 	], | ||||||
|  | 	"materials":[ | ||||||
|  | 		{ | ||||||
|  | 			"alphaMode":"BLEND", | ||||||
|  | 			"doubleSided":true, | ||||||
|  | 			"name":"Soda", | ||||||
|  | 			"pbrMetallicRoughness":{ | ||||||
|  | 				"baseColorTexture":{ | ||||||
|  | 					"index":0 | ||||||
|  | 				}, | ||||||
|  | 				"metallicFactor":0, | ||||||
|  | 				"roughnessFactor":0.5 | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	], | ||||||
|  | 	"meshes":[ | ||||||
|  | 		{ | ||||||
|  | 			"name":"Cylinder", | ||||||
|  | 			"primitives":[ | ||||||
|  | 				{ | ||||||
|  | 					"attributes":{ | ||||||
|  | 						"POSITION":0, | ||||||
|  | 						"NORMAL":1, | ||||||
|  | 						"TEXCOORD_0":2 | ||||||
|  | 					}, | ||||||
|  | 					"indices":3, | ||||||
|  | 					"material":0 | ||||||
|  | 				} | ||||||
|  | 			] | ||||||
|  | 		} | ||||||
|  | 	], | ||||||
|  | 	"textures":[ | ||||||
|  | 		{ | ||||||
|  | 			"sampler":0, | ||||||
|  | 			"source":0 | ||||||
|  | 		} | ||||||
|  | 	], | ||||||
|  | 	"images":[ | ||||||
|  | 		{ | ||||||
|  | 			"mimeType":"image/png", | ||||||
|  | 			"name":"Soda", | ||||||
|  | 			"uri":"Soda.png" | ||||||
|  | 		} | ||||||
|  | 	], | ||||||
|  | 	"accessors":[ | ||||||
|  | 		{ | ||||||
|  | 			"bufferView":0, | ||||||
|  | 			"componentType":5126, | ||||||
|  | 			"count":42, | ||||||
|  | 			"max":[ | ||||||
|  | 				0.19498558342456818, | ||||||
|  | 				0.25, | ||||||
|  | 				0.18019376695156097 | ||||||
|  | 			], | ||||||
|  | 			"min":[ | ||||||
|  | 				-0.19498558342456818, | ||||||
|  | 				-0.25, | ||||||
|  | 				-0.20000000298023224 | ||||||
|  | 			], | ||||||
|  | 			"type":"VEC3" | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			"bufferView":1, | ||||||
|  | 			"componentType":5126, | ||||||
|  | 			"count":42, | ||||||
|  | 			"type":"VEC3" | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			"bufferView":2, | ||||||
|  | 			"componentType":5126, | ||||||
|  | 			"count":42, | ||||||
|  | 			"type":"VEC2" | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			"bufferView":3, | ||||||
|  | 			"componentType":5123, | ||||||
|  | 			"count":72, | ||||||
|  | 			"type":"SCALAR" | ||||||
|  | 		} | ||||||
|  | 	], | ||||||
|  | 	"bufferViews":[ | ||||||
|  | 		{ | ||||||
|  | 			"buffer":0, | ||||||
|  | 			"byteLength":504, | ||||||
|  | 			"byteOffset":0, | ||||||
|  | 			"target":34962 | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			"buffer":0, | ||||||
|  | 			"byteLength":504, | ||||||
|  | 			"byteOffset":504, | ||||||
|  | 			"target":34962 | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			"buffer":0, | ||||||
|  | 			"byteLength":336, | ||||||
|  | 			"byteOffset":1008, | ||||||
|  | 			"target":34962 | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			"buffer":0, | ||||||
|  | 			"byteLength":144, | ||||||
|  | 			"byteOffset":1344, | ||||||
|  | 			"target":34963 | ||||||
|  | 		} | ||||||
|  | 	], | ||||||
|  | 	"samplers":[ | ||||||
|  | 		{ | ||||||
|  | 			"magFilter":9728, | ||||||
|  | 			"minFilter":9984 | ||||||
|  | 		} | ||||||
|  | 	], | ||||||
|  | 	"buffers":[ | ||||||
|  | 		{ | ||||||
|  | 			"byteLength":1488, | ||||||
|  | 			"uri":"soda.bin" | ||||||
|  | 		} | ||||||
|  | 	] | ||||||
|  | } | ||||||
							
								
								
									
										36
									
								
								assets/models/items/soda/soda.gltf.import
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								assets/models/items/soda/soda.gltf.import
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | |||||||
|  | [remap] | ||||||
|  | 
 | ||||||
|  | importer="scene" | ||||||
|  | importer_version=1 | ||||||
|  | type="PackedScene" | ||||||
|  | uid="uid://sr234l6v26ta" | ||||||
|  | path="res://.godot/imported/soda.gltf-2170d63a99b0c523c4e3c0057027d256.scn" | ||||||
|  | 
 | ||||||
|  | [deps] | ||||||
|  | 
 | ||||||
|  | source_file="res://assets/models/items/soda/soda.gltf" | ||||||
|  | dest_files=["res://.godot/imported/soda.gltf-2170d63a99b0c523c4e3c0057027d256.scn"] | ||||||
|  | 
 | ||||||
|  | [params] | ||||||
|  | 
 | ||||||
|  | nodes/root_type="" | ||||||
|  | nodes/root_name="" | ||||||
|  | nodes/apply_root_scale=true | ||||||
|  | nodes/root_scale=1.0 | ||||||
|  | nodes/import_as_skeleton_bones=false | ||||||
|  | meshes/ensure_tangents=true | ||||||
|  | meshes/generate_lods=true | ||||||
|  | meshes/create_shadow_meshes=true | ||||||
|  | meshes/light_baking=1 | ||||||
|  | meshes/lightmap_texel_size=0.2 | ||||||
|  | meshes/force_disable_compression=false | ||||||
|  | skins/use_named_skins=true | ||||||
|  | animation/import=true | ||||||
|  | animation/fps=30 | ||||||
|  | animation/trimming=false | ||||||
|  | animation/remove_immutable_tracks=true | ||||||
|  | animation/import_rest_as_RESET=false | ||||||
|  | import_script/path="" | ||||||
|  | _subresources={} | ||||||
|  | gltf/naming_version=1 | ||||||
|  | gltf/embedded_image_handling=1 | ||||||
							
								
								
									
										
											BIN
										
									
								
								assets/sound/sfx/player/heal.wav
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/sound/sfx/player/heal.wav
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										24
									
								
								assets/sound/sfx/player/heal.wav.import
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								assets/sound/sfx/player/heal.wav.import
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | |||||||
|  | [remap] | ||||||
|  | 
 | ||||||
|  | importer="wav" | ||||||
|  | type="AudioStreamWAV" | ||||||
|  | uid="uid://csbrinugqepk3" | ||||||
|  | path="res://.godot/imported/heal.wav-f1b0fa8bf42c414c0e735c123bc00fea.sample" | ||||||
|  | 
 | ||||||
|  | [deps] | ||||||
|  | 
 | ||||||
|  | source_file="res://assets/sound/sfx/player/heal.wav" | ||||||
|  | dest_files=["res://.godot/imported/heal.wav-f1b0fa8bf42c414c0e735c123bc00fea.sample"] | ||||||
|  | 
 | ||||||
|  | [params] | ||||||
|  | 
 | ||||||
|  | force/8_bit=false | ||||||
|  | force/mono=false | ||||||
|  | force/max_rate=false | ||||||
|  | force/max_rate_hz=44100 | ||||||
|  | edit/trim=false | ||||||
|  | edit/normalize=false | ||||||
|  | edit/loop_mode=0 | ||||||
|  | edit/loop_begin=0 | ||||||
|  | edit/loop_end=-1 | ||||||
|  | compress/mode=0 | ||||||
							
								
								
									
										
											BIN
										
									
								
								assets/sprites/particles/health.png
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/sprites/particles/health.png
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										34
									
								
								assets/sprites/particles/health.png.import
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								assets/sprites/particles/health.png.import
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | |||||||
|  | [remap] | ||||||
|  | 
 | ||||||
|  | importer="texture" | ||||||
|  | type="CompressedTexture2D" | ||||||
|  | uid="uid://y07v10c8r1s6" | ||||||
|  | path="res://.godot/imported/health.png-c53c1eca35551099e5d2579b37f41427.ctex" | ||||||
|  | metadata={ | ||||||
|  | "vram_texture": false | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | [deps] | ||||||
|  | 
 | ||||||
|  | source_file="res://assets/sprites/particles/health.png" | ||||||
|  | dest_files=["res://.godot/imported/health.png-c53c1eca35551099e5d2579b37f41427.ctex"] | ||||||
|  | 
 | ||||||
|  | [params] | ||||||
|  | 
 | ||||||
|  | compress/mode=0 | ||||||
|  | compress/high_quality=false | ||||||
|  | compress/lossy_quality=0.7 | ||||||
|  | compress/hdr_compression=1 | ||||||
|  | compress/normal_map=0 | ||||||
|  | compress/channel_pack=0 | ||||||
|  | mipmaps/generate=false | ||||||
|  | mipmaps/limit=-1 | ||||||
|  | roughness/mode=0 | ||||||
|  | roughness/src_normal="" | ||||||
|  | process/fix_alpha_border=true | ||||||
|  | process/premult_alpha=false | ||||||
|  | process/normal_map_invert_y=false | ||||||
|  | process/hdr_as_srgb=false | ||||||
|  | process/hdr_clamp_exposure=false | ||||||
|  | process/size_limit=0 | ||||||
|  | detect_3d/compress_to=1 | ||||||
| @ -1,4 +1,4 @@ | |||||||
| [gd_scene load_steps=65 format=3 uid="uid://bm2o3mex10v11"] | [gd_scene load_steps=66 format=3 uid="uid://bm2o3mex10v11"] | ||||||
| 
 | 
 | ||||||
| [ext_resource type="Terrain3DAssets" uid="uid://cwl34gstabgrx" path="res://levels/debug_level/terrain_assets.res" id="1_5smdk"] | [ext_resource type="Terrain3DAssets" uid="uid://cwl34gstabgrx" path="res://levels/debug_level/terrain_assets.res" id="1_5smdk"] | ||||||
| [ext_resource type="Shader" path="res://src/shaders/psx_water.gdshader" id="6_0efu4"] | [ext_resource type="Shader" path="res://src/shaders/psx_water.gdshader" id="6_0efu4"] | ||||||
| @ -8,6 +8,7 @@ | |||||||
| [ext_resource type="Script" path="res://src/world/ball_zone/ball_zone.gd" id="9_jwlau"] | [ext_resource type="Script" path="res://src/world/ball_zone/ball_zone.gd" id="9_jwlau"] | ||||||
| [ext_resource type="PackedScene" uid="uid://dagh38vap4t1d" path="res://src/props/scenery/city/concrete_building_1.tscn" id="10_lf15j"] | [ext_resource type="PackedScene" uid="uid://dagh38vap4t1d" path="res://src/props/scenery/city/concrete_building_1.tscn" id="10_lf15j"] | ||||||
| [ext_resource type="PackedScene" uid="uid://cjubxs7peir5k" path="res://src/props/scenery/city/kana_signboard.tscn" id="11_evxup"] | [ext_resource type="PackedScene" uid="uid://cjubxs7peir5k" path="res://src/props/scenery/city/kana_signboard.tscn" id="11_evxup"] | ||||||
|  | [ext_resource type="PackedScene" uid="uid://1ud01tasevho" path="res://src/items/health/health_item.tscn" id="12_jiuxh"] | ||||||
| [ext_resource type="PackedScene" uid="uid://di7aql54lksn7" path="res://src/props/scenery/trees/palm_tree/palm_tree.tscn" id="12_sswxf"] | [ext_resource type="PackedScene" uid="uid://di7aql54lksn7" path="res://src/props/scenery/trees/palm_tree/palm_tree.tscn" id="12_sswxf"] | ||||||
| [ext_resource type="PackedScene" uid="uid://cjne55s85x7jy" path="res://src/items/extra_ball/brick_item.tscn" id="12_tj0lh"] | [ext_resource type="PackedScene" uid="uid://cjne55s85x7jy" path="res://src/items/extra_ball/brick_item.tscn" id="12_tj0lh"] | ||||||
| [ext_resource type="PackedScene" uid="uid://c7l58wuuahn7w" path="res://src/props/flag/flag.tscn" id="13_6jtao"] | [ext_resource type="PackedScene" uid="uid://c7l58wuuahn7w" path="res://src/props/flag/flag.tscn" id="13_6jtao"] | ||||||
| @ -395,6 +396,14 @@ amount = 5 | |||||||
| spawn_on_ready = true | spawn_on_ready = true | ||||||
| spawn_turns = 1 | spawn_turns = 1 | ||||||
| 
 | 
 | ||||||
|  | [node name="HealthSpawner" type="Marker3D" parent="Course/TestSpawners"] | ||||||
|  | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13.651, 1, 7.92) | ||||||
|  | script = ExtResource("8_5kaye") | ||||||
|  | item = ExtResource("12_jiuxh") | ||||||
|  | amount = 25 | ||||||
|  | spawn_on_ready = true | ||||||
|  | spawn_turns = 1 | ||||||
|  | 
 | ||||||
| [node name="PlayerSpawn1" type="Marker3D" parent="Course" groups=["PlayerSpawn"]] | [node name="PlayerSpawn1" type="Marker3D" parent="Course" groups=["PlayerSpawn"]] | ||||||
| transform = Transform3D(-0.842697, 0, -0.538388, 0, 1, 0, 0.538388, 0, -0.842697, 212.717, 4, 294.073) | transform = Transform3D(-0.842697, 0, -0.538388, 0, 1, 0, 0.538388, 0, -0.842697, 212.717, 4, 294.073) | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										9
									
								
								src/items/health/health_item.gd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/items/health/health_item.gd
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | extends Item | ||||||
|  | ## Item which restores life when picked up. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | func _collect(player: WorldPlayer) -> void: | ||||||
|  | 	player.heal(amount) | ||||||
|  | 
 | ||||||
|  | 	player.shot_setup.hud.peek_life_bar() | ||||||
|  | 	player.shot_setup.hud.life_particles.emit_spatial(amount, global_position) | ||||||
							
								
								
									
										25
									
								
								src/items/health/health_item.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								src/items/health/health_item.tscn
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | |||||||
|  | [gd_scene load_steps=6 format=3 uid="uid://1ud01tasevho"] | ||||||
|  | 
 | ||||||
|  | [ext_resource type="PackedScene" uid="uid://comd88yp45mnb" path="res://src/items/item/item.tscn" id="1_bb232"] | ||||||
|  | [ext_resource type="PackedScene" uid="uid://sr234l6v26ta" path="res://assets/models/items/soda/soda.gltf" id="2_bsxys"] | ||||||
|  | [ext_resource type="Script" path="res://src/items/health/health_item.gd" id="2_rwv0k"] | ||||||
|  | [ext_resource type="Texture2D" uid="uid://dboi03l4xicib" path="res://assets/models/items/soda/Soda.png" id="3_7jrce"] | ||||||
|  | 
 | ||||||
|  | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6ujhj"] | ||||||
|  | albedo_texture = ExtResource("3_7jrce") | ||||||
|  | texture_filter = 2 | ||||||
|  | 
 | ||||||
|  | [node name="HealthItem" instance=ExtResource("1_bb232")] | ||||||
|  | script = ExtResource("2_rwv0k") | ||||||
|  | 
 | ||||||
|  | [node name="Pivot" parent="Pivot/Octahedron/ItemMeshContainer" index="0"] | ||||||
|  | transform = Transform3D(0.99863, 0.052336, 0, -0.052336, 0.99863, 0, 0, 0, 1, 0, 0, 0) | ||||||
|  | 
 | ||||||
|  | [node name="soda" parent="Pivot/Octahedron/ItemMeshContainer/Pivot" index="1" instance=ExtResource("2_bsxys")] | ||||||
|  | transform = Transform3D(1.15911, -0.310583, 0, 0.3, 1.11962, 0.310583, -0.0803848, -0.3, 1.15911, 0, 0, 0) | ||||||
|  | 
 | ||||||
|  | [node name="Soda" parent="Pivot/Octahedron/ItemMeshContainer/Pivot/soda" index="0"] | ||||||
|  | surface_material_override/0 = SubResource("StandardMaterial3D_6ujhj") | ||||||
|  | 
 | ||||||
|  | [editable path="Pivot/Octahedron"] | ||||||
|  | [editable path="Pivot/Octahedron/ItemMeshContainer/Pivot/soda"] | ||||||
| @ -5,7 +5,9 @@ signal on_life_changed(new_value: float) | |||||||
| signal on_balls_changed(type: GameBall.Type, new_value: int) | signal on_balls_changed(type: GameBall.Type, new_value: int) | ||||||
| signal on_death(player: WorldPlayer) | signal on_death(player: WorldPlayer) | ||||||
| 
 | 
 | ||||||
| @export_range(0, 100) var life: float = 100.0: | const MAX_LIFE := 100.0 | ||||||
|  | 
 | ||||||
|  | @export_range(0, MAX_LIFE) var life: float = MAX_LIFE: | ||||||
| 	set(value): | 	set(value): | ||||||
| 		if value != life: | 		if value != life: | ||||||
| 			life = value | 			life = value | ||||||
| @ -89,6 +91,12 @@ func prev_ball(type: GameBall.Type) -> GameBall.Type: | |||||||
| 	return keys[j] | 	return keys[j] | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | ## Restore life up to the MAX_LIFE cap. | ||||||
|  | ## If the player's life is greater than or equal to MAX_LIFE, they will not be healed. | ||||||
|  | func heal(amount: float) -> void: | ||||||
|  | 	life += minf(amount, maxf(MAX_LIFE - life, 0)) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| func die() -> void: | func die() -> void: | ||||||
| 	on_death.emit(self) | 	on_death.emit(self) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -17,6 +17,8 @@ func emit_at_location(_amount: int, source_location: Vector2) -> void: | |||||||
| 
 | 
 | ||||||
| ## Emit the given number of particles from the screen location of the given point in 3D space. | ## Emit the given number of particles from the screen location of the given point in 3D space. | ||||||
| func emit_spatial(_amount: int, source_location: Vector3) -> void: | func emit_spatial(_amount: int, source_location: Vector3) -> void: | ||||||
| 	var screen_location := get_viewport().get_camera_3d().unproject_position(source_location) | 	var screen_location := ( | ||||||
|  | 		get_viewport().get_camera_3d().unproject_position(source_location) - global_position | ||||||
|  | 	) | ||||||
| 	# TODO: what to do if this is outside the viewport? | 	# TODO: what to do if this is outside the viewport? | ||||||
| 	emit_at_location(_amount, screen_location) | 	emit_at_location(_amount, screen_location) | ||||||
|  | |||||||
| @ -7,12 +7,18 @@ const NICE_ALERT_SCENE := preload("res://src/ui/shot_hud/nice_alert.tscn") | |||||||
| const LIFE_BAR_DAMAGE_RUMBLE_SCALE := 0.2 | const LIFE_BAR_DAMAGE_RUMBLE_SCALE := 0.2 | ||||||
| ## Time it takes to dampen the life bar rumble on taking damage, in seconds | ## Time it takes to dampen the life bar rumble on taking damage, in seconds | ||||||
| const LIFE_BAR_DAMAGE_RUMBLE_TIME := 0.2 | const LIFE_BAR_DAMAGE_RUMBLE_TIME := 0.2 | ||||||
|  | ## Time from restoring health to starting to fill the life bar, in seconds | ||||||
|  | const LIFE_BAR_HEAL_DELAY := 0.8 | ||||||
|  | ## Time it takes the life bar to fill when restoring life, in seconds | ||||||
|  | const LIFE_BAR_HEAL_TIME := 1.0 | ||||||
| 
 | 
 | ||||||
| var player: WorldPlayer | var player: WorldPlayer | ||||||
| 
 | 
 | ||||||
| @onready var power_bar: TextureProgressBar = %PowerBar | @onready var power_bar: TextureProgressBar = %PowerBar | ||||||
| @onready var curve_bar: CurveBar = %CurveBar | @onready var curve_bar: CurveBar = %CurveBar | ||||||
|  | 
 | ||||||
| @onready var life_bar: TextureProgressBar = %LifeBar | @onready var life_bar: TextureProgressBar = %LifeBar | ||||||
|  | @onready var life_particles: HUDParticles = %LifeParticles | ||||||
| 
 | 
 | ||||||
| @onready var club_selector: ClubSelector = %ClubSelector | @onready var club_selector: ClubSelector = %ClubSelector | ||||||
| @onready var ball_selector: BallSelector = %BallSelector | @onready var ball_selector: BallSelector = %BallSelector | ||||||
| @ -33,6 +39,8 @@ var player: WorldPlayer | |||||||
| 
 | 
 | ||||||
| @onready var _life_bar_rumbler: Rumbler = %LifeBarRumbler | @onready var _life_bar_rumbler: Rumbler = %LifeBarRumbler | ||||||
| 
 | 
 | ||||||
|  | @onready var _heal_sfx: AudioStreamPlayer = %HealSFX | ||||||
|  | 
 | ||||||
| static var scene: PackedScene = preload("res://src/ui/shot_hud/shot_hud.tscn") | static var scene: PackedScene = preload("res://src/ui/shot_hud/shot_hud.tscn") | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -125,11 +133,15 @@ func set_life_value(new_value: float) -> void: | |||||||
| 			. tween_property(_life_bar_rumbler, "intensity", 0, LIFE_BAR_DAMAGE_RUMBLE_TIME) | 			. tween_property(_life_bar_rumbler, "intensity", 0, LIFE_BAR_DAMAGE_RUMBLE_TIME) | ||||||
| 			. set_trans(Tween.TRANS_CUBIC) | 			. set_trans(Tween.TRANS_CUBIC) | ||||||
| 		) | 		) | ||||||
|  | 		life_bar.value = new_value | ||||||
| 	elif difference > 0: | 	elif difference > 0: | ||||||
| 		# Restoring health | 		# Restoring health | ||||||
| 		# TODO: something for this? | 		var tween := get_tree().create_tween() | ||||||
| 		pass | 		tween.tween_interval(LIFE_BAR_HEAL_DELAY) | ||||||
| 	life_bar.value = new_value | 		tween.tween_callback(_heal_sfx.play) | ||||||
|  | 		tween.tween_property(life_bar, "value", new_value, LIFE_BAR_HEAL_TIME).set_trans( | ||||||
|  | 			Tween.TRANS_CUBIC | ||||||
|  | 		) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| static func create(_player: WorldPlayer) -> ShotHUD: | static func create(_player: WorldPlayer) -> ShotHUD: | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| [gd_scene load_steps=44 format=3 uid="uid://c4ifdiohng830"] | [gd_scene load_steps=46 format=3 uid="uid://c4ifdiohng830"] | ||||||
| 
 | 
 | ||||||
| [ext_resource type="Script" path="res://src/ui/shot_hud/shot_hud.gd" id="1_x5b4c"] | [ext_resource type="Script" path="res://src/ui/shot_hud/shot_hud.gd" id="1_x5b4c"] | ||||||
| [ext_resource type="Shader" path="res://src/shaders/canvas_retro.gdshader" id="1_ybxxp"] | [ext_resource type="Shader" path="res://src/shaders/canvas_retro.gdshader" id="1_ybxxp"] | ||||||
| @ -15,6 +15,8 @@ | |||||||
| [ext_resource type="PackedScene" uid="uid://dfh0bv7lwewj5" path="res://src/ui/decorations/hud_particles/hud_particles.tscn" id="11_ie5ih"] | [ext_resource type="PackedScene" uid="uid://dfh0bv7lwewj5" path="res://src/ui/decorations/hud_particles/hud_particles.tscn" id="11_ie5ih"] | ||||||
| [ext_resource type="Texture2D" uid="uid://dtsdecae83ah3" path="res://assets/sprites/particles/ball.png" id="12_fdbqt"] | [ext_resource type="Texture2D" uid="uid://dtsdecae83ah3" path="res://assets/sprites/particles/ball.png" id="12_fdbqt"] | ||||||
| [ext_resource type="PackedScene" uid="uid://b47goj32i6sdh" path="res://src/ui/elements/input_prompt/input_prompt.tscn" id="14_ik4gg"] | [ext_resource type="PackedScene" uid="uid://b47goj32i6sdh" path="res://src/ui/elements/input_prompt/input_prompt.tscn" id="14_ik4gg"] | ||||||
|  | [ext_resource type="Texture2D" uid="uid://y07v10c8r1s6" path="res://assets/sprites/particles/health.png" id="15_eyqdi"] | ||||||
|  | [ext_resource type="AudioStream" uid="uid://csbrinugqepk3" path="res://assets/sound/sfx/player/heal.wav" id="16_pub5c"] | ||||||
| 
 | 
 | ||||||
| [sub_resource type="Animation" id="Animation_2gt87"] | [sub_resource type="Animation" id="Animation_2gt87"] | ||||||
| resource_name = "RESET" | resource_name = "RESET" | ||||||
| @ -798,6 +800,26 @@ script = ExtResource("3_6groq") | |||||||
| unique_name_in_owner = true | unique_name_in_owner = true | ||||||
| layout_mode = 1 | layout_mode = 1 | ||||||
| 
 | 
 | ||||||
|  | [node name="ParticleContainer" type="Control" parent="SouthWest/VBoxContainer/MarginContainer/LifeBarRumbler/LifeBar"] | ||||||
|  | layout_mode = 1 | ||||||
|  | anchors_preset = 8 | ||||||
|  | anchor_left = 0.5 | ||||||
|  | anchor_top = 0.5 | ||||||
|  | anchor_right = 0.5 | ||||||
|  | anchor_bottom = 0.5 | ||||||
|  | grow_horizontal = 2 | ||||||
|  | grow_vertical = 2 | ||||||
|  | 
 | ||||||
|  | [node name="LifeParticles" parent="SouthWest/VBoxContainer/MarginContainer/LifeBarRumbler/LifeBar/ParticleContainer" instance=ExtResource("11_ie5ih")] | ||||||
|  | unique_name_in_owner = true | ||||||
|  | texture = ExtResource("15_eyqdi") | ||||||
|  | 
 | ||||||
|  | [node name="HealSFX" type="AudioStreamPlayer" parent="SouthWest/VBoxContainer/MarginContainer/LifeBarRumbler/LifeBar"] | ||||||
|  | unique_name_in_owner = true | ||||||
|  | stream = ExtResource("16_pub5c") | ||||||
|  | volume_db = -8.0 | ||||||
|  | bus = &"SFX" | ||||||
|  | 
 | ||||||
| [node name="SWAnimation" type="AnimationPlayer" parent="SouthWest"] | [node name="SWAnimation" type="AnimationPlayer" parent="SouthWest"] | ||||||
| unique_name_in_owner = true | unique_name_in_owner = true | ||||||
| root_node = NodePath("../..") | root_node = NodePath("../..") | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ class_name PlayManager extends Resource | |||||||
| ## Abstract base type for strategies to manage the flow of gameplay | ## Abstract base type for strategies to manage the flow of gameplay | ||||||
| 
 | 
 | ||||||
| ## Emitted at the start of each new turn | ## Emitted at the start of each new turn | ||||||
|  | @warning_ignore("unused_signal") | ||||||
| signal turn_started(player: WorldPlayer) | signal turn_started(player: WorldPlayer) | ||||||
| 
 | 
 | ||||||
| ## List of game player instances | ## List of game player instances | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user