diff --git a/Enemies/BabyEyeDog/baby_eye_dog.tres b/Enemies/BabyEyeDog/baby_eye_dog.tres index 69dda1f..3025a18 100644 --- a/Enemies/BabyEyeDog/baby_eye_dog.tres +++ b/Enemies/BabyEyeDog/baby_eye_dog.tres @@ -10,8 +10,8 @@ script = ExtResource("1_k5sd1") title = "ENEMY_FAST_BABY" target_type = 1 -scene = ExtResource("3_otbdk") icon = ExtResource("1_xgen5") +scene = ExtResource("3_otbdk") death_sprite = ExtResource("1_yj87d") sprite = ExtResource("2_mkbm6") spawn_power = 16 diff --git a/Enemies/BabyEyeDog/baby_eye_dog.tscn b/Enemies/BabyEyeDog/baby_eye_dog.tscn index 1c08c46..dd2f98a 100644 --- a/Enemies/BabyEyeDog/baby_eye_dog.tscn +++ b/Enemies/BabyEyeDog/baby_eye_dog.tscn @@ -1,7 +1,6 @@ [gd_scene format=3 uid="uid://dtahuv0kpxx03"] [ext_resource type="Script" uid="uid://ejqql2660u6h" path="res://Worlds/GreenPlanet/Enemies/enemy_controller.gd" id="1_8k5ts"] -[ext_resource type="Resource" uid="uid://cvehqh4tt28g7" path="res://Enemies/BabyEyeDog/baby_eye_dog.tres" id="2_8v4n0"] [ext_resource type="PackedScene" uid="uid://canrxnpxcugc2" path="res://Scenes/corpse.tscn" id="2_vl30x"] [ext_resource type="Script" uid="uid://cummt2be3r1gq" path="res://Scripts/hitbox.gd" id="5_f7xim"] [ext_resource type="Texture2D" uid="uid://b1fn60m6xfcsq" path="res://Assets/Textures/minimap_enemy.png" id="6_lbm5h"] @@ -23,7 +22,6 @@ viewport_path = NodePath("SubViewport") collision_layer = 4 collision_mask = 0 script = ExtResource("1_8k5ts") -stats = ExtResource("2_8v4n0") status_manager = NodePath("StatusEffector") movement_controller = NodePath("PathingController") d_n = NodePath("Node3D") diff --git a/Enemies/Crystalisk/crystal_enemy.tscn b/Enemies/Crystalisk/crystal_enemy.tscn index d8e4a2c..df0e047 100644 --- a/Enemies/Crystalisk/crystal_enemy.tscn +++ b/Enemies/Crystalisk/crystal_enemy.tscn @@ -2,10 +2,9 @@ [ext_resource type="PackedScene" uid="uid://bjo2q6vca5qlv" path="res://Worlds/GreenPlanet/Enemies/air_enemy.tscn" id="1_aormu"] [ext_resource type="PackedScene" uid="uid://o6whohcbalui" path="res://Enemies/Crystalisk/crystal_enemy.glb" id="2_myjng"] -[ext_resource type="Resource" uid="uid://bffhb5krs5elm" path="res://Enemies/Crystalisk/crystalisk.tres" id="2_s62t3"] [ext_resource type="Script" uid="uid://cummt2be3r1gq" path="res://Scripts/hitbox.gd" id="3_myjng"] -[sub_resource type="ViewportTexture" id="ViewportTexture_tjipw"] +[sub_resource type="ViewportTexture" id="ViewportTexture_ij8ev"] viewport_path = NodePath("SubViewport") [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_c5uwa"] @@ -17,10 +16,9 @@ radius = 0.133503 height = 0.56 [node name="Dog" unique_id=1355419805 instance=ExtResource("1_aormu")] -stats = ExtResource("2_s62t3") [node name="Sprite3D" parent="." index="0" unique_id=2020998819] -texture = SubResource("ViewportTexture_tjipw") +texture = SubResource("ViewportTexture_ij8ev") [node name="crystal_enemy" parent="." index="6" unique_id=86826412 instance=ExtResource("2_myjng")] diff --git a/Enemies/Crystalisk/crystalisk.tres b/Enemies/Crystalisk/crystalisk.tres index 8f764d6..1dafda5 100644 --- a/Enemies/Crystalisk/crystalisk.tres +++ b/Enemies/Crystalisk/crystalisk.tres @@ -2,7 +2,7 @@ [ext_resource type="Texture2D" uid="uid://b1lwaxw62yp3p" path="res://Assets/Textures/dead_spike.png" id="1_skyfd"] [ext_resource type="Texture2D" uid="uid://duywsy7jmh4u" path="res://Assets/Textures/spike.png" id="2_idym2"] -[ext_resource type="PackedScene" uid="uid://cveiaa0y66gln" path="res://Enemies/Crystalisk/crystal_enemy.tscn" id="3_7w5fm"] +[ext_resource type="PackedScene" uid="uid://cveiaa0y66gln" path="res://Enemies/Crystalisk/crystal_enemy.tscn" id="3_fmkhl"] [ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="4_x2l2n"] [ext_resource type="Texture2D" uid="uid://sybn6bjbj5fh" path="res://Assets/TextureAtlases/spike.tres" id="5_okcvf"] @@ -10,8 +10,8 @@ script = ExtResource("4_x2l2n") title = "ENEMY_FLYING_CRYSTAL" target_type = 2 -scene = ExtResource("3_7w5fm") icon = ExtResource("2_idym2") +scene = ExtResource("3_fmkhl") death_sprite = ExtResource("1_skyfd") sprite = ExtResource("5_okcvf") spawn_power = 6 diff --git a/Enemies/ElderEyeDog/elder_eye_dog.tres b/Enemies/ElderEyeDog/elder_eye_dog.tres index 453920f..89f6e2c 100644 --- a/Enemies/ElderEyeDog/elder_eye_dog.tres +++ b/Enemies/ElderEyeDog/elder_eye_dog.tres @@ -10,8 +10,8 @@ script = ExtResource("1_q48il") title = "ENEMY_HEAVY_WALKER" target_type = 1 -scene = ExtResource("3_m808b") icon = ExtResource("1_lck53") +scene = ExtResource("3_m808b") death_sprite = ExtResource("1_qveaa") sprite = ExtResource("2_7nc4x") spawn_power = 14 diff --git a/Enemies/ElderEyeDog/elder_eye_dog.tscn b/Enemies/ElderEyeDog/elder_eye_dog.tscn index b17d89d..7de085a 100644 --- a/Enemies/ElderEyeDog/elder_eye_dog.tscn +++ b/Enemies/ElderEyeDog/elder_eye_dog.tscn @@ -2,7 +2,6 @@ [ext_resource type="Script" uid="uid://ejqql2660u6h" path="res://Worlds/GreenPlanet/Enemies/enemy_controller.gd" id="1_17xxt"] [ext_resource type="PackedScene" uid="uid://canrxnpxcugc2" path="res://Scenes/corpse.tscn" id="2_lirjc"] -[ext_resource type="Resource" uid="uid://dxi17xvdlhkvc" path="res://Enemies/ElderEyeDog/elder_eye_dog.tres" id="2_qqld3"] [ext_resource type="Script" uid="uid://cummt2be3r1gq" path="res://Scripts/hitbox.gd" id="5_bi7k0"] [ext_resource type="Texture2D" uid="uid://b1fn60m6xfcsq" path="res://Assets/Textures/minimap_enemy.png" id="6_k6khd"] [ext_resource type="PackedScene" uid="uid://hjq3nrnumklp" path="res://UI/EnemyHealthBar/health_bar.tscn" id="7_wko6w"] @@ -23,7 +22,6 @@ viewport_path = NodePath("SubViewport") collision_layer = 4 collision_mask = 0 script = ExtResource("1_17xxt") -stats = ExtResource("2_qqld3") status_manager = NodePath("StatusEffector") movement_controller = NodePath("PathingController") d_n = NodePath("Node3D") diff --git a/Enemies/EyeDog/eye_dog.tres b/Enemies/EyeDog/eye_dog.tres index 7158cf0..dc7d721 100644 --- a/Enemies/EyeDog/eye_dog.tres +++ b/Enemies/EyeDog/eye_dog.tres @@ -3,7 +3,7 @@ [ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_ivs7a"] [ext_resource type="Texture2D" uid="uid://cdnhe2mi5c5ln" path="res://Assets/Textures/dead_eye_dog.png" id="1_r8gpy"] [ext_resource type="Texture2D" uid="uid://g00wwrlxxdc5" path="res://Assets/Textures/icon_eye_dog.png" id="2_tyyee"] -[ext_resource type="PackedScene" uid="uid://bvq6tbkuv2mfp" path="res://Enemies/EyeDog/eye_dog.tscn" id="3_tyyee"] +[ext_resource type="PackedScene" uid="uid://bvq6tbkuv2mfp" path="res://Enemies/EyeDog/eye_dog.tscn" id="3_mxg1o"] [ext_resource type="Texture2D" uid="uid://dj13g1w14mekw" path="res://Assets/Textures/eye_dog.png" id="4_7ypa6"] [sub_resource type="AtlasTexture" id="AtlasTexture_n6kdu"] @@ -16,8 +16,8 @@ resource_local_to_scene = true script = ExtResource("1_ivs7a") title = "ENEMY_DOG" target_type = 1 -scene = ExtResource("3_tyyee") icon = ExtResource("2_tyyee") +scene = ExtResource("3_mxg1o") death_sprite = ExtResource("1_r8gpy") sprite = SubResource("AtlasTexture_n6kdu") health = 180 diff --git a/Enemies/EyeDog/eye_dog.tscn b/Enemies/EyeDog/eye_dog.tscn index ddabe77..0097056 100644 --- a/Enemies/EyeDog/eye_dog.tscn +++ b/Enemies/EyeDog/eye_dog.tscn @@ -2,7 +2,6 @@ [ext_resource type="Script" uid="uid://ejqql2660u6h" path="res://Worlds/GreenPlanet/Enemies/enemy_controller.gd" id="1_1dh2f"] [ext_resource type="PackedScene" uid="uid://canrxnpxcugc2" path="res://Scenes/corpse.tscn" id="2_1dh2f"] -[ext_resource type="Resource" uid="uid://8eba45hql7bo" path="res://Enemies/EyeDog/eye_dog.tres" id="2_2t2qp"] [ext_resource type="Script" uid="uid://cummt2be3r1gq" path="res://Scripts/hitbox.gd" id="6_3v8fr"] [ext_resource type="Texture2D" uid="uid://b1fn60m6xfcsq" path="res://Assets/Textures/minimap_enemy.png" id="7_bkkhh"] [ext_resource type="PackedScene" uid="uid://hjq3nrnumklp" path="res://UI/EnemyHealthBar/health_bar.tscn" id="8_k2835"] @@ -10,11 +9,11 @@ [ext_resource type="PackedScene" uid="uid://dlhx6r23m5ceg" path="res://Enemies/EyeDog/eyedog.glb" id="10_h25mw"] [ext_resource type="Script" uid="uid://cojjgevmbhwal" path="res://Scripts/status_effector.gd" id="11_kpdsm"] -[sub_resource type="SphereShape3D" id="SphereShape3D_cavbv"] -radius = 0.359969 +[sub_resource type="BoxShape3D" id="BoxShape3D_246sn"] +size = Vector3(0.58, 0.67, 0.92) [sub_resource type="SphereShape3D" id="SphereShape3D_h25mw"] -radius = 0.194271 +radius = 0.25 [sub_resource type="ViewportTexture" id="ViewportTexture_1kwxq"] viewport_path = NodePath("SubViewport") @@ -23,7 +22,6 @@ viewport_path = NodePath("SubViewport") collision_layer = 4 collision_mask = 0 script = ExtResource("1_1dh2f") -stats = ExtResource("2_2t2qp") status_manager = NodePath("StatusEffector") movement_controller = NodePath("PathingController") d_n = NodePath("Node3D") @@ -32,12 +30,12 @@ metadata/_custom_type_script = "uid://ejqql2660u6h" [node name="Hitbox" type="CollisionShape3D" parent="." unique_id=1815903905] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.33811, -0.0104714) -shape = SubResource("SphereShape3D_cavbv") +shape = SubResource("BoxShape3D_246sn") script = ExtResource("6_3v8fr") metadata/_custom_type_script = "uid://cummt2be3r1gq" [node name="Hitbox2" type="CollisionShape3D" parent="." unique_id=906346229] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.559695, -0.45924) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.9604645e-08, 0.73585325, -0.58485436) shape = SubResource("SphereShape3D_h25mw") script = ExtResource("6_3v8fr") critical_zone = true @@ -115,7 +113,7 @@ bones/23/scale = Vector3(0.89347196, 1, 1) bones/24/position = Vector3(0.08454189, 0.014853473, 0.12984678) [node name="AnimationPlayer" parent="eyedog" index="1" unique_id=993841819] -autoplay = &"Walk" +autoplay = &"ArmatureAction" [connection signal="recieved_effect" from="Hitbox" to="StatusEffector" method="add_effect"] [connection signal="took_damage" from="Hitbox" to="." method="take_damage"] diff --git a/PCs/FSM/building_state.gd b/PCs/FSM/building_state.gd index bc40848..24afc57 100644 --- a/PCs/FSM/building_state.gd +++ b/PCs/FSM/building_state.gd @@ -5,8 +5,9 @@ extends HeroState func enter_state() -> void: + if hero.game_manager: + hero.game_manager.level.enable_non_path_tower_frames() hero.edit_tool.enabled = true - hero.game_manager.level.enable_non_path_tower_frames() hero.left_hand_model.visible = true hero.gauntlet_model.visible = true hero.cassette.visible = false diff --git a/PCs/hero.gd b/PCs/hero.gd index 67e2eaa..67b2cf3 100644 --- a/PCs/hero.gd +++ b/PCs/hero.gd @@ -100,7 +100,7 @@ func _ready() -> void: sprite.queue_free() player_name_tag.queue_free() for card: Card in hero_class.deck: - if game_manager.card_gameplay: + if game_manager and game_manager.card_gameplay: draw_pile.add(card) else: add_card(card) @@ -239,7 +239,6 @@ func set_card_elements_visibility(value: bool) -> void: else: hud.hide_hot_wheel() hud.hide_slots() - $FirstPersonViewport/Head2/LeftHand.visible = value func _unhandled_input(event: InputEvent) -> void: @@ -248,9 +247,10 @@ func _unhandled_input(event: InputEvent) -> void: if event.is_action_pressed("Pause"): var menu: PauseMenu = pause_menu_scene.instantiate() as PauseMenu pause() - menu.game_manager = game_manager - menu.quit_to_desktop_pressed.connect(game_manager.quit_to_desktop) - menu.quit_to_main_menu_pressed.connect(game_manager.scene_switch_main_menu) + if game_manager: + menu.game_manager = game_manager + menu.quit_to_desktop_pressed.connect(game_manager.quit_to_desktop) + menu.quit_to_main_menu_pressed.connect(game_manager.scene_switch_main_menu) menu.closed.connect(unpause) hud.add_child(menu) if event.is_action_pressed("Show Wave Preview"): diff --git a/PCs/hero.tscn b/PCs/hero.tscn index ee4d703..bebdca8 100644 --- a/PCs/hero.tscn +++ b/PCs/hero.tscn @@ -16,7 +16,6 @@ [ext_resource type="Script" uid="uid://b6kjrl7ae1mi0" path="res://PCs/hud.gd" id="8_yl6ka"] [ext_resource type="Script" uid="uid://hy51bq7x0fy8" path="res://Scripts/on_top_camera.gd" id="11_4sdwe"] [ext_resource type="PackedScene" uid="uid://rc0qcrcbmw7p" path="res://Gauntlet/gauntlet.glb" id="11_h1yfy"] -[ext_resource type="PackedScene" uid="uid://ckl5tw5rmewhp" path="res://left_hand/card_hand_model.glb" id="11_h82f6"] [ext_resource type="Script" uid="uid://ckkioruqgbs8p" path="res://Scripts/minimap_cam.gd" id="12_3hpi3"] [ext_resource type="PackedScene" uid="uid://clgbmveluyewe" path="res://card_hand.glb" id="12_r2yb6"] [ext_resource type="PackedScene" uid="uid://4g0vatb73duj" path="res://Scenes/Cassette/cassette.glb" id="13_7immr"] @@ -168,7 +167,7 @@ wave_preview_scene = ExtResource("2_o55s8") hero_class = ExtResource("2_dbyo0") camera = NodePath("ViewMovement/Head") gun_camera = NodePath("FirstPersonViewport/Head2") -left_hand = NodePath("FirstPersonViewport/Head2/LeftHand") +left_hand = NodePath("FirstPersonViewport/Head2/RightHand/card_hand") right_hand = NodePath("FirstPersonViewport/Head2/RightHand") edit_tool = NodePath("ViewMovement/Head/EditTool") carding_tool = NodePath("ViewMovement/Head/CardPlacingTool") @@ -349,18 +348,6 @@ tree_root = SubResource("AnimationNodeBlendTree_xav2s") anim_player = NodePath("../card_hand/AnimationPlayer") parameters/Blend2/blend_amount = 0.0 -[node name="LeftHand" type="Node3D" parent="FirstPersonViewport/Head2" unique_id=117309443] -transform = Transform3D(0.235, 0, 0, 0, 0.235, 0, 0, 0, 0.235, -0.645, -0.26, -1.04) - -[node name="card_hand_model" parent="FirstPersonViewport/Head2/LeftHand" unique_id=141858112 instance=ExtResource("11_h82f6")] -transform = Transform3D(-4.16989, -0.848374, -3.61733e-07, -0.824933, 4.05468, -0.993384, 0.198049, -0.973442, -4.13774, 1.56596, 0.519149, 3.37051) - -[node name="Body_004" parent="FirstPersonViewport/Head2/LeftHand/card_hand_model/Armature/Skeleton3D" parent_id_path=PackedInt32Array(141858112, 1120957052) index="0" unique_id=1372468431] -layers = 2 - -[node name="Cards" type="Node3D" parent="FirstPersonViewport/Head2/LeftHand" unique_id=140136041] -transform = Transform3D(4.25532, 0, 0, 0, 4.25532, 0, 0, 0, 4.25532, 2.01277, 0.787234, 3.39179) - [node name="MiniMapViewport" type="SubViewport" parent="." unique_id=384727742] size = Vector2i(256, 256) render_target_update_mode = 4 @@ -970,5 +957,4 @@ size = 2.243 [editable path="FirstPersonViewport/Head2/RightHand/gauntlet"] [editable path="FirstPersonViewport/Head2/RightHand/card_hand"] [editable path="FirstPersonViewport/Head2/RightHand/card_hand/Empty_001/cassette"] -[editable path="FirstPersonViewport/Head2/LeftHand/card_hand_model"] [editable path="CoinViewport/Coin"] diff --git a/PCs/hud.gd b/PCs/hud.gd index 3586fd2..29d1c96 100644 --- a/PCs/hud.gd +++ b/PCs/hud.gd @@ -44,7 +44,7 @@ var enemy_count: int = 0 func _ready() -> void: $StartWaveLabel.theme_type_variation = "WaveStartLabel" $InteractLabel.theme_type_variation = "InteractLabel" - if player.game_manager.card_gameplay: + if player.game_manager and player.game_manager.card_gameplay: energy_label.visible = true diff --git a/Scenes/Cassette/cassette_mat.tres b/Scenes/Cassette/cassette_mat.tres index 836861f..12fcd27 100644 --- a/Scenes/Cassette/cassette_mat.tres +++ b/Scenes/Cassette/cassette_mat.tres @@ -1,7 +1,12 @@ [gd_resource type="ShaderMaterial" format=3 uid="uid://d224ea5fdnmh2"] -[ext_resource type="Shader" uid="uid://c5bffujq0l70k" path="res://Shaders/jitter.gdshader" id="1_j6syw"] +[ext_resource type="Shader" uid="uid://dq04j2s5foo2f" path="res://Shaders/mightyduke_ps1.gdshader" id="1_6ajq0"] +[ext_resource type="Texture2D" uid="uid://epo8me1kxpba" path="res://Scenes/Cassette/cassette_cassette_tex.png" id="2_iy75q"] [resource] render_priority = 0 -shader = ExtResource("1_j6syw") +shader = ExtResource("1_6ajq0") +shader_parameter/albedo = ExtResource("2_iy75q") +shader_parameter/jitter_z_coordinate = true +shader_parameter/jitter_depth_independent = true +shader_parameter/alpha_scissor = 1.0 diff --git a/Scripts/EnemyAI/beelining_controller.gd b/Scripts/EnemyAI/beelining_controller.gd index 1536b99..9591773 100644 --- a/Scripts/EnemyAI/beelining_controller.gd +++ b/Scripts/EnemyAI/beelining_controller.gd @@ -6,11 +6,15 @@ var direction: Vector3 func _ready() -> void: - distance_remaining = character.global_position.distance_to(goal.global_position) - direction = character.global_position.direction_to(goal.global_position) + super._ready() + if goal: + distance_remaining = character.global_position.distance_to(goal.global_position) + direction = character.global_position.direction_to(goal.global_position) func _physics_process(delta: float) -> void: + if !direction: + return var distance_travelled: float = (character.stats.movement_speed * clampf(character.movement_speed_penalty, 0.0, 1.0)) * delta distance_remaining -= distance_travelled character.global_position = character.global_position + (direction * distance_travelled) diff --git a/Scripts/EnemyAI/pathing_controller.gd b/Scripts/EnemyAI/pathing_controller.gd index e376bc8..1ebafaf 100644 --- a/Scripts/EnemyAI/pathing_controller.gd +++ b/Scripts/EnemyAI/pathing_controller.gd @@ -24,10 +24,9 @@ var next_pos: Vector3 func _ready() -> void: super._ready() - #if path: - # distance_remaining = path.get_baked_length() - next_node = flow_field.get_closest_traversable_point(character.global_position) - distance_remaining += calculate_distance_to_goal(next_node) + if flow_field: + next_node = flow_field.get_closest_traversable_point(character.global_position) + distance_remaining += calculate_distance_to_goal(next_node) func calculate_distance_to_goal(node: FlowNode) -> float: diff --git a/Scripts/Resources/enemy.gd b/Scripts/Resources/enemy.gd index 2cce924..308c0cd 100644 --- a/Scripts/Resources/enemy.gd +++ b/Scripts/Resources/enemy.gd @@ -4,8 +4,8 @@ extends Resource @export var title: String = "enemy name goes here" @export var description: String = "enemy description goes here" @export var target_type: Data.EnemyType -@export var scene: PackedScene @export var icon: Texture +@export var scene: PackedScene @export var death_sprite: Texture @export var sprite: AtlasTexture @export var spawn_power: int = 10 diff --git a/Scripts/Resources/player_graphics_settings.gd b/Scripts/Resources/player_graphics_settings.gd index fce0e6f..d15e2b0 100644 --- a/Scripts/Resources/player_graphics_settings.gd +++ b/Scripts/Resources/player_graphics_settings.gd @@ -7,6 +7,8 @@ const SAVE_PATH: String = "user://graphics_settings.tres" @export var vsync_mode: int = 1 @export var aa_mode: int = 0 @export var windowed_mode: int = 0 +@export var vertex_jitter: float = 0.2 +@export var affine_warping: float = 1.0 func apply_graphical_settings(viewport: Viewport) -> void: @@ -28,6 +30,8 @@ func apply_graphical_settings(viewport: Viewport) -> void: DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN) 2: DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN) + RenderingServer.global_shader_parameter_set("vertex_jitter", vertex_jitter) + RenderingServer.global_shader_parameter_set("affine_amount", affine_warping) func save_profile_to_disk() -> void: diff --git a/Scripts/enemy_spawner.gd b/Scripts/enemy_spawner.gd index 771a294..3c562dd 100644 --- a/Scripts/enemy_spawner.gd +++ b/Scripts/enemy_spawner.gd @@ -44,12 +44,12 @@ func _process(delta: float) -> void: if enemy_spawn_timers[enemy] >= enemy.spawn_cooldown: if is_multiplayer_authority(): if type == Data.EnemyType.LAND: - networked_spawn_land_enemy.rpc(enemy.title, own_id, enemy_id) + networked_spawn_land_enemy.rpc(game_manager.level.enemy_pool.find(enemy), own_id, enemy_id) if type == Data.EnemyType.AIR: var radius: float = 10.0 var random_dir: Vector3 = Vector3(randf_range(-1, 1), randf_range(-1, 1), randf_range(-1, 1)) var random_pos: Vector3 = randf_range(0, radius) * random_dir.normalized() - networked_spawn_air_enemy.rpc(enemy.title, random_pos, own_id, enemy_id) + networked_spawn_air_enemy.rpc(game_manager.level.enemy_pool.find(enemy), random_pos, own_id, enemy_id) enemy_spawn_timers[enemy] -= enemy.spawn_cooldown enemy_spawned.emit() @@ -60,16 +60,12 @@ func _process(delta: float) -> void: #TODO: not sure enemies need all this info over the network @rpc("reliable", "call_local") -func networked_spawn_land_enemy(enemy_stats: String, id1: int, id2: int) -> void: - var e_stats: Enemy = null - for enemy: Enemy in game_manager.level.enemy_pool: - if enemy.title == enemy_stats: - e_stats = enemy +func networked_spawn_land_enemy(enemy_num: int, id1: int, id2: int) -> void: var enemy: EnemyController - enemy = e_stats.scene.instantiate() + enemy = game_manager.level.enemy_pool[enemy_num].scene.instantiate() + enemy.stats = game_manager.level.enemy_pool[enemy_num] enemy.corpse_root = game_manager.level.corpses enemy.name = str(id1) + str(id2) - enemy.stats = e_stats enemy.died.connect(enemy_died_callback) enemy.reached_goal.connect(enemy_reached_goal_callback) #enemy.movement_controller.path = path.curve @@ -107,17 +103,13 @@ func update_path() -> void: @rpc("reliable", "call_local") -func networked_spawn_air_enemy(enemy_stats: String, pos: Vector3, id1: int, id2: int) -> void: - var e_stats: Enemy = null - for enemy: Enemy in game_manager.level.enemy_pool: - if enemy.title == enemy_stats: - e_stats = enemy +func networked_spawn_air_enemy(enemy_num: int, pos: Vector3, id1: int, id2: int) -> void: var enemy: EnemyController - enemy = e_stats.scene.instantiate() + enemy = game_manager.level.enemy_pool[enemy_num].scene.instantiate() + enemy.stats = game_manager.level.enemy_pool[enemy_num] enemy.corpse_root = game_manager.level.corpses enemy.name = str(id1) + str(id2) enemy.position = pos + global_position - enemy.stats = e_stats enemy.died.connect(enemy_died_callback) enemy.reached_goal.connect(enemy_reached_goal_callback) enemy.movement_controller.goal = dest diff --git a/Scripts/scoreboard.gd b/Scripts/scoreboard.gd index 361b10f..6b43423 100644 --- a/Scripts/scoreboard.gd +++ b/Scripts/scoreboard.gd @@ -3,7 +3,7 @@ extends PanelContainer signal all_players_ready() -var entry_scene: PackedScene = preload("res://Scenes/UI/scoreboard_entry.tscn") +var entry_scene: PackedScene = preload("res://UI/scoreboard_entry.tscn") var entries: Dictionary = {} diff --git a/Shaders/acerola.gdshader b/Shaders/acerola.gdshader deleted file mode 100644 index 96f3466..0000000 --- a/Shaders/acerola.gdshader +++ /dev/null @@ -1,143 +0,0 @@ -shader_type spatial; -render_mode skip_vertex_transform; - -uniform bool billboard = false; - -uniform sampler2D color_texture : source_color, filter_nearest, repeat_disable; - -uniform vec3 tint : source_color = vec3(1); - -uniform bool vertex_snapping = true; -uniform bool affine_texture_mapping = true; - -group_uniforms Fog; -uniform bool add_fog = false; -uniform vec3 fog_color : source_color = vec3(0.42, 0.42, 0.45); -uniform vec2 fog_start_end = vec2(10, 100); -group_uniforms; - -group_uniforms Light; -uniform bool add_dynamic_vertex_lighting = false; -uniform vec3 light_direction = vec3(0, 1, 0); -uniform float light_intensity = 1.0; -uniform vec3 ambient_light : source_color = vec3(0); -group_uniforms; - -group_uniforms Dither; -uniform bool add_dither = true; -uniform float dither_spread = 1.0; -uniform float dither_gamma = 1.0; -group_uniforms; - -varying vec4 clip_pos; -varying float FOG_FACTOR; - -void vertex() { - mat4 model_matrix = MODEL_MATRIX; - - if (billboard) { - mat4 mat_world = mat4( - normalize(INV_VIEW_MATRIX[0]), - vec4(0, 1, 0, 0), - normalize(INV_VIEW_MATRIX[2]), - MODEL_MATRIX[3]); - - model_matrix = mat_world; - - MODELVIEW_MATRIX = VIEW_MATRIX * mat_world; - - MODELVIEW_NORMAL_MATRIX = mat3(MODELVIEW_MATRIX); - } - - vec4 world_space = model_matrix * vec4(VERTEX, 1); - - vec4 clip = PROJECTION_MATRIX * VIEW_MATRIX * world_space; - - vec4 vertex = clip; - - // Snap to nearest pixel - if (vertex_snapping) { - vertex.xy = round(clip.xy / clip.w * VIEWPORT_SIZE.xy) / VIEWPORT_SIZE.xy * clip.w; - } - - POSITION = vertex; - - // Need to hold on to clip.w to reverse perspective corrections - clip_pos = vertex; - - // Calculate vertex distance from camera for fog - float view_distance = length(CAMERA_POSITION_WORLD - world_space.xyz); - FOG_FACTOR = (fog_start_end.y - (view_distance)) / (fog_start_end.y - fog_start_end.x); - FOG_FACTOR = 1.0 - clamp(FOG_FACTOR, 0.0, 1.0); - - - NORMAL = MODEL_NORMAL_MATRIX * NORMAL; - - if (add_dynamic_vertex_lighting) { - float direct_light = clamp(dot(NORMAL, normalize(light_direction)), 0, 1); - - vec3 light = ambient_light + direct_light * light_intensity; - COLOR.rgb *= clamp(light, vec3(0), vec3(1)); - } - - // Multiply by perspective correction to undo it in fragment shader - if (affine_texture_mapping) { - UV = UV * clip_pos.w; - COLOR *= clip_pos.w; - FOG_FACTOR *= clip_pos.w; - } -} - -void fragment() { - vec2 uv = UV; - vec3 vertex_color = COLOR.rgb; - float fog_factor = FOG_FACTOR; - - // Undo perspective correction - if (affine_texture_mapping) { - uv /= clip_pos.w; - vertex_color /= clip_pos.w; - fog_factor /= clip_pos.w; - } - - vec3 texture_color = texture(color_texture, uv).rgb; - - vec3 albedo = texture_color * vertex_color * tint; - - vec3 fogged = albedo; - - if (add_fog) { - fogged = mix(albedo, fog_color, fog_factor); - fogged = clamp(fogged, vec3(0), vec3(1)); - } - - vec3 quantized = fogged; - - if (add_dither) { - int ps1_dither_matrix[16] = { - -4, 0, -3, 1, - 2, -2, 3, -1, - -3, 1, -4, 0, - 3, -1, 2, -2 - }; - - // Index 1D dither matrix based on 2D screen coordinates - float noise = float(ps1_dither_matrix[(int(FRAGCOORD.x) % 4) + (int(FRAGCOORD.y) % 4) * 4]); - - // Apply dithering and quantize 24 bit srgb to 15 bit srgb according to https://psx-spx.consoledev.net/graphicsprocessingunitgpu/ - quantized = pow(fogged, vec3(1.0 / dither_gamma)); // Convert to srgb cause it imo looks better and is probably correct idk looks more correct than linear quantization - quantized = round(quantized * 255.0 + noise); // Convert to 0-255 and add dither noise - quantized = clamp(round(quantized), vec3(0), vec3(255)); // Clamp to 0-255 in case of overflow - quantized = clamp(quantized / 8.0, vec3(0), vec3(31)); // Convert to 0-31 range - quantized /= 31.0; // Convert back to 0-1 range - - quantized = pow(quantized, vec3(dither_gamma)); // Convert back to linear - } - - ALBEDO = quantized; -} - -void light() { - DIFFUSE_LIGHT = vec3(1); - SPECULAR_LIGHT = vec3(0); -} \ No newline at end of file diff --git a/Shaders/acerola.gdshader.uid b/Shaders/acerola.gdshader.uid deleted file mode 100644 index 1ad5bd6..0000000 --- a/Shaders/acerola.gdshader.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bc2aherqyu3na diff --git a/Shaders/jitter.gdshader b/Shaders/jitter.gdshader deleted file mode 100644 index 56e284f..0000000 --- a/Shaders/jitter.gdshader +++ /dev/null @@ -1,49 +0,0 @@ -shader_type spatial; -render_mode blend_mix, - cull_disabled, - depth_prepass_alpha, - shadows_disabled, - specular_disabled, - vertex_lighting; - -global uniform bool affine_mapping = false; -global uniform ivec2 jitter_resolution = ivec2(320, 240); -uniform sampler2D albedo : source_color, filter_nearest; -uniform float alpha_scissor : hint_range(0, 1) = 0.5; - -vec4 snap_to_position(vec4 base_position) -{ - vec4 snapped_position = base_position; - snapped_position.xyz = base_position.xyz / base_position.w; - - vec2 snap_resulotion = floor(vec2(jitter_resolution)); - snapped_position.x = floor(snap_resulotion.x * snapped_position.x) / snap_resulotion.x; - snapped_position.y = floor(snap_resulotion.y * snapped_position.y) / snap_resulotion.y; - - snapped_position.xyz *= base_position.w; - return snapped_position; -} - -void vertex() -{ - vec4 snapped_position = snap_to_position(PROJECTION_MATRIX * MODELVIEW_MATRIX * vec4(VERTEX, 1.0)); - if (affine_mapping) - { - POSITION = snapped_position; - POSITION /= abs(POSITION.w); - } - else - { - POSITION = snapped_position; - } -} - -void fragment() -{ - vec4 color_base = COLOR; - vec4 texture_color = texture(albedo, UV); - - ALBEDO = (color_base * texture_color).rgb; - ALPHA = texture_color.a * color_base.a; - ALPHA_SCISSOR_THRESHOLD = alpha_scissor; -} \ No newline at end of file diff --git a/Shaders/jitter.gdshader.uid b/Shaders/jitter.gdshader.uid deleted file mode 100644 index 54b4c99..0000000 --- a/Shaders/jitter.gdshader.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c5bffujq0l70k diff --git a/Shaders/mightyduke_ps1.gdshader b/Shaders/mightyduke_ps1.gdshader index 36e56b3..6accff8 100644 --- a/Shaders/mightyduke_ps1.gdshader +++ b/Shaders/mightyduke_ps1.gdshader @@ -16,8 +16,9 @@ uniform sampler2D albedo: source_color, filter_nearest_mipmap; global uniform float vertex_jitter: hint_range(0.0, 1.0) = 0.5; uniform bool jitter_z_coordinate = true; uniform bool jitter_depth_independent = true; -global uniform bool affine_mapping = true; +global uniform float affine_amount: hint_range(0.0, 1.0) = 1.0; uniform float alpha_scissor: hint_range(0.0, 1.0) = 1.0; +varying vec2 perspective_uv; void vertex() { VERTEX = (MODELVIEW_MATRIX * vec4(VERTEX, 1.0)).xyz; @@ -38,19 +39,14 @@ void vertex() { VERTEX.z = z_orig; } POSITION = PROJECTION_MATRIX * vec4(VERTEX, 1.0); - if (affine_mapping) { - - POSITION /= abs(POSITION.w); - //UV *= VERTEX.z; - } + perspective_uv = UV; + UV *= VERTEX.z; } void fragment() { vec2 uv = UV; - - //if (affine_texture_mapping) { - // uv /= VERTEX.z; - //} + uv /= (VERTEX.z); + uv = mix(perspective_uv, uv, affine_amount); ALBEDO = texture(albedo, uv).rgb; ALPHA = texture(albedo, uv).a; diff --git a/UI/Menus/OptionsMenu/gameplay_options.gd b/UI/Menus/OptionsMenu/gameplay_options.gd index 3eb9fab..2d66b9b 100644 --- a/UI/Menus/OptionsMenu/gameplay_options.gd +++ b/UI/Menus/OptionsMenu/gameplay_options.gd @@ -15,10 +15,10 @@ extends VBoxContainer func _ready() -> void: - resolution_drop_down.add_item("320x240") - resolution_drop_down.add_item("1920x1080") - $MouseSens2/HBoxContainer/SpinBox.value = get_window().content_scale_factor - $MouseSens2/HBoxContainer/HSlider.value = get_window().content_scale_factor + #resolution_drop_down.add_item("320x240") + #resolution_drop_down.add_item("1920x1080") + #$MouseSens2/HBoxContainer/SpinBox.value = get_window().content_scale_factor + #$MouseSens2/HBoxContainer/HSlider.value = get_window().content_scale_factor look_sens_slider.value = Data.preferences.mouse_sens look_sens_input.value = Data.preferences.mouse_sens toggle_sprint_checkbox.button_pressed = Data.preferences.toggle_sprint diff --git a/UI/Menus/OptionsMenu/graphics_options.gd b/UI/Menus/OptionsMenu/graphics_options.gd index a2de973..d9e5231 100644 --- a/UI/Menus/OptionsMenu/graphics_options.gd +++ b/UI/Menus/OptionsMenu/graphics_options.gd @@ -6,6 +6,10 @@ extends VBoxContainer @export var vsync_dropdown: OptionButton @export var aa_dropdown: OptionButton @export var window_dropdown: OptionButton +@export var vertex_jitter_input: SpinBox +@export var vertex_jitter_slider: HSlider +@export var affine_warping_input: SpinBox +@export var affine_warping_slider: HSlider func _ready() -> void: @@ -13,6 +17,11 @@ func _ready() -> void: fov_slider.value = Data.graphics.hfov vsync_dropdown.selected = Data.graphics.vsync_mode aa_dropdown.selected = Data.graphics.aa_mode + window_dropdown.selected = Data.graphics.windowed_mode + vertex_jitter_input.value = Data.graphics.vertex_jitter + vertex_jitter_slider.value = Data.graphics.vertex_jitter + affine_warping_input.value = Data.graphics.affine_warping + affine_warping_slider.value = Data.graphics.affine_warping func save() -> void: @@ -20,6 +29,8 @@ func save() -> void: Data.graphics.vsync_mode = vsync_dropdown.selected Data.graphics.aa_mode = aa_dropdown.selected Data.graphics.windowed_mode = window_dropdown.selected + Data.graphics.vertex_jitter = vertex_jitter_slider.value + Data.graphics.affine_warping = affine_warping_slider.value func _on_fov_spin_box_value_changed(value: float) -> void: @@ -34,3 +45,31 @@ func _on_fov_spin_box_value_changed(value: float) -> void: func _on_fov_h_slider_value_changed(value: float) -> void: fov_input.value = value Data.graphics.hfov = value + + +func _on_vertex_jitter_spin_box_value_changed(value: float) -> void: + if value < 0.0: + value = 0.0 + if value > 1.0: + value = 1.0 + vertex_jitter_slider.value = value + Data.graphics.vertex_jitter = value + + +func _on_vertex_jitter_h_slider_value_changed(value: float) -> void: + vertex_jitter_input.value = value + Data.graphics.vertex_jitter = value + + +func _on_affine_warping_spin_box_value_changed(value: float) -> void: + if value < 0.0: + value = 0.0 + if value > 1.0: + value = 1.0 + affine_warping_slider.value = value + Data.graphics.affine_warping = value + + +func _on_affine_warping_h_slider_value_changed(value: float) -> void: + affine_warping_input.value = value + Data.graphics.affine_warping = value diff --git a/UI/Menus/OptionsMenu/graphics_options.tscn b/UI/Menus/OptionsMenu/graphics_options.tscn index 312678c..4abd76d 100644 --- a/UI/Menus/OptionsMenu/graphics_options.tscn +++ b/UI/Menus/OptionsMenu/graphics_options.tscn @@ -4,7 +4,7 @@ [sub_resource type="ImageTexture" id="ImageTexture_03x6q"] -[node name="Graphics" type="VBoxContainer" unique_id=1842224615 node_paths=PackedStringArray("fov_input", "fov_slider", "vsync_dropdown", "aa_dropdown", "window_dropdown")] +[node name="Graphics" type="VBoxContainer" unique_id=1842224615 node_paths=PackedStringArray("fov_input", "fov_slider", "vsync_dropdown", "aa_dropdown", "window_dropdown", "vertex_jitter_input", "vertex_jitter_slider", "affine_warping_input", "affine_warping_slider")] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 @@ -16,6 +16,10 @@ fov_slider = NodePath("FOV/HBoxContainer/HSlider") vsync_dropdown = NodePath("VSync/OptionButton") aa_dropdown = NodePath("AntiAliasing/OptionButton") window_dropdown = NodePath("Windowed/OptionButton") +vertex_jitter_input = NodePath("VextexJitter/HBoxContainer/SpinBox") +vertex_jitter_slider = NodePath("VextexJitter/HBoxContainer/HSlider") +affine_warping_input = NodePath("AffineWarping/HBoxContainer/SpinBox") +affine_warping_slider = NodePath("AffineWarping/HBoxContainer/HSlider") [node name="FOV" type="HBoxContainer" parent="." unique_id=693078328] layout_mode = 2 @@ -120,5 +124,79 @@ popup/item_1/id = 1 popup/item_2/text = "OPTION_FULLSCREEN" popup/item_2/id = 2 +[node name="VextexJitter" type="HBoxContainer" parent="." unique_id=624638999] +layout_mode = 2 +alignment = 1 + +[node name="Label" type="Label" parent="VextexJitter" unique_id=890349126] +layout_mode = 2 +size_flags_horizontal = 3 +text = "OPTION_VERTEX_JITTER" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="VextexJitter" unique_id=857909591] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="SpinBox" type="SpinBox" parent="VextexJitter/HBoxContainer" unique_id=319711346] +layout_mode = 2 +theme_override_icons/updown = SubResource("ImageTexture_03x6q") +max_value = 1.0 +step = 0.01 +value = 0.2 +allow_greater = true +allow_lesser = true +alignment = 1 +update_on_text_changed = true + +[node name="HSlider" type="HSlider" parent="VextexJitter/HBoxContainer" unique_id=451280678] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 1 +max_value = 1.0 +step = 0.01 +value = 0.2 +scrollable = false + +[node name="AffineWarping" type="HBoxContainer" parent="." unique_id=962591793] +layout_mode = 2 +alignment = 1 + +[node name="Label" type="Label" parent="AffineWarping" unique_id=206915184] +layout_mode = 2 +size_flags_horizontal = 3 +text = "OPTION_AFFINE_WARPING" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="AffineWarping" unique_id=1780949636] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="SpinBox" type="SpinBox" parent="AffineWarping/HBoxContainer" unique_id=1434191726] +layout_mode = 2 +theme_override_icons/updown = SubResource("ImageTexture_03x6q") +max_value = 1.0 +step = 0.01 +value = 1.0 +allow_greater = true +allow_lesser = true +alignment = 1 +update_on_text_changed = true + +[node name="HSlider" type="HSlider" parent="AffineWarping/HBoxContainer" unique_id=2037498715] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 1 +max_value = 1.0 +step = 0.01 +value = 1.0 +scrollable = false + [connection signal="value_changed" from="FOV/HBoxContainer/SpinBox" to="." method="_on_fov_spin_box_value_changed"] [connection signal="value_changed" from="FOV/HBoxContainer/HSlider" to="." method="_on_fov_h_slider_value_changed"] +[connection signal="value_changed" from="VextexJitter/HBoxContainer/SpinBox" to="." method="_on_vertex_jitter_spin_box_value_changed"] +[connection signal="value_changed" from="VextexJitter/HBoxContainer/HSlider" to="." method="_on_vertex_jitter_h_slider_value_changed"] +[connection signal="value_changed" from="AffineWarping/HBoxContainer/SpinBox" to="." method="_on_affine_warping_spin_box_value_changed"] +[connection signal="value_changed" from="AffineWarping/HBoxContainer/HSlider" to="." method="_on_affine_warping_h_slider_value_changed"] diff --git a/Weapons/Assault/weapon_material.tres b/Weapons/Assault/weapon_material.tres index 8c56c0b..8ec351c 100644 --- a/Weapons/Assault/weapon_material.tres +++ b/Weapons/Assault/weapon_material.tres @@ -1,7 +1,12 @@ [gd_resource type="ShaderMaterial" format=3 uid="uid://bjdi4f801k0xt"] -[ext_resource type="Shader" uid="uid://c5bffujq0l70k" path="res://Shaders/jitter.gdshader" id="1_r6w0r"] +[ext_resource type="Shader" uid="uid://dq04j2s5foo2f" path="res://Shaders/mightyduke_ps1.gdshader" id="1_kbuty"] +[ext_resource type="Texture2D" uid="uid://u8p3xcl3gvie" path="res://Weapons/Assault/rifle_tex.png" id="2_kb7v3"] [resource] render_priority = 0 -shader = ExtResource("1_r6w0r") +shader = ExtResource("1_kbuty") +shader_parameter/albedo = ExtResource("2_kb7v3") +shader_parameter/jitter_z_coordinate = true +shader_parameter/jitter_depth_independent = true +shader_parameter/alpha_scissor = 1.0 diff --git a/Worlds/GreenPlanet/Levels/Bridge/bridge.tscn b/Worlds/GreenPlanet/Levels/Bridge/bridge.tscn index 2a9eb7d..519ff0b 100644 --- a/Worlds/GreenPlanet/Levels/Bridge/bridge.tscn +++ b/Worlds/GreenPlanet/Levels/Bridge/bridge.tscn @@ -1,12 +1,12 @@ [gd_scene format=3 uid="uid://y1qa1g3ic8sp"] [ext_resource type="Script" uid="uid://cvejbo3srx8py" path="res://Scripts/level.gd" id="1_ws6nn"] +[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="2_ks6qx"] [ext_resource type="PackedScene" uid="uid://d2yv447trxkwt" path="res://Scenes/enemy_spawner.tscn" id="3_5imwp"] -[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="3_6od8s"] -[ext_resource type="Resource" uid="uid://8eba45hql7bo" path="res://Enemies/EyeDog/eye_dog.tres" id="3_j6d65"] -[ext_resource type="Resource" uid="uid://dxi17xvdlhkvc" path="res://Enemies/ElderEyeDog/elder_eye_dog.tres" id="5_j6d65"] -[ext_resource type="Resource" uid="uid://cvehqh4tt28g7" path="res://Enemies/BabyEyeDog/baby_eye_dog.tres" id="6_ks6qx"] -[ext_resource type="Resource" uid="uid://bffhb5krs5elm" path="res://Enemies/Crystalisk/crystalisk.tres" id="9_4gdda"] +[ext_resource type="Resource" uid="uid://8eba45hql7bo" path="res://Enemies/EyeDog/eye_dog.tres" id="3_6tcu8"] +[ext_resource type="Resource" uid="uid://bffhb5krs5elm" path="res://Enemies/Crystalisk/crystalisk.tres" id="4_uh5sr"] +[ext_resource type="Resource" uid="uid://cvehqh4tt28g7" path="res://Enemies/BabyEyeDog/baby_eye_dog.tres" id="5_g08yk"] +[ext_resource type="Resource" uid="uid://dxi17xvdlhkvc" path="res://Enemies/ElderEyeDog/elder_eye_dog.tres" id="6_asmpj"] [ext_resource type="PackedScene" uid="uid://1b2ikdanl66b" path="res://Scenes/CardPrinter/card_printer.tscn" id="9_r25gu"] [ext_resource type="Script" uid="uid://cxwtuxytavfu5" path="res://Scripts/enemy_goal.gd" id="9_s3rd7"] [ext_resource type="Script" uid="uid://yk54owkf7pgj" path="res://Scripts/cinema_cam.gd" id="9_xuyhn"] @@ -248,7 +248,7 @@ size = Vector2(7.84, 3.69) [node name="Bridge" type="Node3D" unique_id=1906077552 node_paths=PackedStringArray("tower_path", "player_spawns", "enemy_spawns", "enemy_goals", "corpses", "flow_field", "cinematic_cam", "printer", "shop")] script = ExtResource("1_ws6nn") -enemy_pool = Array[ExtResource("3_6od8s")]([ExtResource("3_j6d65"), ExtResource("9_4gdda"), ExtResource("5_j6d65"), ExtResource("6_ks6qx")]) +enemy_pool = Array[ExtResource("2_ks6qx")]([ExtResource("3_6tcu8"), ExtResource("4_uh5sr"), ExtResource("5_g08yk"), ExtResource("6_asmpj")]) tower_path = NodePath("Towers") player_spawns = [NodePath("PlayerSpawnLocations/PlayerSpawn1"), NodePath("PlayerSpawnLocations/PlayerSpawn2"), NodePath("PlayerSpawnLocations/PlayerSpawn3"), NodePath("PlayerSpawnLocations/PlayerSpawn4")] enemy_spawns = [NodePath("GroundSpawn"), NodePath("GroundSpawn2"), NodePath("GroundSpawn3"), NodePath("GroundSpawn4"), NodePath("GroundSpawn5"), NodePath("AirSpawn")] diff --git a/Worlds/GreenPlanet/Levels/Bridge/shader2.tres b/Worlds/GreenPlanet/Levels/Bridge/shader2.tres deleted file mode 100644 index fce826c..0000000 --- a/Worlds/GreenPlanet/Levels/Bridge/shader2.tres +++ /dev/null @@ -1,7 +0,0 @@ -[gd_resource type="ShaderMaterial" format=3 uid="uid://fy4o12thbh6f"] - -[ext_resource type="Shader" uid="uid://c5bffujq0l70k" path="res://Shaders/jitter.gdshader" id="1_2suih"] - -[resource] -render_priority = 0 -shader = ExtResource("1_2suih") diff --git a/card_model/3d_card.tscn b/card_model/3d_card.tscn index 4bc57be..9c51e3c 100644 --- a/card_model/3d_card.tscn +++ b/card_model/3d_card.tscn @@ -1,8 +1,8 @@ [gd_scene format=4 uid="uid://n8ab1cy7ordc"] [ext_resource type="Script" uid="uid://cr6hn1pbu35o1" path="res://card_model/3d_card.gd" id="1_o6jcx"] -[ext_resource type="Shader" uid="uid://c5bffujq0l70k" path="res://Shaders/jitter.gdshader" id="2_o6jcx"] [ext_resource type="PackedScene" uid="uid://dixtx38u4jhd7" path="res://UI/card_hand.tscn" id="3_bnh6n"] +[ext_resource type="Shader" uid="uid://dq04j2s5foo2f" path="res://Shaders/mightyduke_ps1.gdshader" id="3_hprih"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0gfbg"] resource_name = "Face" @@ -12,7 +12,10 @@ roughness = 0.5 [sub_resource type="ShaderMaterial" id="ShaderMaterial_bdeaa"] render_priority = 0 -shader = ExtResource("2_o6jcx") +shader = ExtResource("3_hprih") +shader_parameter/jitter_z_coordinate = true +shader_parameter/jitter_depth_independent = true +shader_parameter/alpha_scissor = 1.0 [sub_resource type="ArrayMesh" id="ArrayMesh_0gfbg"] _surfaces = [{ @@ -97,12 +100,18 @@ shadow_mesh = SubResource("ArrayMesh_gxum5") [sub_resource type="ShaderMaterial" id="ShaderMaterial_ld374"] resource_local_to_scene = true render_priority = 0 -shader = ExtResource("2_o6jcx") +shader = ExtResource("3_hprih") +shader_parameter/jitter_z_coordinate = true +shader_parameter/jitter_depth_independent = true +shader_parameter/alpha_scissor = 1.0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_cuxkc"] resource_local_to_scene = true render_priority = 0 -shader = ExtResource("2_o6jcx") +shader = ExtResource("3_hprih") +shader_parameter/jitter_z_coordinate = true +shader_parameter/jitter_depth_independent = true +shader_parameter/alpha_scissor = 1.0 [node name="3DCard" type="Node3D" unique_id=1654548650 node_paths=PackedStringArray("card_in_hand", "mesh")] script = ExtResource("1_o6jcx") diff --git a/coin/coin_material.tres b/coin/coin_material.tres index 0bcf73c..519c873 100644 --- a/coin/coin_material.tres +++ b/coin/coin_material.tres @@ -1,7 +1,12 @@ [gd_resource type="ShaderMaterial" format=3 uid="uid://5mnnhn5p1tll"] -[ext_resource type="Shader" uid="uid://c5bffujq0l70k" path="res://Shaders/jitter.gdshader" id="1_38tga"] +[ext_resource type="Shader" uid="uid://dq04j2s5foo2f" path="res://Shaders/mightyduke_ps1.gdshader" id="1_38tga"] +[ext_resource type="Texture2D" uid="uid://ctjkfe23t6crn" path="res://coin/coin.png" id="2_kttjc"] [resource] render_priority = 0 shader = ExtResource("1_38tga") +shader_parameter/albedo = ExtResource("2_kttjc") +shader_parameter/jitter_z_coordinate = true +shader_parameter/jitter_depth_independent = true +shader_parameter/alpha_scissor = 1.0 diff --git a/left_hand/left_hand_mat.tres b/left_hand/left_hand_mat.tres index 5c4fe43..ee03944 100644 --- a/left_hand/left_hand_mat.tres +++ b/left_hand/left_hand_mat.tres @@ -1,7 +1,10 @@ [gd_resource type="ShaderMaterial" format=3 uid="uid://cmrs1ubeqtl71"] -[ext_resource type="Shader" uid="uid://c5bffujq0l70k" path="res://Shaders/jitter.gdshader" id="1_bpyoj"] +[ext_resource type="Shader" uid="uid://dq04j2s5foo2f" path="res://Shaders/mightyduke_ps1.gdshader" id="1_bpyoj"] [resource] render_priority = 0 shader = ExtResource("1_bpyoj") +shader_parameter/jitter_z_coordinate = true +shader_parameter/jitter_depth_independent = true +shader_parameter/alpha_scissor = 1.0 diff --git a/project.godot b/project.godot index 50e23fe..857f0e6 100644 --- a/project.godot +++ b/project.godot @@ -249,11 +249,11 @@ textures/canvas_textures/default_texture_filter=0 [shader_globals] -affine_mapping={ -"type": "bool", -"value": true -} vertex_jitter={ "type": "float", "value": 0.2 } +affine_amount={ +"type": "float", +"value": 1.0 +} diff --git a/test_level.tscn b/test_level.tscn index 8ab85c9..4ad7229 100644 --- a/test_level.tscn +++ b/test_level.tscn @@ -1,14 +1,44 @@ [gd_scene format=3 uid="uid://crr8kg4ack7rq"] [ext_resource type="PackedScene" uid="uid://bvq6tbkuv2mfp" path="res://Enemies/EyeDog/eye_dog.tscn" id="1_sb12i"] +[ext_resource type="Texture2D" uid="uid://cdnhe2mi5c5ln" path="res://Assets/Textures/dead_eye_dog.png" id="2_6emce"] [ext_resource type="PackedScene" uid="uid://dl3rwqwbgrq2m" path="res://Enemies/ElderEyeDog/elder_eye_dog.tscn" id="2_gbhdq"] +[ext_resource type="Texture2D" uid="uid://g00wwrlxxdc5" path="res://Assets/Textures/icon_eye_dog.png" id="3_lowby"] [ext_resource type="PackedScene" uid="uid://cveiaa0y66gln" path="res://Enemies/Crystalisk/crystal_enemy.tscn" id="3_y646j"] +[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="4_58smv"] [ext_resource type="PackedScene" uid="uid://dtahuv0kpxx03" path="res://Enemies/BabyEyeDog/baby_eye_dog.tscn" id="4_lnbra"] [ext_resource type="PackedScene" uid="uid://dxgxbtf68lcv5" path="res://PCs/hero.tscn" id="5_6emce"] +[ext_resource type="Texture2D" uid="uid://dj13g1w14mekw" path="res://Assets/Textures/eye_dog.png" id="5_a25ih"] [sub_resource type="BoxShape3D" id="BoxShape3D_lowby"] size = Vector3(20, 1, 20) +[sub_resource type="AtlasTexture" id="AtlasTexture_6emce"] +resource_local_to_scene = true +atlas = ExtResource("5_a25ih") +region = Rect2(0, 0, 32, 32) + +[sub_resource type="Resource" id="Resource_lowby"] +resource_local_to_scene = true +script = ExtResource("4_58smv") +title = "ENEMY_DOG" +target_type = 1 +icon = ExtResource("3_lowby") +death_sprite = ExtResource("2_6emce") +sprite = SubResource("AtlasTexture_6emce") +health = 180 +movement_speed = 1.5 +spawn_cooldown = 1.2 +common_group = 6 +uncommon_group = 10 +uncommon_cost = 2 +rare_group = 16 +rare_cost = 3 +epic_group = 22 +epic_cost = 5 +legendary_group = 28 +legendary_cost = 6 + [node name="Node3D" type="Node3D" unique_id=747882904] [node name="StaticBody3D" type="StaticBody3D" parent="." unique_id=845198141] @@ -21,6 +51,7 @@ size = Vector3(20, 1, 20) [node name="EyeDog" parent="." unique_id=1016179251 instance=ExtResource("1_sb12i")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.4945354, 0.5048856, -2.1569223) +stats = SubResource("Resource_lowby") [node name="ElderEyeDog" parent="." unique_id=1106613653 instance=ExtResource("2_gbhdq")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.93381655, 0.5048856, -2.248024)