-misc: tidied up few bits of code where possible and time allowed
This commit is contained in:
parent
83b0eb6ea9
commit
d4a03d680b
BIN
MB_FYP/assets/icon/ShipBlue.ico
Normal file
BIN
MB_FYP/assets/icon/ShipBlue.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 111 KiB |
BIN
MB_FYP/assets/icon/ShipBlue.png
Normal file
BIN
MB_FYP/assets/icon/ShipBlue.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.9 KiB |
34
MB_FYP/assets/icon/ShipBlue.png.import
Normal file
34
MB_FYP/assets/icon/ShipBlue.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dggnstc50lox4"
|
||||||
|
path="res://.godot/imported/ShipBlue.png-723e15394f2d4b9314849048fef9ccf6.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/icon/ShipBlue.png"
|
||||||
|
dest_files=["res://.godot/imported/ShipBlue.png-723e15394f2d4b9314849048fef9ccf6.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
65
MB_FYP/export_presets.cfg
Normal file
65
MB_FYP/export_presets.cfg
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
[preset.0]
|
||||||
|
|
||||||
|
name="Starfighter"
|
||||||
|
platform="Windows Desktop"
|
||||||
|
runnable=true
|
||||||
|
dedicated_server=false
|
||||||
|
custom_features=""
|
||||||
|
export_filter="all_resources"
|
||||||
|
include_filter="config/*.cfg"
|
||||||
|
exclude_filter=""
|
||||||
|
export_path="bin/starfighter.exe"
|
||||||
|
encryption_include_filters=""
|
||||||
|
encryption_exclude_filters=""
|
||||||
|
encrypt_pck=false
|
||||||
|
encrypt_directory=false
|
||||||
|
|
||||||
|
[preset.0.options]
|
||||||
|
|
||||||
|
custom_template/debug=""
|
||||||
|
custom_template/release=""
|
||||||
|
debug/export_console_wrapper=1
|
||||||
|
binary_format/embed_pck=false
|
||||||
|
texture_format/bptc=true
|
||||||
|
texture_format/s3tc=true
|
||||||
|
texture_format/etc=false
|
||||||
|
texture_format/etc2=false
|
||||||
|
binary_format/architecture="x86_64"
|
||||||
|
codesign/enable=false
|
||||||
|
codesign/timestamp=true
|
||||||
|
codesign/timestamp_server_url=""
|
||||||
|
codesign/digest_algorithm=1
|
||||||
|
codesign/description=""
|
||||||
|
codesign/custom_options=PackedStringArray()
|
||||||
|
application/modify_resources=true
|
||||||
|
application/icon="res://assets/icon/ShipBlue.ico"
|
||||||
|
application/console_wrapper_icon=""
|
||||||
|
application/icon_interpolation=4
|
||||||
|
application/file_version=""
|
||||||
|
application/product_version=""
|
||||||
|
application/company_name=""
|
||||||
|
application/product_name=""
|
||||||
|
application/file_description=""
|
||||||
|
application/copyright=""
|
||||||
|
application/trademarks=""
|
||||||
|
application/export_angle=0
|
||||||
|
ssh_remote_deploy/enabled=false
|
||||||
|
ssh_remote_deploy/host="user@host_ip"
|
||||||
|
ssh_remote_deploy/port="22"
|
||||||
|
ssh_remote_deploy/extra_args_ssh=""
|
||||||
|
ssh_remote_deploy/extra_args_scp=""
|
||||||
|
ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}'
|
||||||
|
$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}'
|
||||||
|
$trigger = New-ScheduledTaskTrigger -Once -At 00:00
|
||||||
|
$settings = New-ScheduledTaskSettingsSet
|
||||||
|
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
|
||||||
|
Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true
|
||||||
|
Start-ScheduledTask -TaskName godot_remote_debug
|
||||||
|
while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 }
|
||||||
|
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue"
|
||||||
|
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
|
||||||
|
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
|
||||||
|
Remove-Item -Recurse -Force '{temp_dir}'"
|
||||||
|
dotnet/include_scripts_content=false
|
||||||
|
dotnet/include_debug_symbols=true
|
||||||
|
dotnet/embed_build_outputs=false
|
||||||
|
|
@ -11,14 +11,71 @@ config_version=5
|
||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/name="MB_FYP"
|
config/name="MB_FYP"
|
||||||
run/main_scene="res://scenes/game.tscn"
|
run/main_scene="res://scenes/ui/main_menu.tscn"
|
||||||
config/features=PackedStringArray("4.1", "Forward Plus")
|
config/features=PackedStringArray("4.2", "C#", "Forward Plus")
|
||||||
config/icon="res://icon.svg"
|
config/icon="res://icon.svg"
|
||||||
|
|
||||||
|
[display]
|
||||||
|
|
||||||
|
window/size/viewport_width=1920
|
||||||
|
window/size/viewport_height=1080
|
||||||
|
|
||||||
[dotnet]
|
[dotnet]
|
||||||
|
|
||||||
project/assembly_name="MB_FYP"
|
project/assembly_name="MB_FYP"
|
||||||
|
|
||||||
|
[input]
|
||||||
|
|
||||||
|
up={
|
||||||
|
"deadzone": 0.5,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
left={
|
||||||
|
"deadzone": 0.5,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
down={
|
||||||
|
"deadzone": 0.5,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
right={
|
||||||
|
"deadzone": 0.5,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
strafe_left={
|
||||||
|
"deadzone": 0.5,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
strafe_right={
|
||||||
|
"deadzone": 0.5,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
shoot={
|
||||||
|
"deadzone": 0.5,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
reset={
|
||||||
|
"deadzone": 0.5,
|
||||||
|
"events": []
|
||||||
|
}
|
||||||
|
toggle_fa={
|
||||||
|
"deadzone": 0.5,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":70,"key_label":0,"unicode":102,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
pause={
|
||||||
|
"deadzone": 0.5,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":80,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
[rendering]
|
[rendering]
|
||||||
|
|
||||||
environment/defaults/default_clear_color=Color(0.184314, 0.184314, 0.184314, 1)
|
environment/defaults/default_clear_color=Color(0, 0, 0, 1)
|
||||||
|
|
|
||||||
|
|
@ -8118,16 +8118,16 @@ process_mode = 1
|
||||||
position = Vector2(1228, 195)
|
position = Vector2(1228, 195)
|
||||||
|
|
||||||
[node name="Asteroid2" parent="Asteroids" instance=ExtResource("7_xcalb")]
|
[node name="Asteroid2" parent="Asteroids" instance=ExtResource("7_xcalb")]
|
||||||
position = Vector2(332, 661)
|
position = Vector2(1852, 963)
|
||||||
|
|
||||||
[node name="Asteroid3" parent="Asteroids" instance=ExtResource("7_xcalb")]
|
[node name="Asteroid3" parent="Asteroids" instance=ExtResource("7_xcalb")]
|
||||||
position = Vector2(1450, 641)
|
position = Vector2(-469, 375)
|
||||||
|
|
||||||
[node name="Asteroid4" parent="Asteroids" instance=ExtResource("7_xcalb")]
|
[node name="Asteroid4" parent="Asteroids" instance=ExtResource("7_xcalb")]
|
||||||
position = Vector2(769, 202)
|
position = Vector2(469, -573)
|
||||||
|
|
||||||
[node name="Asteroid5" parent="Asteroids" instance=ExtResource("7_xcalb")]
|
[node name="Asteroid5" parent="Asteroids" instance=ExtResource("7_xcalb")]
|
||||||
position = Vector2(387, 230)
|
position = Vector2(433, 922)
|
||||||
|
|
||||||
[node name="BackgroundTileMap" type="TileMap" parent="."]
|
[node name="BackgroundTileMap" type="TileMap" parent="."]
|
||||||
position = Vector2(900, 500)
|
position = Vector2(900, 500)
|
||||||
|
|
@ -8202,6 +8202,11 @@ position = Vector2(1921, 1512)
|
||||||
[node name="FSpawn3" type="Marker2D" parent="WaveController/Spawns/Friendly"]
|
[node name="FSpawn3" type="Marker2D" parent="WaveController/Spawns/Friendly"]
|
||||||
position = Vector2(1279, -637)
|
position = Vector2(1279, -637)
|
||||||
|
|
||||||
|
[connection signal="Exploded" from="Asteroids/Asteroid" to="." method="OnAsteroidExploded"]
|
||||||
|
[connection signal="Exploded" from="Asteroids/Asteroid2" to="." method="OnAsteroidExploded"]
|
||||||
|
[connection signal="Exploded" from="Asteroids/Asteroid3" to="." method="OnAsteroidExploded"]
|
||||||
|
[connection signal="Exploded" from="Asteroids/Asteroid4" to="." method="OnAsteroidExploded"]
|
||||||
|
[connection signal="Exploded" from="Asteroids/Asteroid5" to="." method="OnAsteroidExploded"]
|
||||||
[connection signal="HealthUpdate" from="WaveController/Ships/Friendly/Player" to="." method="OnPlayerHealthUpdate"]
|
[connection signal="HealthUpdate" from="WaveController/Ships/Friendly/Player" to="." method="OnPlayerHealthUpdate"]
|
||||||
[connection signal="LaserShot" from="WaveController/Ships/Friendly/Player" to="." method="OnPlayerLaserShot"]
|
[connection signal="LaserShot" from="WaveController/Ships/Friendly/Player" to="." method="OnPlayerLaserShot"]
|
||||||
[connection signal="PlayerDeath" from="WaveController/Ships/Friendly/Player" to="." method="OnPlayerDeath"]
|
[connection signal="PlayerDeath" from="WaveController/Ships/Friendly/Player" to="." method="OnPlayerDeath"]
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,6 @@ text = "Forward"
|
||||||
|
|
||||||
[node name="InpFwd" type="Button" parent="Layout/Forward"]
|
[node name="InpFwd" type="Button" parent="Layout/Forward"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "W"
|
|
||||||
|
|
||||||
[node name="Backward" type="HBoxContainer" parent="Layout"]
|
[node name="Backward" type="HBoxContainer" parent="Layout"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
@ -60,7 +59,6 @@ text = "Backward"
|
||||||
|
|
||||||
[node name="InpBack" type="Button" parent="Layout/Backward"]
|
[node name="InpBack" type="Button" parent="Layout/Backward"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "S"
|
|
||||||
|
|
||||||
[node name="Left" type="HBoxContainer" parent="Layout"]
|
[node name="Left" type="HBoxContainer" parent="Layout"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
@ -72,7 +70,6 @@ text = "Rotate Left"
|
||||||
|
|
||||||
[node name="InpLeft" type="Button" parent="Layout/Left"]
|
[node name="InpLeft" type="Button" parent="Layout/Left"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "A"
|
|
||||||
|
|
||||||
[node name="Right" type="HBoxContainer" parent="Layout"]
|
[node name="Right" type="HBoxContainer" parent="Layout"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
@ -84,7 +81,6 @@ text = "Rotate Right"
|
||||||
|
|
||||||
[node name="InpRight" type="Button" parent="Layout/Right"]
|
[node name="InpRight" type="Button" parent="Layout/Right"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "D"
|
|
||||||
|
|
||||||
[node name="StrafeL" type="HBoxContainer" parent="Layout"]
|
[node name="StrafeL" type="HBoxContainer" parent="Layout"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
@ -97,7 +93,6 @@ text = "Strafe Left
|
||||||
|
|
||||||
[node name="InpSL" type="Button" parent="Layout/StrafeL"]
|
[node name="InpSL" type="Button" parent="Layout/StrafeL"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Left"
|
|
||||||
|
|
||||||
[node name="StrafeR" type="HBoxContainer" parent="Layout"]
|
[node name="StrafeR" type="HBoxContainer" parent="Layout"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
@ -109,7 +104,6 @@ text = "Strafe Right"
|
||||||
|
|
||||||
[node name="InpSR" type="Button" parent="Layout/StrafeR"]
|
[node name="InpSR" type="Button" parent="Layout/StrafeR"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Right"
|
|
||||||
|
|
||||||
[node name="Shoot" type="HBoxContainer" parent="Layout"]
|
[node name="Shoot" type="HBoxContainer" parent="Layout"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
@ -121,7 +115,6 @@ text = "Shoot"
|
||||||
|
|
||||||
[node name="InpShoot" type="Button" parent="Layout/Shoot"]
|
[node name="InpShoot" type="Button" parent="Layout/Shoot"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Space"
|
|
||||||
|
|
||||||
[node name="Flight Assist" type="HBoxContainer" parent="Layout"]
|
[node name="Flight Assist" type="HBoxContainer" parent="Layout"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
@ -133,7 +126,6 @@ text = "Flight Assist"
|
||||||
|
|
||||||
[node name="InpFA" type="Button" parent="Layout/Flight Assist"]
|
[node name="InpFA" type="Button" parent="Layout/Flight Assist"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "F"
|
|
||||||
|
|
||||||
[node name="Pause" type="HBoxContainer" parent="Layout"]
|
[node name="Pause" type="HBoxContainer" parent="Layout"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
@ -145,7 +137,6 @@ text = "Pause"
|
||||||
|
|
||||||
[node name="InpPause" type="Button" parent="Layout/Pause"]
|
[node name="InpPause" type="Button" parent="Layout/Pause"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "P"
|
|
||||||
|
|
||||||
[node name="VSeparator3" type="VSeparator" parent="Layout"]
|
[node name="VSeparator3" type="VSeparator" parent="Layout"]
|
||||||
z_index = -1
|
z_index = -1
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,16 @@
|
||||||
[gd_scene load_steps=4 format=3 uid="uid://bh3heupvlc1ok"]
|
[gd_scene load_steps=7 format=3 uid="uid://bh3heupvlc1ok"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://script/ui/main_menu.cs" id="1_wxwq5"]
|
[ext_resource type="Script" path="res://script/ui/main_menu.cs" id="1_wxwq5"]
|
||||||
[ext_resource type="PackedScene" uid="uid://01tjlnox4crb" path="res://scenes/ui/input_menu.tscn" id="2_2h615"]
|
[ext_resource type="PackedScene" uid="uid://01tjlnox4crb" path="res://scenes/ui/input_menu.tscn" id="2_2h615"]
|
||||||
|
[ext_resource type="FontFile" uid="uid://dtpvg4lmre10g" path="res://assets/Fonts/Kenney Future Narrow.ttf" id="2_i5fg3"]
|
||||||
[ext_resource type="PackedScene" uid="uid://fwvsy2g3lj4f" path="res://scenes/ui/ship_choice.tscn" id="3_the1x"]
|
[ext_resource type="PackedScene" uid="uid://fwvsy2g3lj4f" path="res://scenes/ui/ship_choice.tscn" id="3_the1x"]
|
||||||
|
|
||||||
|
[sub_resource type="Theme" id="Theme_g7jy6"]
|
||||||
|
default_font = ExtResource("2_i5fg3")
|
||||||
|
|
||||||
|
[sub_resource type="LabelSettings" id="LabelSettings_lgp16"]
|
||||||
|
font_size = 50
|
||||||
|
|
||||||
[node name="MainMenu" type="Control"]
|
[node name="MainMenu" type="Control"]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 0
|
anchors_preset = 0
|
||||||
|
|
@ -23,32 +30,44 @@ grow_vertical = 2
|
||||||
color = Color(0.143949, 0.135649, 0.124581, 1)
|
color = Color(0.143949, 0.135649, 0.124581, 1)
|
||||||
|
|
||||||
[node name="CenterContainer" type="CenterContainer" parent="CanvasLayer"]
|
[node name="CenterContainer" type="CenterContainer" parent="CanvasLayer"]
|
||||||
anchors_preset = 5
|
anchors_preset = 15
|
||||||
anchor_left = 0.5
|
anchor_right = 1.0
|
||||||
anchor_right = 0.5
|
anchor_bottom = 1.0
|
||||||
offset_left = -48.0
|
|
||||||
offset_right = 48.0
|
|
||||||
offset_bottom = 101.0
|
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
|
||||||
[node name="Layout" type="VBoxContainer" parent="CanvasLayer/CenterContainer"]
|
[node name="Layout" type="VBoxContainer" parent="CanvasLayer/CenterContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="ExitButton" type="Button" parent="CanvasLayer/CenterContainer/Layout"]
|
[node name="Label" type="Label" parent="CanvasLayer/CenterContainer/Layout"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme = SubResource("Theme_g7jy6")
|
||||||
|
text = "Starfighter"
|
||||||
|
label_settings = SubResource("LabelSettings_lgp16")
|
||||||
|
horizontal_alignment = 1
|
||||||
|
|
||||||
|
[node name="VSeparator" type="VSeparator" parent="CanvasLayer/CenterContainer/Layout"]
|
||||||
|
visibility_layer = 0
|
||||||
|
custom_minimum_size = Vector2(0, 400)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Exit Game
|
|
||||||
"
|
|
||||||
|
|
||||||
[node name="InputButton" type="Button" parent="CanvasLayer/CenterContainer/Layout"]
|
[node name="InputButton" type="Button" parent="CanvasLayer/CenterContainer/Layout"]
|
||||||
|
visible = false
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Inputs
|
text = "Inputs
|
||||||
"
|
"
|
||||||
|
|
||||||
[node name="StartButton" type="Button" parent="CanvasLayer/CenterContainer/Layout"]
|
[node name="StartButton" type="Button" parent="CanvasLayer/CenterContainer/Layout"]
|
||||||
|
custom_minimum_size = Vector2(400, 200)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Start Game
|
text = "Start Game
|
||||||
"
|
"
|
||||||
|
|
||||||
|
[node name="ExitButton" type="Button" parent="CanvasLayer/CenterContainer/Layout"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "Exit Game
|
||||||
|
"
|
||||||
|
|
||||||
[node name="InputMenu" parent="." instance=ExtResource("2_2h615")]
|
[node name="InputMenu" parent="." instance=ExtResource("2_2h615")]
|
||||||
visible = false
|
visible = false
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ layout_mode = 2
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="InputsButton" type="Button" parent="VBox/HBox"]
|
[node name="InputsButton" type="Button" parent="VBox/HBox"]
|
||||||
|
visible = false
|
||||||
custom_minimum_size = Vector2(100, 0)
|
custom_minimum_size = Vector2(100, 0)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme = SubResource("Theme_siirn")
|
theme = SubResource("Theme_siirn")
|
||||||
|
|
|
||||||
|
|
@ -41,32 +41,27 @@ public partial class Laser : Area2D
|
||||||
ship.ShipFaction.ENEMY => body.Faction is ship.ShipFaction.FRIENDLY or ship.ShipFaction.PLAYER,
|
ship.ShipFaction.ENEMY => body.Faction is ship.ShipFaction.FRIENDLY or ship.ShipFaction.PLAYER,
|
||||||
ship.ShipFaction.FRIENDLY => body.Faction is ship.ShipFaction.ENEMY or ship.ShipFaction.ACE,
|
ship.ShipFaction.FRIENDLY => body.Faction is ship.ShipFaction.ENEMY or ship.ShipFaction.ACE,
|
||||||
ship.ShipFaction.ACE => body.Faction is ship.ShipFaction.FRIENDLY or ship.ShipFaction.PLAYER,
|
ship.ShipFaction.ACE => body.Faction is ship.ShipFaction.FRIENDLY or ship.ShipFaction.PLAYER,
|
||||||
_ => throw new ArgumentOutOfRangeException() // thank you rider very cool
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnBodyEntered(Node body)
|
private void OnBodyEntered(Node body)
|
||||||
{
|
{
|
||||||
GD.Print("Laser hit something: ", body.Name);
|
|
||||||
|
|
||||||
if (body is ship target)
|
if (body is ship target)
|
||||||
{
|
{
|
||||||
if (Shooter != null && !ValidTargetFaction(target))
|
if (Shooter != null && !ValidTargetFaction(target))
|
||||||
{
|
{
|
||||||
GD.Print("friendly fire");
|
|
||||||
QueueFree();
|
QueueFree();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GD.Print("Hit type: ", body.GetType());
|
|
||||||
target.ShipDamage(Shooter.Damage);
|
target.ShipDamage(Shooter.Damage);
|
||||||
QueueFree();
|
QueueFree();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (body is StaticBody2D)
|
else if (body is StaticBody2D) // border detection
|
||||||
{
|
{
|
||||||
//GD.Print("laser hit border");
|
|
||||||
QueueFree();
|
QueueFree();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -59,11 +59,6 @@ public partial class ai_fighter : ship
|
||||||
}
|
}
|
||||||
|
|
||||||
// SETUP
|
// SETUP
|
||||||
private void SetupAI()
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void UpdateHealthLabel(int health)
|
public void UpdateHealthLabel(int health)
|
||||||
{
|
{
|
||||||
_healthLabel.Text = health.ToString();
|
_healthLabel.Text = health.ToString();
|
||||||
|
|
@ -96,11 +91,7 @@ public partial class ai_fighter : ship
|
||||||
|
|
||||||
private void HandleFiring(double delta)
|
private void HandleFiring(double delta)
|
||||||
{
|
{
|
||||||
//GD.Print(Name, ": checking fire");
|
|
||||||
//GD.Print(Name, ": fireTimer = ", fireTimer);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FireTimer -= (float)delta; // countdown to next shot available
|
FireTimer -= (float)delta; // countdown to next shot available
|
||||||
if (FireTimer > 0f) return; // if countdown not finished then no shoot
|
if (FireTimer > 0f) return; // if countdown not finished then no shoot
|
||||||
|
|
||||||
|
|
@ -112,12 +103,8 @@ public partial class ai_fighter : ship
|
||||||
float angleDiff = Mathf.Abs(Mathf.AngleDifference(Rotation, angleToTarget));
|
float angleDiff = Mathf.Abs(Mathf.AngleDifference(Rotation, angleToTarget));
|
||||||
float distance = GlobalPosition.DistanceTo(_currentTarget.GlobalPosition);
|
float distance = GlobalPosition.DistanceTo(_currentTarget.GlobalPosition);
|
||||||
|
|
||||||
//GD.Print(Name, ": angleDiff = ", Mathf.RadToDeg(angleDiff));
|
|
||||||
|
|
||||||
if (angleDiff < 0.4f && distance <= EngageDistance + 200f) // fire when in range and mostly aligned
|
if (angleDiff < 0.4f && distance <= EngageDistance + 200f) // fire when in range and mostly aligned
|
||||||
{
|
{
|
||||||
//GD.Print(Name, ": angleDiff = ", angleDiff, ", distance = ", distance);
|
|
||||||
|
|
||||||
ShootLaser();
|
ShootLaser();
|
||||||
FireTimer = FireCooldown; // resets cooldown
|
FireTimer = FireCooldown; // resets cooldown
|
||||||
}
|
}
|
||||||
|
|
@ -140,7 +127,7 @@ public partial class ai_fighter : ship
|
||||||
}
|
}
|
||||||
if (shipParent == null)
|
if (shipParent == null)
|
||||||
{
|
{
|
||||||
GD.Print("No shipParent found");
|
//GD.Print("No shipParent found");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -71,8 +71,8 @@ public partial class asteroid : Area2D
|
||||||
public void Explode(ship shooter)
|
public void Explode(ship shooter)
|
||||||
{
|
{
|
||||||
//DEBUG PRINT
|
//DEBUG PRINT
|
||||||
GD.Print($"DEBUG: Explode() called for {Name} at {GlobalPosition}");
|
//GD.Print($"DEBUG: Explode() called for {Name} at {GlobalPosition}");
|
||||||
GD.Print($"DEBUG: {Name} calling Explode()");
|
//GD.Print($"DEBUG: {Name} calling Explode()");
|
||||||
EmitSignal(SignalName.Exploded, GlobalPosition, (int)Size, shooter);
|
EmitSignal(SignalName.Exploded, GlobalPosition, (int)Size, shooter);
|
||||||
QueueFree();
|
QueueFree();
|
||||||
}
|
}
|
||||||
|
|
@ -88,8 +88,8 @@ public partial class asteroid : Area2D
|
||||||
if (body is ship ship)
|
if (body is ship ship)
|
||||||
{
|
{
|
||||||
ship.ShipDamage((30));
|
ship.ShipDamage((30));
|
||||||
GD.Print(("ship asteroid collide"));
|
//GD.Print(("ship asteroid collide"));
|
||||||
GD.Print(ship.Name, ship.Health);
|
//GD.Print(ship.Name, ship.Health);
|
||||||
}
|
}
|
||||||
else if (body is StaticBody2D)
|
else if (body is StaticBody2D)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -23,11 +23,6 @@ public partial class player : ship // Inherits from base ship class
|
||||||
|
|
||||||
private void GetInput()
|
private void GetInput()
|
||||||
{
|
{
|
||||||
/*LookAt(GetGlobalMousePosition()); //used for mouse-based rotation and movement
|
|
||||||
Velocity = Transform.X * Input.GetAxis("down", "up") * Speed;
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Movement, could probably move into its own methods instead of GetInput()
|
|
||||||
RotationDirection = (int)Input.GetAxis("left", "right");
|
RotationDirection = (int)Input.GetAxis("left", "right");
|
||||||
_angularVelocity += RotationDirection * _angularAccel;
|
_angularVelocity += RotationDirection * _angularAccel;
|
||||||
_angularVelocity = Mathf.Clamp(_angularVelocity, -RotationSpeed, RotationSpeed);
|
_angularVelocity = Mathf.Clamp(_angularVelocity, -RotationSpeed, RotationSpeed);
|
||||||
|
|
@ -37,18 +32,15 @@ public partial class player : ship // Inherits from base ship class
|
||||||
_angularVelocity = Mathf.MoveToward(_angularVelocity, 0f, FlightAssistValue);
|
_angularVelocity = Mathf.MoveToward(_angularVelocity, 0f, FlightAssistValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
//GD.Print(RotationDirection);
|
|
||||||
Velocity += (Transform.X * Input.GetAxis("strafe_left", "strafe_right") * StrafeSpeed) + (Transform.Y * Input.GetAxis("up", "down") * MainSpeed);
|
Velocity += (Transform.X * Input.GetAxis("strafe_left", "strafe_right") * StrafeSpeed) + (Transform.Y * Input.GetAxis("up", "down") * MainSpeed);
|
||||||
Velocity = Velocity.LimitLength(MaxSpeed);
|
Velocity = Velocity.LimitLength(MaxSpeed);
|
||||||
|
|
||||||
//move into selection statement for toggling between fa off and on
|
|
||||||
if(Input.GetAxis("strafe_left", "strafe_right") == 0){
|
if(Input.GetAxis("strafe_left", "strafe_right") == 0){
|
||||||
Velocity = Velocity.MoveToward(Vector2.Zero, FlightAssistValue);
|
Velocity = Velocity.MoveToward(Vector2.Zero, FlightAssistValue);
|
||||||
}
|
}
|
||||||
else if(Input.GetAxis("down", "up") == 0){
|
else if(Input.GetAxis("down", "up") == 0){
|
||||||
Velocity = Velocity.MoveToward(Vector2.Zero, FlightAssistValue);
|
Velocity = Velocity.MoveToward(Vector2.Zero, FlightAssistValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
//FA toggle
|
//FA toggle
|
||||||
if (Input.IsActionJustPressed("toggle_fa"))
|
if (Input.IsActionJustPressed("toggle_fa"))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -49,8 +49,6 @@ public partial class ship : CharacterBody2D
|
||||||
|
|
||||||
protected virtual void ShootLaser()
|
protected virtual void ShootLaser()
|
||||||
{
|
{
|
||||||
GD.Print(Name, ": firing laser");
|
|
||||||
|
|
||||||
Laser laser = LaserScene.Instantiate<Laser>();
|
Laser laser = LaserScene.Instantiate<Laser>();
|
||||||
laser.Position = LaserSpawn.GlobalPosition + -Transform.Y * 25f;
|
laser.Position = LaserSpawn.GlobalPosition + -Transform.Y * 25f;
|
||||||
laser.Shooter = this;
|
laser.Shooter = this;
|
||||||
|
|
@ -197,7 +195,7 @@ public partial class ship : CharacterBody2D
|
||||||
|
|
||||||
protected virtual void Explode()
|
protected virtual void Explode()
|
||||||
{
|
{
|
||||||
GD.Print(Name, " exploded");
|
//GD.Print(Name, " exploded");
|
||||||
QueueFree();
|
QueueFree();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,8 @@ public partial class input_menu : CenterContainer
|
||||||
private Button _inpFA;
|
private Button _inpFA;
|
||||||
private Button _inpPause;
|
private Button _inpPause;
|
||||||
|
|
||||||
|
private bool _buttonInit = false;
|
||||||
|
|
||||||
public override void _Ready()
|
public override void _Ready()
|
||||||
{
|
{
|
||||||
awaitingLabel = GetNode<Label>("Layout/ListenLabel");
|
awaitingLabel = GetNode<Label>("Layout/ListenLabel");
|
||||||
|
|
@ -46,8 +48,18 @@ public partial class input_menu : CenterContainer
|
||||||
_inpShoot.Pressed += () => StartRebind("shoot", _inpShoot);
|
_inpShoot.Pressed += () => StartRebind("shoot", _inpShoot);
|
||||||
_inpFA.Pressed += () => StartRebind("toggle_fa", _inpFA);
|
_inpFA.Pressed += () => StartRebind("toggle_fa", _inpFA);
|
||||||
_inpPause.Pressed += () => StartRebind("pause", _inpPause);
|
_inpPause.Pressed += () => StartRebind("pause", _inpPause);
|
||||||
LoadInputConfig();
|
//LoadInputConfig();
|
||||||
UpdateButtonText();
|
//UpdateButtonText();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void _Process(double delta)
|
||||||
|
{
|
||||||
|
if (Visible && _buttonInit)
|
||||||
|
{
|
||||||
|
LoadInputConfig();
|
||||||
|
UpdateButtonText();
|
||||||
|
_buttonInit = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateButtonText()
|
private void UpdateButtonText()
|
||||||
|
|
@ -132,7 +144,8 @@ public partial class input_menu : CenterContainer
|
||||||
|
|
||||||
public void ShowInputPanel()
|
public void ShowInputPanel()
|
||||||
{
|
{
|
||||||
this.Visible = true;
|
this.Visible = true;
|
||||||
|
UpdateButtonText();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void HideInputPanel()
|
public void HideInputPanel()
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,24 @@ public partial class main_menu : Control
|
||||||
|
|
||||||
public override void _Ready()
|
public override void _Ready()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
//input file handling
|
||||||
|
//GD.Print(FileAccess.FileExists("user://config/input.cfg"));
|
||||||
|
if (!FileAccess.FileExists("user://config/input.cfg"))
|
||||||
|
{
|
||||||
|
//GD.Print("No user input.cfg found — copying default config.");
|
||||||
|
var src = FileAccess.Open("res://config/input.cfg", FileAccess.ModeFlags.Read);
|
||||||
|
var dst = FileAccess.Open("user://config/input.cfg", FileAccess.ModeFlags.Write);
|
||||||
|
|
||||||
|
//GD.Print("Contents of default input.cfg:\n", src.GetAsText());
|
||||||
|
|
||||||
|
dst.StoreString(src.GetAsText());
|
||||||
|
src.Close();
|
||||||
|
dst.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
_inputMenu = GetNode<input_menu>("InputMenu");
|
_inputMenu = GetNode<input_menu>("InputMenu");
|
||||||
_shipChoice = GetNode<ship_choice>("ShipChoice");
|
_shipChoice = GetNode<ship_choice>("ShipChoice");
|
||||||
_layout = GetNode<VBoxContainer>("CanvasLayer/CenterContainer/Layout");
|
_layout = GetNode<VBoxContainer>("CanvasLayer/CenterContainer/Layout");
|
||||||
|
|
@ -20,7 +38,7 @@ public partial class main_menu : Control
|
||||||
GetNode<Button>("CanvasLayer/CenterContainer/Layout/InputButton").Pressed += OnInputButtonPressed;
|
GetNode<Button>("CanvasLayer/CenterContainer/Layout/InputButton").Pressed += OnInputButtonPressed;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnStartButtonPressed()
|
private void OnStartButtonPressed()
|
||||||
{
|
{
|
||||||
_layout.Hide();
|
_layout.Hide();
|
||||||
|
|
@ -34,7 +52,7 @@ public partial class main_menu : Control
|
||||||
|
|
||||||
private void OnInputButtonPressed()
|
private void OnInputButtonPressed()
|
||||||
{
|
{
|
||||||
_inputMenu.Show();
|
_inputMenu.ShowInputPanel();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called every frame. 'delta' has been the elapsed time since the previous frame.
|
// Called every frame. 'delta' has been the elapsed time since the previous frame.
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ public partial class pause_menu : CenterContainer
|
||||||
|
|
||||||
_inputButton.Pressed += () =>
|
_inputButton.Pressed += () =>
|
||||||
{
|
{
|
||||||
_inputMenu.Visible = true;
|
_inputMenu.ShowInputPanel();
|
||||||
};
|
};
|
||||||
|
|
||||||
_quitButton.Pressed += () =>
|
_quitButton.Pressed += () =>
|
||||||
|
|
|
||||||
|
|
@ -18,13 +18,6 @@ public partial class upgrade_menu : CenterContainer
|
||||||
[Export]
|
[Export]
|
||||||
public player PlayerNode;
|
public player PlayerNode;
|
||||||
|
|
||||||
private int _playerBaseHealth;
|
|
||||||
private int _playerBaseDamage;
|
|
||||||
private int _playerBaseMaxSpeed;
|
|
||||||
private int _playerBaseMainSpeed;
|
|
||||||
private int _playerBaseStrafeSpeed;
|
|
||||||
private float _playerBaseRotationSpeed;
|
|
||||||
|
|
||||||
public override void _Ready()
|
public override void _Ready()
|
||||||
{
|
{
|
||||||
_healthUpgrade = GetNode<Button>("VBox/HBox/Health/HealthUpgrade");
|
_healthUpgrade = GetNode<Button>("VBox/HBox/Health/HealthUpgrade");
|
||||||
|
|
@ -35,19 +28,13 @@ public partial class upgrade_menu : CenterContainer
|
||||||
_speedStat = GetNode<Label>("VBox/HBox/Speed/SpeedStat");
|
_speedStat = GetNode<Label>("VBox/HBox/Speed/SpeedStat");
|
||||||
_damageStat = GetNode<Label>("VBox/HBox/Damage/DamageStat");
|
_damageStat = GetNode<Label>("VBox/HBox/Damage/DamageStat");
|
||||||
|
|
||||||
_playerBaseHealth = PlayerNode.MaxHealth;
|
|
||||||
_playerBaseDamage = PlayerNode.Damage;
|
|
||||||
_playerBaseMaxSpeed = PlayerNode.MaxSpeed;
|
|
||||||
_playerBaseMainSpeed = PlayerNode.MainSpeed;
|
|
||||||
_playerBaseStrafeSpeed = PlayerNode.StrafeSpeed;
|
|
||||||
_playerBaseRotationSpeed = PlayerNode.RotationSpeed;
|
|
||||||
|
|
||||||
_healthUpgrade.Pressed += () =>
|
_healthUpgrade.Pressed += () =>
|
||||||
{
|
{
|
||||||
_healthInt += 10;
|
_healthInt += 10;
|
||||||
_healthStat.Text = ("+ " + _healthInt + "%");
|
_healthStat.Text = ("+ " + _healthInt + "%");
|
||||||
GetTree().Paused = false;
|
GetTree().Paused = false;
|
||||||
PlayerNode.HealthUpgrade();
|
if (_healthInt <= 100) PlayerNode.HealthUpgrade();
|
||||||
Visible = false;
|
Visible = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -56,7 +43,7 @@ public partial class upgrade_menu : CenterContainer
|
||||||
_speedInt += 10;
|
_speedInt += 10;
|
||||||
_speedStat.Text = ("+ " + _speedInt + "%");
|
_speedStat.Text = ("+ " + _speedInt + "%");
|
||||||
GetTree().Paused = false;
|
GetTree().Paused = false;
|
||||||
PlayerNode.SpeedUpgrade();
|
if (_speedInt <= 100) PlayerNode.SpeedUpgrade();
|
||||||
Visible = false;
|
Visible = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -65,7 +52,7 @@ public partial class upgrade_menu : CenterContainer
|
||||||
_damageInt += 10;
|
_damageInt += 10;
|
||||||
_damageStat.Text = ("+ " + _damageInt + "%");
|
_damageStat.Text = ("+ " + _damageInt + "%");
|
||||||
GetTree().Paused = false;
|
GetTree().Paused = false;
|
||||||
PlayerNode.DamageUpgrade();
|
if (_speedInt <= 100) PlayerNode.DamageUpgrade();
|
||||||
Visible = false;
|
Visible = false;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,27 +57,30 @@ public partial class wavecontroller : Node2D
|
||||||
}
|
}
|
||||||
// spawn friendlies after 5 waves & if 1 or less remaining
|
// spawn friendlies after 5 waves & if 1 or less remaining
|
||||||
// also trigger upgrade menu at the start of the wave (but not first wave)
|
// also trigger upgrade menu at the start of the wave (but not first wave)
|
||||||
if ((CurrWave - 1) % 5 == 0 && _friendlyNode.GetChildCount() <= 1)
|
if ((CurrWave - 1) % 5 == 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (CurrWave != 1)
|
if (CurrWave != 1)
|
||||||
{
|
{
|
||||||
UpgradeMenu.Show();
|
UpgradeMenu.Show();
|
||||||
GetTree().Paused = true;
|
GetTree().Paused = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//GD.Print("attempting to spawn friendlies");
|
|
||||||
foreach (var spawn in _friendlySpawns)
|
|
||||||
{
|
|
||||||
Random rand = new Random();
|
|
||||||
|
|
||||||
var friendly = _aiShipScene.Instantiate<ai_fighter>();
|
if (_friendlyNode.GetChildCount() <= 1)
|
||||||
friendly.Faction = ship.ShipFaction.FRIENDLY;
|
{
|
||||||
friendly.Type = (ship.ShipType)rand.Next(0, 3);
|
foreach (var spawn in _friendlySpawns)
|
||||||
friendly.GlobalPosition = spawn.GlobalPosition;
|
{
|
||||||
friendly.StatModifier = (_aiStatModifier) * 1.1f; // make friendlies slightly stronger
|
Random rand = new Random();
|
||||||
friendly.Scale = new Vector2(0.6f, 0.6f);
|
|
||||||
|
var friendly = _aiShipScene.Instantiate<ai_fighter>();
|
||||||
|
friendly.Faction = ship.ShipFaction.FRIENDLY;
|
||||||
|
friendly.Type = (ship.ShipType)rand.Next(0, 3);
|
||||||
|
friendly.GlobalPosition = spawn.GlobalPosition;
|
||||||
|
friendly.StatModifier = (_aiStatModifier) * 1.1f; // make friendlies slightly stronger
|
||||||
|
friendly.Scale = new Vector2(0.6f, 0.6f);
|
||||||
|
|
||||||
_friendlyNode.AddChild(friendly);
|
_friendlyNode.AddChild(friendly);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -104,7 +107,6 @@ public partial class wavecontroller : Node2D
|
||||||
|
|
||||||
_aiStatModifier += 0.1f; // increase ai stat modifier by 0.1f after an ace wave
|
_aiStatModifier += 0.1f; // increase ai stat modifier by 0.1f after an ace wave
|
||||||
if (_aiStatModifier >= 2f) _aiStatModifier = 2f; // cap ai stat modifier at 2f (10 ace waves)
|
if (_aiStatModifier >= 2f) _aiStatModifier = 2f; // cap ai stat modifier at 2f (10 ace waves)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue