added pipe rifle animation
This commit is contained in:
@@ -9,6 +9,7 @@ const SAVE_PATH: String = "user://graphics_settings.tres"
|
||||
@export var windowed_mode: int = 0
|
||||
@export var vertex_jitter: float = 0.2
|
||||
@export var affine_warping: float = 1.0
|
||||
@export var resolution_scaling: float = 1.0
|
||||
|
||||
|
||||
func apply_graphical_settings(viewport: Viewport) -> void:
|
||||
|
||||
@@ -10,9 +10,12 @@ var attack_range: float = 0.0
|
||||
func _ready() -> void:
|
||||
super._ready()
|
||||
attack_range = stats.get_attribute("Range")
|
||||
raycast.target_position = Vector3(0, 0, -attack_range)
|
||||
#range_debug_indicator.radius = attack_range
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
super._process(delta)
|
||||
raycast.global_position = hero.camera.global_position
|
||||
raycast.target_position = Vector3(0, 0, -attack_range)
|
||||
|
||||
|
||||
func shoot() -> void:
|
||||
@@ -23,6 +26,11 @@ func shoot() -> void:
|
||||
var hitbox: Hitbox = target.shape_owner_get_owner(raycast.get_collider_shape())
|
||||
hit(hitbox, raycast.get_collision_point())
|
||||
networked_hit.rpc(get_tree().root.get_path_to(hitbox), raycast.get_collision_point())
|
||||
if particle_emitter:
|
||||
particle_emitter.global_position = raycast.get_collision_point()
|
||||
particle_emitter.process_material.direction = raycast.get_collision_normal()
|
||||
particle_emitter.restart()
|
||||
particle_emitter.emitting = true
|
||||
|
||||
|
||||
func hit(hitbox: Hitbox, hit_pos: Vector3) -> void:
|
||||
|
||||
@@ -4,11 +4,13 @@ extends Node3D
|
||||
signal energy_spent(energy: int, type: Data.EnergyType)
|
||||
signal energy_recharged(energy: int, type: Data.EnergyType)
|
||||
signal energy_changed(energy: float)
|
||||
signal fired()
|
||||
|
||||
@export var stats: CardText
|
||||
@export var animator: AnimationPlayer
|
||||
@export var audio_player: AudioStreamPlayer3D
|
||||
@export var recharge_timer: Timer
|
||||
@export var particle_emitter: GPUParticles3D
|
||||
|
||||
var hero: Hero
|
||||
var trigger_held: bool = false
|
||||
@@ -98,6 +100,7 @@ func shoot() -> void:
|
||||
recharging = false
|
||||
recharge_speed = 0.0
|
||||
recharge_timer.stop()
|
||||
fired.emit()
|
||||
|
||||
|
||||
@rpc
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
extends Node
|
||||
|
||||
signal resolution_changed(size: Vector2)
|
||||
|
||||
var characters: Array[HeroClass]
|
||||
var cards: Array[Card]
|
||||
#var keymaps: Array[PlayerKeymap]
|
||||
|
||||
@@ -33,6 +33,7 @@ var card_gameplay: bool = false
|
||||
var level_layout: FlowFieldData
|
||||
var level_config: LevelConfig
|
||||
var starting_endless: bool = false
|
||||
var rhythm_notifier: RhythmNotifier
|
||||
|
||||
|
||||
#TODO: Create a reference to some generic Lobby object that wraps the multiplayer players list stuff
|
||||
@@ -107,6 +108,10 @@ func get_upcoming_waves(wave_count: int) -> Array[WaveConfig]:
|
||||
return waves
|
||||
|
||||
|
||||
func connect_tower_to_music(tower: Tower) -> void:
|
||||
rhythm_notifier.beats(1).connect(tower.shoot)
|
||||
|
||||
|
||||
func spawn_level(scene: PackedScene) -> void:
|
||||
level = scene.instantiate() as Level
|
||||
var flow_field: FlowField = FlowField.new()
|
||||
@@ -133,6 +138,7 @@ func spawn_players() -> void:
|
||||
player_array.sort()
|
||||
for peer_id: int in player_array:
|
||||
var player: Hero = player_scene.instantiate() as Hero
|
||||
player.placed_tower.connect(connect_tower_to_music)
|
||||
player.name = str(peer_id)
|
||||
player.game_manager = self
|
||||
player.edit_tool.level = level
|
||||
@@ -199,16 +205,16 @@ func set_wave_to_spawners(wave_thing: WaveConfig, wave_number: int) -> void:
|
||||
|
||||
func set_upcoming_wave() -> void:
|
||||
if is_multiplayer_authority():
|
||||
print(wave)
|
||||
print(level_config.waves.size())
|
||||
#print(wave)
|
||||
#print(level_config.waves.size())
|
||||
if wave > level_config.waves.size():
|
||||
print("added new wave on top")
|
||||
#print("added new wave on top")
|
||||
var spawn_power: int = WaveManager.calculate_spawn_power(wave, connected_players_nodes.size())
|
||||
var new_wave: WaveConfig = WaveManager.generate_wave(spawn_power, level.enemy_pool, level.enemy_spawns.size())
|
||||
level_config.waves.append(new_wave)
|
||||
|
||||
var new_wave: WaveConfig = get_upcoming_waves(1)[0]
|
||||
print(new_wave)
|
||||
#print(new_wave)
|
||||
set_wave_to_spawners(new_wave, wave)
|
||||
temp_set_upcoming_wave(new_wave, WaveManager.calculate_pot(wave, connected_players_nodes.size()))
|
||||
|
||||
@@ -265,7 +271,7 @@ func damage_goal(enemy: Enemy, penalty: int) -> void:
|
||||
|
||||
|
||||
func end_wave() -> void:
|
||||
print("wave endedZ")
|
||||
#print("wave endedZ")
|
||||
wave += 1
|
||||
Data.save_data.check_high_score(level_config.display_title, wave, starting_endless)
|
||||
for peer_id: int in connected_players_nodes:
|
||||
@@ -329,6 +335,10 @@ func setup() -> void:
|
||||
wave = 1
|
||||
stats = RoundStats.new()
|
||||
wave_limit = level_config.waves.size()
|
||||
rhythm_notifier = RhythmNotifier.new()
|
||||
add_child(rhythm_notifier)
|
||||
rhythm_notifier.bpm = 120
|
||||
rhythm_notifier.running = true
|
||||
game_setup.emit()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user