Some code style fixes. Fixed enemy spawning

This commit is contained in:
2025-12-07 23:51:00 +03:00
parent c594f561a5
commit a19a5eeb80
23 changed files with 100 additions and 98 deletions
+5 -5
View File
@@ -6,12 +6,12 @@ signal accelerate(direction: Vector2, delta: float)
signal shoot() signal shoot()
@export var ship: AbstractEnemyShip
const FREE_FLIGHT_DIST = 50 const FREE_FLIGHT_DIST = 50
@export var ship: AbstractEnemyShip
var target_position : Vector2 var target_position : Vector2
var direction : Vector2 var direction : Vector2
@@ -23,10 +23,10 @@ func _physics_process(delta: float) -> void:
func _on_direction_timer_timeout() -> void: func _on_direction_timer_timeout() -> void:
direction = get_acceleration_direction() direction = _get_acceleration_direction()
func get_acceleration_direction() -> Vector2: func _get_acceleration_direction() -> Vector2:
var distance := ship.position.distance_to(target_position) var distance := ship.position.distance_to(target_position)
if distance < FREE_FLIGHT_DIST: if distance < FREE_FLIGHT_DIST:
+3 -3
View File
@@ -2,9 +2,6 @@ class_name EnemySwampController
extends Node extends Node
@export var passage : Passage
const SMALL_ENEMY = preload("res://game/entities/ships/enemies/small/small_enemy_ship.tscn") const SMALL_ENEMY = preload("res://game/entities/ships/enemies/small/small_enemy_ship.tscn")
const MEDIUM_ENEMY = preload("res://game/entities/ships/enemies/medium/medium_enemy_ship.tscn") const MEDIUM_ENEMY = preload("res://game/entities/ships/enemies/medium/medium_enemy_ship.tscn")
const HEAVY_ENEMY = preload("res://game/entities/ships/enemies/heavy/heavy_enemy_ship.tscn") const HEAVY_ENEMY = preload("res://game/entities/ships/enemies/heavy/heavy_enemy_ship.tscn")
@@ -21,6 +18,9 @@ const MIN_POSITION = Vector2(300, 30)
const MAX_POSITION = Vector2(600, 330) const MAX_POSITION = Vector2(600, 330)
@export var passage : Passage
@onready var enemy_update_timer : Timer = $EnemyUpdateTimer @onready var enemy_update_timer : Timer = $EnemyUpdateTimer
+1
View File
@@ -21,5 +21,6 @@ func _input(event: InputEvent) -> void:
if not input_direction.is_zero_approx(): if not input_direction.is_zero_approx():
blink.emit(input_direction) blink.emit(input_direction)
func _get_input_direction() -> Vector2: func _get_input_direction() -> Vector2:
return Input.get_vector("move_left", "move_right", "move_up", "move_down") return Input.get_vector("move_left", "move_right", "move_up", "move_down")
+3 -3
View File
@@ -2,13 +2,13 @@ class_name Blast
extends Area2D extends Area2D
const FALLOFF_FACTOR = 3
@export var damage : AbstractDamage @export var damage : AbstractDamage
@export var shape : CircleShape2D @export var shape : CircleShape2D
const FALLOFF_FACTOR = 3
@onready var collision : CollisionShape2D = $CollisionShape2D @onready var collision : CollisionShape2D = $CollisionShape2D
+5 -6
View File
@@ -9,14 +9,8 @@ signal finished
@export_range(0, 1) var amount_ratio: float = 1 @export_range(0, 1) var amount_ratio: float = 1
@onready var particles_huge : GPUParticles2D = $ParticlesHuge
@onready var particles_large : GPUParticles2D = $ParticlesLarge
@onready var particles_medium : GPUParticles2D = $ParticlesMedium
var _emiting_count := 0 var _emiting_count := 0
var emitting : bool = false: var emitting : bool = false:
set(value): set(value):
emitting = value emitting = value
@@ -25,6 +19,11 @@ var emitting : bool = false:
if particles_medium: particles_medium.emitting = emitting; _emiting_count += 1 if particles_medium: particles_medium.emitting = emitting; _emiting_count += 1
@onready var particles_huge : GPUParticles2D = $ParticlesHuge
@onready var particles_large : GPUParticles2D = $ParticlesLarge
@onready var particles_medium : GPUParticles2D = $ParticlesMedium
func _ready() -> void: func _ready() -> void:
particles_huge.amount_ratio = amount_ratio particles_huge.amount_ratio = amount_ratio
particles_large.amount_ratio = amount_ratio particles_large.amount_ratio = amount_ratio
+8 -9
View File
@@ -2,6 +2,9 @@ class_name AbstractShip
extends CharacterBody2D extends CharacterBody2D
signal destroyed
const CANNON = preload("res://game/entities/weapons/cannon/cannon_weapon.tscn") const CANNON = preload("res://game/entities/weapons/cannon/cannon_weapon.tscn")
const GATLING = preload("res://game/entities/weapons/gatling/gatling_weapon.tscn") const GATLING = preload("res://game/entities/weapons/gatling/gatling_weapon.tscn")
const LASER = preload("res://game/entities/weapons/laser/laser_weapon.tscn") const LASER = preload("res://game/entities/weapons/laser/laser_weapon.tscn")
@@ -19,9 +22,6 @@ const WEAPONS := [
] ]
signal destroyed
@export_range(0, 250) var acceleration : int = 0 @export_range(0, 250) var acceleration : int = 0
@export_range(0, 250) var deceleration : int = 0 @export_range(0, 250) var deceleration : int = 0
@export_range(0, 250) var max_speed : int = 0 @export_range(0, 250) var max_speed : int = 0
@@ -30,6 +30,11 @@ signal destroyed
@export_range(0, 360) var weapon_rotation : int = 0 @export_range(0, 360) var weapon_rotation : int = 0
var weapon_positions: Array[Vector2]
var _weapons : Array[AbstractWeapon]
@onready var ship_sprite : Sprite2D = $ShipSprite @onready var ship_sprite : Sprite2D = $ShipSprite
@onready var armor_sprite : Sprite2D = $ArmorSprite @onready var armor_sprite : Sprite2D = $ArmorSprite
@onready var shield_sprite : Sprite2D = $ShieldSprite @onready var shield_sprite : Sprite2D = $ShieldSprite
@@ -37,12 +42,6 @@ signal destroyed
@onready var health : Health = $Health @onready var health : Health = $Health
var weapon_positions: Array[Vector2]
var _weapons : Array[AbstractWeapon]
func _ready() -> void: func _ready() -> void:
shield_sprite.visible = health.shield != 0 shield_sprite.visible = health.shield != 0
armor_sprite.visible = health.armor != 0 armor_sprite.visible = health.armor != 0
@@ -2,13 +2,13 @@ class_name AbstractEnemyShip
extends AbstractShip extends AbstractShip
@onready var controller : EnemyController = $EnemyController
var is_on_screen : bool = false var is_on_screen : bool = false
var weapon_type : AbstractWeapon.Type = AbstractWeapon.Type.NONE var weapon_type : AbstractWeapon.Type = AbstractWeapon.Type.NONE
@onready var controller : EnemyController = $EnemyController
func _ready() -> void: func _ready() -> void:
super._ready() super._ready()
+3 -3
View File
@@ -2,12 +2,12 @@ class_name PlayerShip
extends AbstractShip extends AbstractShip
@export_range(0, 200) var blink_range := 0
const ENEMY_LAYER = 4 const ENEMY_LAYER = 4
@export_range(0, 200) var blink_range := 0
@onready var blink_timer : Timer = $BlinkTimer @onready var blink_timer : Timer = $BlinkTimer
@onready var blink_shadow : GPUParticles2D = $BlinkShadow @onready var blink_shadow : GPUParticles2D = $BlinkShadow
+4 -4
View File
@@ -11,10 +11,6 @@ const ENEMY_PROJECTILE_LAYER = 16
@export_range(0, 1000) var speed : int = 0 @export_range(0, 1000) var speed : int = 0
@onready var collision : CollisionShape2D = $CollisionShape2D
@onready var out_of_screen_timer : Timer = $OutOfScreenTimer
var direction : Vector2 var direction : Vector2
var ship_velocity: Vector2 var ship_velocity: Vector2
@@ -32,6 +28,10 @@ var collide_enemies: bool:
var _velocity: Vector2 var _velocity: Vector2
@onready var collision : CollisionShape2D = $CollisionShape2D
@onready var out_of_screen_timer : Timer = $OutOfScreenTimer
func _ready() -> void: func _ready() -> void:
_velocity = direction.normalized() * speed + ship_velocity _velocity = direction.normalized() * speed + ship_velocity
_update_collision_rotation(_velocity) _update_collision_rotation(_velocity)
+9 -10
View File
@@ -6,16 +6,6 @@ enum Belonging { PLAYER, ENEMY }
enum Type { NONE, SHORT_RANGE, MEDIUM_RANGE, LONG_RANGE, HOMING, MINES } enum Type { NONE, SHORT_RANGE, MEDIUM_RANGE, LONG_RANGE, HOMING, MINES }
@export_range(1, 100) var bullet_per_shot : int = 1
@export_range(0, 360) var sector_angle : int = 0
@export var Projectile : PackedScene
@export var type := Type.NONE
@onready var muzzle : Node2D = $Muzzle
const PREFIXES := { const PREFIXES := {
Belonging.PLAYER: "player", Belonging.PLAYER: "player",
Belonging.ENEMY: "enemy", Belonging.ENEMY: "enemy",
@@ -26,10 +16,19 @@ const IDLE_POSTFIX = "_idle"
const RELOAD_POSTFIX = "_reloading" const RELOAD_POSTFIX = "_reloading"
@export_range(1, 100) var bullet_per_shot : int = 1
@export_range(0, 360) var sector_angle : int = 0
@export var Projectile : PackedScene
@export var type := Type.NONE
var _belonging: Belonging var _belonging: Belonging
var _can_shoot := true var _can_shoot := true
@onready var muzzle : Node2D = $Muzzle
func set_belonging(belonging: Belonging) -> void: func set_belonging(belonging: Belonging) -> void:
_belonging = belonging _belonging = belonging
@@ -5,14 +5,15 @@ extends BlastProjectile
@export_range(0, 360) var rotation_speed: int @export_range(0, 360) var rotation_speed: int
var target : AbstractShip = null
@onready var sprites : Array[Sprite2D] = [ @onready var sprites : Array[Sprite2D] = [
$Sprite2D_E, $Sprite2D_SE, $Sprite2D_S, $Sprite2D_SW, $Sprite2D_E, $Sprite2D_SE, $Sprite2D_S, $Sprite2D_SW,
$Sprite2D_W, $Sprite2D_NW, $Sprite2D_N, $Sprite2D_NE, $Sprite2D_W, $Sprite2D_NW, $Sprite2D_N, $Sprite2D_NE,
] ]
@onready var explosion_particles : ExplosionParticles = $ExplosionParticles @onready var explosion_particles : ExplosionParticles = $ExplosionParticles
var target : AbstractShip = null
func _ready() -> void: func _ready() -> void:
_acquire_target() _acquire_target()
@@ -5,15 +5,18 @@ extends AbstractWeapon
@onready var enemy_sprite : Sprite2D = $EnemySprite @onready var enemy_sprite : Sprite2D = $EnemySprite
@onready var cooldown_timer : Timer = $CooldownTimer @onready var cooldown_timer : Timer = $CooldownTimer
var _particles_index := 0
var _muzzle_index := 0
@onready var particles : Array[GPUParticles2D] = [ @onready var particles : Array[GPUParticles2D] = [
$LeftParticles, $RightParticles, $LeftParticles, $RightParticles,
] ]
var _particles_index := 0
@onready var muzzles : Array[Node2D] = [ @onready var muzzles : Array[Node2D] = [
$Muzzle, $SecondMuzzle, $Muzzle, $SecondMuzzle,
] ]
var _muzzle_index := 0
func set_belonging(belonging: Belonging) -> void: func set_belonging(belonging: Belonging) -> void:
@@ -2,14 +2,11 @@ class_name MinelayerProjectile
extends BlastProjectile extends BlastProjectile
@export var deceleration : int enum SpriteState {
ON,
OFF,
@onready var sprite_on := $Sprite2D_On Disabled,
@onready var sprite_off := $Sprite2D_Off }
@onready var sprite_on_timer := $SpriteOnTimer
@onready var sprite_off_timer := $SpriteOffTimer
@onready var explosion_particles : ExplosionParticles = $ExplosionParticles
const OFF_TIMES = [ const OFF_TIMES = [
@@ -20,11 +17,7 @@ const ON_TIME = 0.05
const SCROLL_VELOCITY = Vector2(-50, 0) const SCROLL_VELOCITY = Vector2(-50, 0)
enum SpriteState { @export var deceleration : int
ON,
OFF,
Disabled,
}
var _bodies_inside: Array[Node2D] = [] var _bodies_inside: Array[Node2D] = []
@@ -33,6 +26,13 @@ var _current_sprite_state : SpriteState:
set = _switch_sprite set = _switch_sprite
@onready var sprite_on := $Sprite2D_On
@onready var sprite_off := $Sprite2D_Off
@onready var sprite_on_timer := $SpriteOnTimer
@onready var sprite_off_timer := $SpriteOffTimer
@onready var explosion_particles : ExplosionParticles = $ExplosionParticles
func _ready() -> void: func _ready() -> void:
_current_sprite_state = SpriteState.OFF _current_sprite_state = SpriteState.OFF
super._ready() super._ready()
@@ -8,6 +8,9 @@ extends DirectHitProjectile
@export_range(0, 1000) var no_deviation_distance: int = 0 @export_range(0, 1000) var no_deviation_distance: int = 0
var _collided_foes : Array[AbstractShip] = []
@onready var jinkTimer : Timer = $JinkTimer @onready var jinkTimer : Timer = $JinkTimer
@onready var particles_huge : GPUParticles2D = $ParticlesHuge @onready var particles_huge : GPUParticles2D = $ParticlesHuge
@@ -16,9 +19,6 @@ extends DirectHitProjectile
@onready var particles_small : GPUParticles2D = $ParticlesSmall @onready var particles_small : GPUParticles2D = $ParticlesSmall
var _collided_foes : Array[AbstractShip] = []
func _ready() -> void: func _ready() -> void:
super._ready() super._ready()
_start_jink_timer() _start_jink_timer()
+4 -4
View File
@@ -25,10 +25,6 @@ signal depleted
hull_updated.emit(_hull, max_hull) hull_updated.emit(_hull, max_hull)
@onready var shield_regen_delay_timer : Timer = $ShieldRegenDelayTimer
@onready var shield_regen_tick_timer : Timer = $ShieldRegenTickTimer
var shield: int: var shield: int:
get: return _shield get: return _shield
set(value): pass set(value): pass
@@ -40,6 +36,10 @@ var hull: int:
set(value): pass set(value): pass
@onready var shield_regen_delay_timer : Timer = $ShieldRegenDelayTimer
@onready var shield_regen_tick_timer : Timer = $ShieldRegenTickTimer
@onready var _shield := max_shield: @onready var _shield := max_shield:
set(value): set(value):
_shield = value _shield = value
@@ -1,10 +1,18 @@
class_name HealthBarPart class_name HealthBarPart
extends Control extends Control
const TICK_COUNT = 5
@export var texture_value : Texture2D @export var texture_value : Texture2D
@export var texture_shade : Texture2D @export var texture_shade : Texture2D
var _tick_size : int = 0
var _target_value: float = 0
@onready var value_bar : TextureProgressBar = $ValueBar @onready var value_bar : TextureProgressBar = $ValueBar
@onready var shade_bar : TextureProgressBar = $ShadeBar @onready var shade_bar : TextureProgressBar = $ShadeBar
@@ -12,13 +20,6 @@ extends Control
@onready var shade_tick_timer : Timer = $ShadeTickTimer @onready var shade_tick_timer : Timer = $ShadeTickTimer
const TICK_COUNT = 5
var _tick_size : int = 0
var _target_value: float = 0
func _ready() -> void: func _ready() -> void:
value_bar.texture_progress = texture_value value_bar.texture_progress = texture_value
shade_bar.texture_progress = texture_shade shade_bar.texture_progress = texture_shade
+2 -2
View File
@@ -11,12 +11,12 @@ signal player_died
func _on_enemy_timer_timeout() -> void: func _on_enemy_timer_timeout() -> void:
var enemies := get_tree().get_nodes_in_group("enemies") var enemies := get_tree().get_nodes_in_group("enemies")
if enemies.size() < 1: if enemies.size() < 25:
enemy_swamp_controller.create_enemy() enemy_swamp_controller.create_enemy()
var factor := maxi(enemies.size(), 1) * 0.5 var factor := maxi(enemies.size(), 1) * 0.5
enemy_timer.start(randf_range(1 * factor, 3 * factor)) enemy_timer.start(randf_range(1 * factor, 2 * factor))
func _on_player_ship_destroyed() -> void: func _on_player_ship_destroyed() -> void:
+4 -4
View File
@@ -2,10 +2,6 @@ class_name AreaGenerator
extends Node extends Node
@onready var stage_generator : StageGenerator = $StageGenerator
@onready var passage_generator : PassageGenerator = $PassageGenerator
const STAGE_COUNT = 9 const STAGE_COUNT = 9
const EXTRA_PASSAGE_CHANCE = 20 const EXTRA_PASSAGE_CHANCE = 20
@@ -18,6 +14,10 @@ var passage_chance_rng : RandomNumberGenerator = RandomNumberGenerator.new()
var passage_direction_rng : RandomNumberGenerator = RandomNumberGenerator.new() var passage_direction_rng : RandomNumberGenerator = RandomNumberGenerator.new()
@onready var stage_generator : StageGenerator = $StageGenerator
@onready var passage_generator : PassageGenerator = $PassageGenerator
func generate(seed_value: int) -> AreaData: func generate(seed_value: int) -> AreaData:
local_seed_rng.seed = seed_value local_seed_rng.seed = seed_value
stage_seed_rng.seed = local_seed_rng.randi() stage_seed_rng.seed = local_seed_rng.randi()
+3 -3
View File
@@ -5,13 +5,13 @@ extends Node
const ENEMY_COUNT = 10 const ENEMY_COUNT = 10
@onready var enemy_generator : EnemyGenerator = $EnemyGenerator
var local_seed_rng : RandomNumberGenerator = RandomNumberGenerator.new() var local_seed_rng : RandomNumberGenerator = RandomNumberGenerator.new()
var enemy_seed_rng : RandomNumberGenerator = RandomNumberGenerator.new() var enemy_seed_rng : RandomNumberGenerator = RandomNumberGenerator.new()
@onready var enemy_generator : EnemyGenerator = $EnemyGenerator
func generate(seed_value: int) -> PassageData: func generate(seed_value: int) -> PassageData:
local_seed_rng.seed = seed_value local_seed_rng.seed = seed_value
enemy_seed_rng.seed = local_seed_rng.randi() enemy_seed_rng.seed = local_seed_rng.randi()
+3 -3
View File
@@ -9,14 +9,14 @@ const CHANSES_BY_SECTOR_COUNT : Dictionary[int, int] = {
} }
@onready var sector_generator : SectorGenerator = $SectorGenerator
var local_seed_rng : RandomNumberGenerator = RandomNumberGenerator.new() var local_seed_rng : RandomNumberGenerator = RandomNumberGenerator.new()
var sector_seed_rng : RandomNumberGenerator = RandomNumberGenerator.new() var sector_seed_rng : RandomNumberGenerator = RandomNumberGenerator.new()
var sector_count_rng : RandomNumberGenerator = RandomNumberGenerator.new() var sector_count_rng : RandomNumberGenerator = RandomNumberGenerator.new()
@onready var sector_generator : SectorGenerator = $SectorGenerator
func generate(seed_value: int, is_endpoint: bool = false) -> StageData: func generate(seed_value: int, is_endpoint: bool = false) -> StageData:
local_seed_rng.seed = seed_value local_seed_rng.seed = seed_value
sector_seed_rng.seed = local_seed_rng.randi() sector_seed_rng.seed = local_seed_rng.randi()
+3 -3
View File
@@ -2,9 +2,6 @@ class_name WorldGenerator
extends Node extends Node
@onready var area_generator : AreaGenerator = $AreaGenerator
const AREA_COUNT = 3 const AREA_COUNT = 3
@@ -12,6 +9,9 @@ var local_seed_rng : RandomNumberGenerator = RandomNumberGenerator.new()
var area_seed_rng : RandomNumberGenerator = RandomNumberGenerator.new() var area_seed_rng : RandomNumberGenerator = RandomNumberGenerator.new()
@onready var area_generator : AreaGenerator = $AreaGenerator
func generate(seed_value: int) -> WorldData: func generate(seed_value: int) -> WorldData:
local_seed_rng.seed = seed_value local_seed_rng.seed = seed_value
area_seed_rng.seed = local_seed_rng.randi() area_seed_rng.seed = local_seed_rng.randi()
+1 -2
View File
@@ -7,8 +7,8 @@ const CATEGORY_VIDEO = "video"
const SETTING_FULLSCREEN = "fullscreen" const SETTING_FULLSCREEN = "fullscreen"
const SETTING_WINDOW_FACTOR = "window_factor" const SETTING_WINDOW_FACTOR = "window_factor"
var _config: ConfigFile
var _config: ConfigFile
var _fullscreen := false var _fullscreen := false
var fullscreen : bool: var fullscreen : bool:
@@ -19,7 +19,6 @@ var fullscreen : bool:
_apply_video_settings() _apply_video_settings()
_save_settings() _save_settings()
var _window_factor := 0 var _window_factor := 0
var window_factor : int: var window_factor : int:
get: get:
+4 -4
View File
@@ -1,15 +1,15 @@
extends Control extends Control
@onready var continue_button := $%ContinueButton
@onready var main_menu_button := $%MainMenuButton
signal continue_game signal continue_game
signal show_main_menu signal show_main_menu
signal show_options signal show_options
@onready var continue_button := $%ContinueButton
@onready var main_menu_button := $%MainMenuButton
func _ready() -> void: func _ready() -> void:
_init_focus() _init_focus()
_setup_neighbors() _setup_neighbors()