just reorganised files thats it
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
class_name Affector extends Node
|
||||
class_name Affector
|
||||
extends Node
|
||||
|
||||
var damage_particle_scene: PackedScene = preload("res://Scenes/damage_particle.tscn")
|
||||
|
||||
|
||||
@warning_ignore("unused_parameter")
|
||||
func apply_effect(effect: Effect, targets: Array[EnemyController]) -> void:
|
||||
pass
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name AreaAffector extends Affector
|
||||
class_name AreaAffector
|
||||
extends Affector
|
||||
|
||||
@export var shapecast: ShapeCast3D
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name DirectAffect extends Affector
|
||||
class_name DirectAffect
|
||||
extends Affector
|
||||
|
||||
|
||||
func apply_effect(effect: Effect, targets: Array[EnemyController]) -> void:
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name SpawnAffect extends Affector
|
||||
class_name SpawnAffect
|
||||
extends Affector
|
||||
|
||||
@export var spawn_scene: PackedScene
|
||||
@export var tower: Tower
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name BeeliningController extends EnemyMovement
|
||||
class_name BeeliningController
|
||||
extends EnemyMovement
|
||||
|
||||
var goal: Node3D
|
||||
var direction: Vector3
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name EnemyMovement extends Node
|
||||
class_name EnemyMovement
|
||||
extends Node
|
||||
|
||||
@export var character: EnemyController
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name LeapingController extends PathingController
|
||||
class_name LeapingController
|
||||
extends PathingController
|
||||
|
||||
@export var eastl: Label
|
||||
@export var westl: Label
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name PathingController extends EnemyMovement
|
||||
class_name PathingController
|
||||
extends EnemyMovement
|
||||
|
||||
#var path: Curve3D
|
||||
#var path_progress: float = 0.0
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name ExplosiveProjectile extends Projectile
|
||||
class_name ExplosiveProjectile
|
||||
extends Projectile
|
||||
|
||||
@export var explosion_range: float = 3.0
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name HomingProjectile extends ExplosiveProjectile
|
||||
class_name HomingProjectile
|
||||
extends ExplosiveProjectile
|
||||
|
||||
var target: Node3D
|
||||
var acceleration: float = 50.0
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name Projectile extends RigidBody3D
|
||||
class_name Projectile
|
||||
extends RigidBody3D
|
||||
|
||||
@export var collision_shape: CollisionShape3D
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name StatusApplyingProjectile extends ExplosiveProjectile
|
||||
class_name StatusApplyingProjectile
|
||||
extends ExplosiveProjectile
|
||||
|
||||
@export var status_stats: StatusStats
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name Card extends Item
|
||||
class_name Card
|
||||
extends Item
|
||||
|
||||
enum Faction {
|
||||
GENERIC = 0,
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name CardText extends Resource
|
||||
class_name CardText
|
||||
extends Resource
|
||||
|
||||
@export var target_type: Data.TargetType
|
||||
@export var energy_type: Data.EnergyType
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name Enemy extends Resource
|
||||
class_name Enemy
|
||||
extends Resource
|
||||
|
||||
@export var title: String = "dog"
|
||||
@export var target_type: Data.EnemyType
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name HeroClass extends Resource
|
||||
class_name HeroClass
|
||||
extends Resource
|
||||
|
||||
@export var hero_name: String = "Default"
|
||||
@export var texture: Texture
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name Item extends Resource
|
||||
class_name Item
|
||||
extends Resource
|
||||
|
||||
@export var display_name: String
|
||||
@export var icon: Texture
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name PlayerAudioSettings extends Resource
|
||||
class_name PlayerAudioSettings
|
||||
extends Resource
|
||||
|
||||
const SAVE_PATH: String = "user://audio_settings.tres"
|
||||
|
||||
@@ -19,4 +20,3 @@ static func load_profile_from_disk() -> PlayerAudioSettings:
|
||||
if ResourceLoader.exists(SAVE_PATH):
|
||||
return ResourceLoader.load(SAVE_PATH)
|
||||
return PlayerAudioSettings.new()
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name PlayerGraphicsSettings extends Resource
|
||||
class_name PlayerGraphicsSettings
|
||||
extends Resource
|
||||
|
||||
const SAVE_PATH: String = "user://graphics_settings.tres"
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name PlayerPreferences extends Resource
|
||||
class_name PlayerPreferences
|
||||
extends Resource
|
||||
|
||||
const SAVE_PATH: String = "user://preferences.tres"
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name PlayerProfile extends Resource
|
||||
class_name PlayerProfile
|
||||
extends Resource
|
||||
|
||||
signal display_name_changed(old_name: String, new_name: String)
|
||||
signal preferred_class_changed(old_class: int, new_class: int)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name SaveData extends RefCounted
|
||||
class_name SaveData
|
||||
extends RefCounted
|
||||
|
||||
var save_slot: int = 0
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name StatAttribute extends Resource
|
||||
class_name StatAttribute
|
||||
extends Resource
|
||||
|
||||
@export var key: String
|
||||
@export var value: float
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name StatusStats extends Resource
|
||||
class_name StatusStats
|
||||
extends Resource
|
||||
|
||||
@export var name: String
|
||||
@export var max_stacks: int = 0
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name StatusDoT extends StatusEffect
|
||||
class_name StatusDoT
|
||||
extends StatusEffect
|
||||
|
||||
|
||||
func proc(affected: EnemyController, stacks: int, _existing_effects: Dictionary) -> void:
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name StatusEffect extends Resource
|
||||
class_name StatusEffect
|
||||
extends Resource
|
||||
|
||||
@export var stats: StatusStats
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name StatusSlow extends StatusEffect
|
||||
class_name StatusSlow
|
||||
extends StatusEffect
|
||||
|
||||
|
||||
func on_attached(affected: EnemyController, _existing_effects: Dictionary) -> void:
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name HitscanWeapon extends Weapon
|
||||
class_name HitscanWeapon
|
||||
extends Weapon
|
||||
|
||||
@export var raycast: RayCast3D
|
||||
@export var range_debug_indicator: CSGSphere3D
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name ProjectileWeapon extends Weapon
|
||||
class_name ProjectileWeapon
|
||||
extends Weapon
|
||||
|
||||
@export var projectile_scene: PackedScene
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name ShapecastWeapon extends Weapon
|
||||
class_name ShapecastWeapon
|
||||
extends Weapon
|
||||
|
||||
@export var shapecast: ShapeCast3D
|
||||
@export var range_debug_indicator: CSGSphere3D
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name StatusApplyingWeapon extends HitscanWeapon
|
||||
class_name StatusApplyingWeapon
|
||||
extends HitscanWeapon
|
||||
|
||||
@export var status_stats: StatusStats
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name Weapon extends Node3D
|
||||
class_name Weapon
|
||||
extends Node3D
|
||||
|
||||
signal energy_spent(energy: int, type: Data.EnergyType)
|
||||
signal energy_recharged(energy: int, type: Data.EnergyType)
|
||||
@@ -54,6 +55,7 @@ func _process(delta: float) -> void:
|
||||
energy_spent.emit(delta, stats.energy_type)
|
||||
|
||||
|
||||
@warning_ignore("unused_parameter")
|
||||
func _physics_process(delta: float) -> void:
|
||||
if trigger_held and current_energy >= energy_cost and time_since_firing >= time_between_shots:
|
||||
if stats.energy_type == Data.EnergyType.DISCRETE:
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name AlertPopup extends PanelContainer
|
||||
class_name AlertPopup
|
||||
extends PanelContainer
|
||||
|
||||
signal completed()
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name AudioOptions extends VBoxContainer
|
||||
class_name AudioOptions
|
||||
extends VBoxContainer
|
||||
|
||||
@export var master_input: SpinBox
|
||||
@export var master_slider: HSlider
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
class_name BindButton extends Button
|
||||
class_name BindButton
|
||||
extends Button
|
||||
|
||||
var trigger_event: InputEvent
|
||||
|
||||
32
Scripts/boot_logo.gd
Normal file
32
Scripts/boot_logo.gd
Normal file
@@ -0,0 +1,32 @@
|
||||
class_name BootLogo
|
||||
extends TextureRect
|
||||
|
||||
signal animation_finished()
|
||||
|
||||
var time: float = 0.0
|
||||
var x: int = 0
|
||||
var y: int = 0
|
||||
var signalled: bool = false
|
||||
@export var color_rect: ColorRect
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
time += delta
|
||||
if time >= (1.0 / 24.0):
|
||||
time -= (1.0 / 24.0)
|
||||
x += 1
|
||||
if x >= 10:
|
||||
x = 0
|
||||
y += 1
|
||||
if y == 4 and x == 4:
|
||||
var tween: Tween = create_tween()
|
||||
tween.set_ease(Tween.EASE_OUT)
|
||||
tween.set_trans(Tween.TRANS_CUBIC)
|
||||
tween.tween_property(color_rect, "offset_top", 155.0, 1.5)
|
||||
if y == 8 and x == 4:
|
||||
y = 7
|
||||
x = 5
|
||||
if !signalled:
|
||||
signalled = true
|
||||
animation_finished.emit()
|
||||
texture.region = Rect2(256.0 * x, 256.0 * y, 256.0, 256.0)
|
||||
1
Scripts/boot_logo.gd.uid
Normal file
1
Scripts/boot_logo.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://p1ugbcmjuwxg
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name CardInHand extends Node2D
|
||||
class_name CardInHand
|
||||
extends Node2D
|
||||
|
||||
var stats: Card
|
||||
@export var rarity_sprite: Sprite2D
|
||||
|
||||
35
Scripts/card_item.gd
Normal file
35
Scripts/card_item.gd
Normal file
@@ -0,0 +1,35 @@
|
||||
class_name CardItem
|
||||
extends InteractButton
|
||||
|
||||
signal pressed(card_item: CardItem)
|
||||
|
||||
@export var outline_mesh: MeshInstance3D
|
||||
@export var card_ui: CardInHand
|
||||
var card: Card = null
|
||||
var rarity_colors: Array[Color] = [
|
||||
Color8(255, 255, 255),
|
||||
Color8(50, 204, 36),
|
||||
Color8(36, 59, 204),
|
||||
Color8(181, 36, 204),
|
||||
Color8(225, 112, 30)
|
||||
]
|
||||
|
||||
|
||||
func set_card(new_card: Card) -> void:
|
||||
card = new_card
|
||||
card_ui.set_card(card)
|
||||
card_ui.view_tower()
|
||||
outline_mesh.get_surface_override_material(0).albedo_color = rarity_colors[card.rarity]
|
||||
#print(rarity_colors[card.rarity])
|
||||
|
||||
|
||||
func press(callback_player: Hero) -> void:
|
||||
pressed.emit(self)
|
||||
|
||||
|
||||
func enable_hover_effect() -> void:
|
||||
$Sprite3D.visible = true
|
||||
|
||||
|
||||
func disable_hover_effect() -> void:
|
||||
$Sprite3D.visible = false
|
||||
1
Scripts/card_item.gd.uid
Normal file
1
Scripts/card_item.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bj7oafusrrsk
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name Chatbox extends Control
|
||||
class_name Chatbox
|
||||
extends Control
|
||||
|
||||
signal opened
|
||||
signal closed
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name CinematicCamManager extends Node3D
|
||||
class_name CinematicCamManager
|
||||
extends Node3D
|
||||
|
||||
@export var path_follows: Array[PathFollow3D]
|
||||
@export var cameras: Array[Camera3D]
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name ConfirmationPopup extends PanelContainer
|
||||
class_name ConfirmationPopup
|
||||
extends PanelContainer
|
||||
|
||||
signal completed(outcome: bool)
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name Corpse extends RigidBody3D
|
||||
class_name Corpse
|
||||
extends RigidBody3D
|
||||
|
||||
|
||||
func set_sprite(tex: Texture) -> void:
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name DamageParticle extends Sprite3D
|
||||
class_name DamageParticle
|
||||
extends Sprite3D
|
||||
|
||||
@onready var label: Label = $SubViewport/Label
|
||||
var time_alive: float = 0.0
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name Effect extends Resource
|
||||
class_name Effect
|
||||
extends Resource
|
||||
|
||||
|
||||
@export var damage: int = 0
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name EightDirectionSprite3D extends Sprite3D
|
||||
class_name EightDirectionSprite3D
|
||||
extends Sprite3D
|
||||
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name EnemyCard extends RefCounted
|
||||
class_name EnemyCard
|
||||
extends RefCounted
|
||||
|
||||
|
||||
var enemy: Enemy = null
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name EnemyGoal extends Node3D
|
||||
class_name EnemyGoal
|
||||
extends Node3D
|
||||
|
||||
@export var audio_player: AudioStreamPlayer3D
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
class_name EnemySpawner extends Node3D
|
||||
class_name EnemySpawner
|
||||
extends Node3D
|
||||
|
||||
signal enemy_spawned()
|
||||
|
||||
@export var land_enemy_scene: PackedScene
|
||||
@export var leap_enemy_scene: PackedScene
|
||||
@export var air_enemy_scene: PackedScene
|
||||
@export var path: VisualizedPath
|
||||
@export var flow_field: FlowField
|
||||
@export var own_id: int = 0
|
||||
@export var type: Data.EnemyType
|
||||
@@ -21,7 +21,7 @@ var enemies_spawned: Dictionary = {}
|
||||
var enemies_to_spawn: int = 0
|
||||
var done_spawning: bool = true
|
||||
var enemy_id: int = 0
|
||||
var new_path: Path3D
|
||||
var path: Path3D
|
||||
var path_polygon: PackedScene = preload("res://path_polygon.tscn")
|
||||
var game_manager: GameManager
|
||||
|
||||
@@ -82,14 +82,14 @@ func networked_spawn_land_enemy(enemy_stats: String, id1: int, id2: int) -> void
|
||||
func create_path() -> void:
|
||||
if type != Data.EnemyType.LAND:
|
||||
return
|
||||
new_path = Path3D.new()
|
||||
new_path.curve = Curve3D.new()
|
||||
add_child(new_path)
|
||||
path = Path3D.new()
|
||||
path.curve = Curve3D.new()
|
||||
add_child(path)
|
||||
var polygon: CSGPolygon3D = path_polygon.instantiate()
|
||||
new_path.add_child(polygon)
|
||||
path.add_child(polygon)
|
||||
polygon.mode = CSGPolygon3D.MODE_PATH
|
||||
polygon.path_node = new_path.get_path()
|
||||
new_path.global_position = Vector3.ZERO
|
||||
polygon.path_node = path.get_path()
|
||||
path.global_position = Vector3.ZERO
|
||||
update_path()
|
||||
|
||||
|
||||
@@ -97,13 +97,13 @@ func create_path() -> void:
|
||||
func update_path() -> void:
|
||||
if type != Data.EnemyType.LAND:
|
||||
return
|
||||
new_path.curve.add_point(global_position + Vector3(0, 0.5, 0))
|
||||
new_path.curve = Curve3D.new()
|
||||
path.curve.add_point(global_position + Vector3(0, 0.5, 0))
|
||||
path.curve = Curve3D.new()
|
||||
var node: FlowNode = flow_field.get_closest_traversable_point(global_position)
|
||||
new_path.curve.add_point(node.global_position + Vector3(0, 0.5, 0))
|
||||
path.curve.add_point(node.global_position + Vector3(0, 0.5, 0))
|
||||
while node.best_path:
|
||||
node = node.best_path
|
||||
new_path.curve.add_point(node.global_position + Vector3(0, 0.5, 0))
|
||||
path.curve.add_point(node.global_position + Vector3(0, 0.5, 0))
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name FloatAndSpin extends RayCast3D
|
||||
class_name FloatAndSpin
|
||||
extends RayCast3D
|
||||
|
||||
@export_range(0.0, 3.0) var float_height: float = 1.5
|
||||
@export_range(0.0, 2.0) var bounce_dist: float = 0.5
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name FlowFieldTool extends Node
|
||||
class_name FlowFieldTool
|
||||
extends Node
|
||||
|
||||
@export var flow_field: FlowField
|
||||
@export var raycast: RayCast3D
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
class_name FlowNode extends StaticBody3D
|
||||
class_name FlowNode
|
||||
extends StaticBody3D
|
||||
|
||||
@export var connections: Array[FlowNode]
|
||||
@export var visualisers: Array[Node3D]
|
||||
var visual_scene: PackedScene = preload("res://cube2.tscn")
|
||||
var visual_scene: PackedScene = preload("res://Scenes/FlowField/cube2.tscn")
|
||||
@export var traversable: bool = true
|
||||
@export var buildable: bool = true
|
||||
var best_path: FlowNode :
|
||||
@@ -24,6 +25,7 @@ func _ready() -> void:
|
||||
set_connector_color(node, Color.WEB_GRAY)
|
||||
|
||||
|
||||
@warning_ignore("unused_parameter")
|
||||
func _process(delta: float) -> void:
|
||||
if visible:
|
||||
for i: int in connections.size():
|
||||
|
||||
@@ -13,7 +13,7 @@ signal switch_to_single_player
|
||||
signal switch_to_multi_player
|
||||
signal switch_to_main_menu
|
||||
|
||||
var level_scene: PackedScene = load("res://Worlds/GreenPlanet/Levels/first_level.tscn")
|
||||
var level_scene: PackedScene = load("res://Worlds/GreenPlanet/Levels/Bridge/bridge.tscn")
|
||||
var player_scene: PackedScene = load("res://PCs/hero.tscn")
|
||||
var game_end_scene: PackedScene = load("res://Scenes/Menus/GameEndScreen/game_end_screen.tscn")
|
||||
var connected_players_nodes: Dictionary = {}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name GameMode extends RefCounted
|
||||
class_name GameMode
|
||||
extends RefCounted
|
||||
|
||||
var multiplayer: bool = false
|
||||
var seeded: bool = false
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name GameplayOptionsMenu extends VBoxContainer
|
||||
class_name GameplayOptionsMenu
|
||||
extends VBoxContainer
|
||||
|
||||
@export var look_sens_slider: HSlider
|
||||
@export var look_sens_input: SpinBox
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name GraphicsOptionsMenu extends VBoxContainer
|
||||
class_name GraphicsOptionsMenu
|
||||
extends VBoxContainer
|
||||
|
||||
@export var fov_input: SpinBox
|
||||
@export var fov_slider: HSlider
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name Health extends Node
|
||||
class_name Health
|
||||
extends Node
|
||||
|
||||
signal health_depleted
|
||||
signal health_changed(health: int)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name HealthBar extends TextureProgressBar
|
||||
class_name HealthBar
|
||||
extends TextureProgressBar
|
||||
|
||||
@export var health_bar_gradient: Gradient
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name Hitbox extends CollisionShape3D
|
||||
class_name Hitbox
|
||||
extends CollisionShape3D
|
||||
|
||||
@export var critical_zone: bool = false
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name InteractButton extends StaticBody3D
|
||||
class_name InteractButton
|
||||
extends StaticBody3D
|
||||
|
||||
signal button_interacted(value: int, callback: Hero)
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name Inventory extends Node
|
||||
class_name Inventory
|
||||
extends Node
|
||||
|
||||
signal item_added(item: Item)
|
||||
signal item_removed(item: Item)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name ItemCard extends StaticBody3D
|
||||
class_name ItemCard
|
||||
extends StaticBody3D
|
||||
|
||||
@export var card: Card
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
class_name ItemContainer extends StaticBody3D
|
||||
@@ -1 +0,0 @@
|
||||
uid://c0pqprebrhakh
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name KeymapData extends RefCounted
|
||||
class_name KeymapData
|
||||
extends RefCounted
|
||||
|
||||
var title: String = "default"
|
||||
var map: Dictionary[String, Array]
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name KillBox extends Area3D
|
||||
class_name KillBox
|
||||
extends Area3D
|
||||
|
||||
@export var level: Level
|
||||
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
class_name Level extends GridMap
|
||||
class_name Level
|
||||
extends Node3D
|
||||
|
||||
@export var enemy_pool: Array[Enemy]
|
||||
@export var tower_path: Node
|
||||
@export var player_spawns: Array[Node3D]
|
||||
@export var enemy_spawns: Array[EnemySpawner]
|
||||
@export var enemy_goals: Array[Node3D]
|
||||
@export var corpses: Node3D
|
||||
@export var corpses: Node
|
||||
@export var flow_field: FlowField
|
||||
@export var cinematic_cam: CinematicCamManager
|
||||
@export var printer: CardPrinter
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
extends Control
|
||||
class_name LivesBarSegment
|
||||
extends Control
|
||||
|
||||
var lives_left: int = 6
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
class_name LivesBar
|
||||
extends TextureRect
|
||||
|
||||
@export var segments: Array[LivesBarSegment]
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name Lobby extends Control
|
||||
class_name Lobby
|
||||
extends Control
|
||||
|
||||
@export var character_select_screen: PackedScene
|
||||
#@export var scoreboard: Scoreboard
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
extends Camera3D
|
||||
class_name MinimapCamera3D
|
||||
extends Camera3D
|
||||
|
||||
@export var anchor: Node3D
|
||||
#@export var face_north: bool
|
||||
|
||||
30
Scripts/mod_menu.gd
Normal file
30
Scripts/mod_menu.gd
Normal file
@@ -0,0 +1,30 @@
|
||||
class_name ModMenu
|
||||
extends PanelContainer
|
||||
|
||||
var entry_containers: Array[HBoxContainer]
|
||||
var entry_names: Dictionary[String, Label]
|
||||
var entry_boxes: Dictionary[String, CheckBox]
|
||||
|
||||
func _ready() -> void:
|
||||
for mod_name: String in Data.mods:
|
||||
var container: HBoxContainer = HBoxContainer.new()
|
||||
entry_containers.append(container)
|
||||
$VBoxContainer/ScrollContainer/VBoxContainer.add_child(container)
|
||||
var label: Label = Label.new()
|
||||
label.text = mod_name
|
||||
container.add_child(label)
|
||||
var box: CheckBox = CheckBox.new()
|
||||
box.button_pressed = false
|
||||
container.add_child(box)
|
||||
entry_names[mod_name] = label
|
||||
entry_boxes[mod_name] = box
|
||||
load_mod_list()
|
||||
|
||||
|
||||
#TODO: make this remember preferences instead of always starting not loaded
|
||||
#TODO: make this always load the base mod
|
||||
func load_mod_list() -> void:
|
||||
var mod_list: Dictionary[String, bool] = {}
|
||||
for entry: String in entry_boxes:
|
||||
mod_list[entry] = entry_boxes[entry].button_pressed
|
||||
Data.load_mods(mod_list)
|
||||
1
Scripts/mod_menu.gd.uid
Normal file
1
Scripts/mod_menu.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cxrm2naq75jo1
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name MultiplayerLobby extends Lobby
|
||||
class_name MultiplayerLobby
|
||||
extends Lobby
|
||||
|
||||
signal player_connected(peer_id: int, player_profile: PlayerProfile)
|
||||
signal player_disconnected(peer_id: int)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name OnTopCamera extends Camera3D
|
||||
class_name OnTopCamera
|
||||
extends Camera3D
|
||||
|
||||
@export var clone_camera: Node3D
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name OptionsMenu extends Control
|
||||
class_name OptionsMenu
|
||||
extends Control
|
||||
|
||||
@export var gameplay: GameplayOptionsMenu
|
||||
@export var graphics: GraphicsOptionsMenu
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
class_name PathVisualThing extends PathFollow3D
|
||||
|
||||
@export var speed: float = 0.5
|
||||
@export var world_model: Node3D
|
||||
@export var minimap_model: Node3D
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
progress += speed * delta
|
||||
|
||||
|
||||
func set_world_visible(value: bool) -> void:
|
||||
world_model.set_visible(value)
|
||||
|
||||
|
||||
func set_minimap_visible(value: bool) -> void:
|
||||
minimap_model.set_visible(value)
|
||||
@@ -1 +0,0 @@
|
||||
uid://cr3sfjjo6l6n2
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name PickupNotification extends PanelContainer
|
||||
class_name PickupNotification
|
||||
extends PanelContainer
|
||||
|
||||
@export var fade_out_time: float
|
||||
@export var style: StyleBoxFlat
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name RoundStats extends RefCounted
|
||||
class_name RoundStats
|
||||
extends RefCounted
|
||||
|
||||
var enemies_undefeated: Dictionary
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name Scoreboard extends PanelContainer
|
||||
class_name Scoreboard
|
||||
extends PanelContainer
|
||||
|
||||
signal all_players_ready()
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name ScoreboardEntry extends HBoxContainer
|
||||
class_name ScoreboardEntry
|
||||
extends HBoxContainer
|
||||
|
||||
var display_name: String
|
||||
var character: int
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name ServerForm extends PanelContainer
|
||||
class_name ServerForm
|
||||
extends PanelContainer
|
||||
|
||||
signal connect_button_pressed
|
||||
signal host_button_pressed
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name SinglePlayerLobby extends Lobby
|
||||
class_name SinglePlayerLobby
|
||||
extends Lobby
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name SpriteBobber extends Node
|
||||
class_name SpriteBobber
|
||||
extends Node
|
||||
|
||||
@export var character: EnemyController
|
||||
@export var sprite: Node3D
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name StatusEffector extends Node
|
||||
class_name StatusEffector
|
||||
extends Node
|
||||
|
||||
@export var sprite_container: Container ## Container that effect icons should be instantiated under
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name Dummy extends EnemyController
|
||||
class_name Dummy
|
||||
extends EnemyController
|
||||
|
||||
|
||||
func _on_health_health_depleted() -> void:
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name TargetFinder extends Node
|
||||
class_name TargetFinder
|
||||
extends Node
|
||||
|
||||
enum TARGETING_STRATEGY {
|
||||
RANDOM = 0,
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name TextInputPopup extends PanelContainer
|
||||
class_name TextInputPopup
|
||||
extends PanelContainer
|
||||
|
||||
signal completed(outcome: bool)
|
||||
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
class_name VisualizedPath extends Path3D
|
||||
|
||||
var visual_scene: PackedScene = preload("res://Scenes/path_visual_thing.tscn")
|
||||
var length: float = 0.0
|
||||
var visualizer_points: Array = []
|
||||
|
||||
|
||||
func spawn_visualizer_points() -> void:
|
||||
var new_length: float = curve.get_baked_length()
|
||||
for x: int in floori(new_length) - visualizer_points.size():
|
||||
var point: PathFollow3D = visual_scene.instantiate()
|
||||
visualizer_points.append(point)
|
||||
add_child(point)
|
||||
length = new_length
|
||||
#print(str(int(length)) + " / " + str(visualizer_points.size()) + ", diff: " + str(visualizer_points.size() - length))
|
||||
for x: int in visualizer_points.size():
|
||||
visualizer_points[x].progress_ratio = float(x) / visualizer_points.size()
|
||||
enable_visualization()
|
||||
|
||||
|
||||
func disable_visualization() -> void:
|
||||
for x: PathFollow3D in visualizer_points:
|
||||
x.set_world_visible(false)
|
||||
|
||||
|
||||
func enable_visualization() -> void:
|
||||
for x: PathFollow3D in visualizer_points:
|
||||
x.set_world_visible(true)
|
||||
@@ -1 +0,0 @@
|
||||
uid://cd500cyj1tdyw
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name Wave extends RefCounted
|
||||
class_name Wave
|
||||
extends RefCounted
|
||||
|
||||
|
||||
var enemy_groups: Array[EnemyCard]
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name WaveManager extends Object
|
||||
class_name WaveManager
|
||||
extends Object
|
||||
## A collection of static functions related to enemy wave generation
|
||||
##
|
||||
## Contains the algorithm for generating a wave based on a given pool of enemies
|
||||
|
||||
Reference in New Issue
Block a user