diff --git a/source/assets/scripts/ts_bot_handlers/ts_bot_handlergd.gd b/source/assets/scripts/ts_bot_handlers/ts_bot_handlergd.gd new file mode 100644 index 0000000..9169c42 --- /dev/null +++ b/source/assets/scripts/ts_bot_handlers/ts_bot_handlergd.gd @@ -0,0 +1,87 @@ +extends KinematicBody2D + +const GRAVITY = 5 + +var liftSpeed = 0 +var accelerationSpeed = 2 +var deccelerationSpeed = 20 +var maxSpeed = 250 + +var worldSpace2d = null +var coreRay = {} + +var desiredLocation = Vector2(0,0) +var movementVector = Vector2(0,0) +var weightVector = Vector2(0,0) +var interactionRays = [] +var degreeTracker + +var startVector = Vector2(0,5) +var startPosition = Vector2(0,5) +var maxRay = 65 +var interactionRay = null + +var degreeStep = 60 +var fireRate = 12 +var time = 0 +var rotationAmount = 0 +var rand_generate = RandomNumberGenerator.new() + +var timer = 15 + +export(int, "Passive", "Friendly", "Agressive") var Mode + +func _ready(): + desiredLocation = position + startVector += global_position + pass + +func _physics_process(delta): + time += delta + timer += delta + rand_generate.randomize() + get_interaction() + if interactionRays[0]["interacted"]: + if liftSpeed > 0: liftSpeed = move_toward(liftSpeed, 0, deccelerationSpeed) + elif position.y - desiredLocation.y > 1: + liftSpeed -= accelerationSpeed + elif position.y - desiredLocation.y < -1: + liftSpeed += GRAVITY + for ray in interactionRays: + if ray["interacted"]: + liftSpeed += -ray["end"].normalized().y * maxSpeed + liftSpeed = clamp(liftSpeed, -maxSpeed, maxSpeed) + move_and_slide(Vector2(0,liftSpeed)) + if Mode == 0: + $ts_bot_sprite.play("passive_idle") + $TsBotSpriteWeaponOn.hide() + $TsBotSpriteWeaponOff.hide() + elif Mode == 1: + $ts_bot_sprite.play("friendly_idle") + $TsBotSpriteWeaponOn.hide() + $TsBotSpriteWeaponOff.show() + elif Mode == 2: + if fireRate < 20: fireRate = 5*fireRate + $ts_bot_sprite.play("agressive_idle") + $TsBotSpriteWeaponOn.show() + $TsBotSpriteWeaponOff.hide() + if time > 60 / fireRate and Mode >= 1: + rotationAmount = rand_generate.randi_range(1,36) + $TsBotSpriteWeaponOff.rotation = 360/rotationAmount + $TsBotSpriteWeaponOn.rotation = 360/rotationAmount + time = 0 + +func get_interaction(): + degreeTracker = 0 + interactionRays = [] + worldSpace2d = get_world_2d().direct_space_state + while degreeTracker < 360 + degreeStep: + interactionRay = worldSpace2d.intersect_ray(startVector, Vector2(0,maxRay).rotated(deg2rad(degreeTracker)) + global_position, [self]) + var interacted = false + if "position" in interactionRay and interactionRay["collider"].is_in_group("Player"): + interacted = true + if timer > 15: + Mode += 1 + timer = 0 + interactionRays.append({"start": startVector, "end": Vector2(0,maxRay).rotated(deg2rad(degreeTracker)) + global_position, "degrees": degreeTracker,"ray": interactionRay, "interacted": interacted}) + degreeTracker += degreeStep diff --git a/source/assets/sprites/character/ts_bot/TS_bot_sprite_agressive.svg b/source/assets/sprites/character/ts_bot/TS_bot_sprite_agressive.svg new file mode 100644 index 0000000..f2e700e --- /dev/null +++ b/source/assets/sprites/character/ts_bot/TS_bot_sprite_agressive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/assets/sprites/character/ts_bot/TS_bot_sprite_friendly.svg b/source/assets/sprites/character/ts_bot/TS_bot_sprite_friendly.svg new file mode 100644 index 0000000..61521f2 --- /dev/null +++ b/source/assets/sprites/character/ts_bot/TS_bot_sprite_friendly.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/assets/sprites/character/ts_bot/TS_bot_sprite_passive.svg b/source/assets/sprites/character/ts_bot/TS_bot_sprite_passive.svg new file mode 100644 index 0000000..be522a9 --- /dev/null +++ b/source/assets/sprites/character/ts_bot/TS_bot_sprite_passive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/assets/sprites/character/ts_bot/TS_bot_sprite_weapon_off.svg b/source/assets/sprites/character/ts_bot/TS_bot_sprite_weapon_off.svg new file mode 100644 index 0000000..362016a --- /dev/null +++ b/source/assets/sprites/character/ts_bot/TS_bot_sprite_weapon_off.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/assets/sprites/character/ts_bot/TS_bot_sprite_weapon_on.svg b/source/assets/sprites/character/ts_bot/TS_bot_sprite_weapon_on.svg new file mode 100644 index 0000000..6c582df --- /dev/null +++ b/source/assets/sprites/character/ts_bot/TS_bot_sprite_weapon_on.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/entities/grass/grass_node.tscn b/source/entities/grass/grass_node.tscn index 3f34182..fb162e9 100644 --- a/source/entities/grass/grass_node.tscn +++ b/source/entities/grass/grass_node.tscn @@ -49,16 +49,16 @@ animations = [ { "name": "idle", "speed": 12.0 }, { -"frames": [ ExtResource( 38 ), ExtResource( 35 ), ExtResource( 41 ), ExtResource( 37 ), ExtResource( 19 ), ExtResource( 18 ), ExtResource( 40 ) ], -"loop": false, -"name": "transition_up", -"speed": 24.0 -}, { "frames": [ ExtResource( 30 ), ExtResource( 42 ), ExtResource( 16 ), ExtResource( 29 ), ExtResource( 25 ), ExtResource( 31 ), ExtResource( 21 ), ExtResource( 32 ), ExtResource( 39 ), ExtResource( 20 ), ExtResource( 22 ), ExtResource( 23 ), ExtResource( 33 ) ], "loop": true, "name": "idle_down", "speed": 12.0 }, { +"frames": [ ExtResource( 38 ), ExtResource( 35 ), ExtResource( 41 ), ExtResource( 37 ), ExtResource( 19 ), ExtResource( 18 ), ExtResource( 40 ) ], +"loop": false, +"name": "transition_up", +"speed": 24.0 +}, { "frames": [ ExtResource( 17 ), ExtResource( 34 ), ExtResource( 28 ), ExtResource( 26 ), ExtResource( 24 ), ExtResource( 27 ), ExtResource( 36 ) ], "loop": false, "name": "transition_down", @@ -76,7 +76,7 @@ position = Vector2( -3.36365, 0 ) scale = Vector2( 0.75, 0.75 ) frames = SubResource( 1 ) animation = "idle" -frame = 7 +frame = 12 playing = true [node name="trinity_site_level_layout-level_design_z-index_0_grass_type-2" type="Sprite" parent="."] diff --git a/source/entities/player/player_node.tscn b/source/entities/player/player_node.tscn index a5dd498..8f952e2 100644 --- a/source/entities/player/player_node.tscn +++ b/source/entities/player/player_node.tscn @@ -171,7 +171,7 @@ [sub_resource type="SpriteFrames" id=1] animations = [ { -"frames": [ ExtResource( 48 ), ExtResource( 4 ), ExtResource( 3 ), ExtResource( 46 ), ExtResource( 47 ), ExtResource( 32 ), ExtResource( 13 ), ExtResource( 40 ), ExtResource( 6 ), ExtResource( 15 ), ExtResource( 22 ), ExtResource( 14 ), ExtResource( 9 ), ExtResource( 37 ), ExtResource( 23 ), ExtResource( 39 ), ExtResource( 20 ), ExtResource( 18 ), ExtResource( 7 ), ExtResource( 34 ) ], +"frames": [ ExtResource( 99 ), ExtResource( 83 ), ExtResource( 109 ), ExtResource( 111 ), ExtResource( 101 ), ExtResource( 96 ), ExtResource( 79 ), ExtResource( 132 ), ExtResource( 119 ), ExtResource( 80 ), ExtResource( 85 ), ExtResource( 86 ), ExtResource( 87 ), ExtResource( 106 ), ExtResource( 121 ), ExtResource( 129 ), ExtResource( 100 ), ExtResource( 108 ), ExtResource( 110 ), ExtResource( 120 ) ], "loop": true, "name": "move-speed-left-01", "speed": 35.0 @@ -198,7 +198,7 @@ animations = [ { }, { "frames": [ ExtResource( 99 ), ExtResource( 83 ), ExtResource( 109 ), ExtResource( 111 ), ExtResource( 101 ), ExtResource( 96 ), ExtResource( 79 ), ExtResource( 132 ), ExtResource( 119 ), ExtResource( 80 ), ExtResource( 85 ), ExtResource( 86 ), ExtResource( 87 ), ExtResource( 106 ), ExtResource( 121 ), ExtResource( 129 ), ExtResource( 100 ), ExtResource( 108 ), ExtResource( 110 ), ExtResource( 120 ) ], "loop": true, -"name": "idle-speed-right-04", +"name": "idle-speed-left-01", "speed": 25.0 }, { "frames": [ ExtResource( 99 ), ExtResource( 83 ), ExtResource( 109 ), ExtResource( 111 ), ExtResource( 101 ), ExtResource( 96 ), ExtResource( 79 ), ExtResource( 132 ), ExtResource( 119 ), ExtResource( 80 ), ExtResource( 85 ), ExtResource( 86 ), ExtResource( 87 ), ExtResource( 106 ), ExtResource( 121 ), ExtResource( 129 ), ExtResource( 100 ), ExtResource( 108 ), ExtResource( 110 ), ExtResource( 120 ) ], @@ -250,6 +250,26 @@ animations = [ { "loop": true, "name": "move-speed-left-03", "speed": 35.0 +}, { +"frames": [ ExtResource( 48 ), ExtResource( 4 ), ExtResource( 3 ), ExtResource( 46 ), ExtResource( 47 ), ExtResource( 32 ), ExtResource( 13 ), ExtResource( 40 ), ExtResource( 6 ), ExtResource( 15 ), ExtResource( 22 ), ExtResource( 14 ), ExtResource( 9 ), ExtResource( 37 ), ExtResource( 23 ), ExtResource( 39 ), ExtResource( 20 ), ExtResource( 18 ), ExtResource( 7 ), ExtResource( 34 ) ], +"loop": true, +"name": "boost-speed-left-01", +"speed": 50.0 +}, { +"frames": [ ExtResource( 114 ), ExtResource( 128 ), ExtResource( 93 ), ExtResource( 107 ), ExtResource( 117 ), ExtResource( 102 ), ExtResource( 81 ), ExtResource( 118 ), ExtResource( 76 ), ExtResource( 115 ), ExtResource( 127 ), ExtResource( 123 ), ExtResource( 113 ), ExtResource( 77 ), ExtResource( 78 ), ExtResource( 124 ), ExtResource( 94 ), ExtResource( 112 ), ExtResource( 131 ), ExtResource( 95 ) ], +"loop": true, +"name": "move-speed-right-03", +"speed": 35.0 +}, { +"frames": [ ExtResource( 73 ), ExtResource( 57 ), ExtResource( 65 ), ExtResource( 64 ), ExtResource( 54 ), ExtResource( 71 ), ExtResource( 58 ), ExtResource( 66 ), ExtResource( 62 ), ExtResource( 59 ), ExtResource( 56 ), ExtResource( 60 ), ExtResource( 63 ), ExtResource( 50 ), ExtResource( 61 ), ExtResource( 67 ), ExtResource( 72 ), ExtResource( 51 ), ExtResource( 68 ), ExtResource( 69 ) ], +"loop": true, +"name": "move-speed-left-02", +"speed": 35.0 +}, { +"frames": [ ExtResource( 162 ), ExtResource( 135 ), ExtResource( 146 ), ExtResource( 141 ), ExtResource( 143 ), ExtResource( 163 ), ExtResource( 149 ), ExtResource( 136 ), ExtResource( 154 ), ExtResource( 137 ), ExtResource( 165 ), ExtResource( 142 ), ExtResource( 139 ), ExtResource( 159 ), ExtResource( 140 ), ExtResource( 155 ), ExtResource( 144 ), ExtResource( 151 ), ExtResource( 153 ), ExtResource( 166 ) ], +"loop": true, +"name": "boost-speed-left-04", +"speed": 50.0 } ] [sub_resource type="CircleShape2D" id=2] @@ -301,12 +321,14 @@ animations = [ { "loop": true, "name": "02", "speed": 5.0 +}, { +"frames": [ ExtResource( 27 ) ], +"loop": true, +"name": "01", +"speed": 5.0 } ] -[node name="player" type="KinematicBody2D" groups=[ -"Net", -"Player", -]] +[node name="player" type="KinematicBody2D" groups=["Net", "Player"]] script = ExtResource( 11 ) [node name="trajectories" type="Node2D" parent="."] diff --git a/source/entities/ts_bot/ts_bot.tscn b/source/entities/ts_bot/ts_bot.tscn new file mode 100644 index 0000000..9218435 --- /dev/null +++ b/source/entities/ts_bot/ts_bot.tscn @@ -0,0 +1,60 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://source/assets/sprites/character/ts_bot/TS_bot_sprite_agressive.svg" type="Texture" id=1] +[ext_resource path="res://source/assets/scripts/ts_bot_handlers/ts_bot_handlergd.gd" type="Script" id=2] +[ext_resource path="res://source/assets/sprites/character/ts_bot/TS_bot_sprite_passive.svg" type="Texture" id=3] +[ext_resource path="res://source/assets/sprites/character/ts_bot/TS_bot_sprite_friendly.svg" type="Texture" id=4] +[ext_resource path="res://source/assets/sprites/character/ts_bot/TS_bot_sprite_weapon_on.svg" type="Texture" id=5] +[ext_resource path="res://source/assets/sprites/character/ts_bot/TS_bot_sprite_weapon_off.svg" type="Texture" id=6] + +[sub_resource type="CircleShape2D" id=1] +radius = 30.0 + +[sub_resource type="CapsuleShape2D" id=2] +radius = 22.0 +height = 46.0 + +[sub_resource type="SpriteFrames" id=3] +animations = [ { +"frames": [ ExtResource( 1 ) ], +"loop": true, +"name": "agressive_idle", +"speed": 5.0 +}, { +"frames": [ ExtResource( 4 ) ], +"loop": true, +"name": "friendly_idle", +"speed": 5.0 +}, { +"frames": [ ExtResource( 3 ) ], +"loop": true, +"name": "passive_idle", +"speed": 5.0 +} ] + +[node name="ts_bot" type="KinematicBody2D"] +script = ExtResource( 2 ) + +[node name="main_bot_collider" type="CollisionShape2D" parent="."] +position = Vector2( 0, -8 ) +shape = SubResource( 1 ) + +[node name="outer_bot_collider" type="CollisionShape2D" parent="."] +position = Vector2( 0, -8 ) +shape = SubResource( 2 ) + +[node name="ts_bot_sprite" type="AnimatedSprite" parent="."] +position = Vector2( 0, 5 ) +scale = Vector2( 0.6, 0.6 ) +frames = SubResource( 3 ) +animation = "passive_idle" + +[node name="TsBotSpriteWeaponOff" type="Sprite" parent="."] +position = Vector2( 0, -8 ) +scale = Vector2( 0.6, 0.6 ) +texture = ExtResource( 6 ) + +[node name="TsBotSpriteWeaponOn" type="Sprite" parent="."] +position = Vector2( 0, -8 ) +scale = Vector2( 0.6, 0.6 ) +texture = ExtResource( 5 ) diff --git a/source/levels/trinity_site/trinity_site_level_playground.tscn b/source/levels/trinity_site/trinity_site_level_playground.tscn index 2daf9ff..ef8e88c 100644 --- a/source/levels/trinity_site/trinity_site_level_playground.tscn +++ b/source/levels/trinity_site/trinity_site_level_playground.tscn @@ -3,6 +3,7 @@ [ext_resource path="res://source/assets/scripts/server_handlers/trinity_site_level_playground.gd" type="Script" id=1] [ext_resource path="res://source/assets/scripts/ui_element_handlers/UI.gd" type="Script" id=2] [ext_resource path="res://source/levels/trinity_site/images/trinity_site_level_layout_level_design_z_index_0.svg" type="Texture" id=3] +[ext_resource path="res://source/entities/ts_bot/ts_bot.tscn" type="PackedScene" id=4] [ext_resource path="res://source/levels/trinity_site/images/trinity_site_level_layout_level_design_z_index_4.svg" type="Texture" id=7] [ext_resource path="res://source/levels/trinity_site/images/trinity_site_level_layout_level_design_z_index_3.svg" type="Texture" id=8] [ext_resource path="res://source/entities/grass/grass_node.tscn" type="PackedScene" id=9] diff --git a/source/scenes/GUI/main_menu.tscn b/source/scenes/GUI/main_menu.tscn index 308c53f..c298a45 100644 --- a/source/scenes/GUI/main_menu.tscn +++ b/source/scenes/GUI/main_menu.tscn @@ -54,8 +54,8 @@ margin_left = -150.0 margin_top = -36.0 margin_right = 150.0 margin_bottom = 36.0 -custom_fonts/font = ExtResource( 5 ) custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_fonts/font = ExtResource( 5 ) text = "PLAY" align = 1 valign = 1 @@ -79,8 +79,8 @@ margin_left = -98.8223 margin_top = -36.0 margin_right = 134.178 margin_bottom = 36.0 -custom_fonts/font = ExtResource( 5 ) custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_fonts/font = ExtResource( 5 ) text = "LAN Party" align = 1 valign = 1 @@ -111,8 +111,8 @@ margin_left = -150.0 margin_top = -36.0 margin_right = 150.0 margin_bottom = 36.0 -custom_fonts/font = ExtResource( 5 ) custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_fonts/font = ExtResource( 5 ) text = "EXIT" align = 1 valign = 1 diff --git a/source/scenes/GUI/network_setup.tscn b/source/scenes/GUI/network_setup.tscn index e7cc22c..db3131b 100644 --- a/source/scenes/GUI/network_setup.tscn +++ b/source/scenes/GUI/network_setup.tscn @@ -21,16 +21,16 @@ use_mipmaps = true use_filter = true font_data = ExtResource( 2 ) -[sub_resource type="StyleBoxEmpty" id=2] - -[sub_resource type="StyleBoxEmpty" id=3] - [sub_resource type="DynamicFont" id=4] size = 36 use_mipmaps = true use_filter = true font_data = ExtResource( 2 ) +[sub_resource type="StyleBoxEmpty" id=2] + +[sub_resource type="StyleBoxEmpty" id=3] + [sub_resource type="DynamicFont" id=5] size = 36 use_mipmaps = true @@ -94,8 +94,8 @@ margin_left = -150.0 margin_top = -36.0 margin_right = 150.0 margin_bottom = 36.0 -custom_fonts/font = ExtResource( 8 ) custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_fonts/font = ExtResource( 8 ) text = "CREATE SERVER" align = 1 valign = 1 @@ -118,8 +118,8 @@ anchor_bottom = 0.5 margin_left = -233.0 margin_top = -36.0 margin_bottom = 36.0 -custom_fonts/font = ExtResource( 8 ) custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_fonts/font = ExtResource( 8 ) text = "JOIN SERVER" align = 1 valign = 1 @@ -154,8 +154,8 @@ margin_left = -150.0 margin_top = -36.0 margin_right = 150.0 margin_bottom = 36.0 -custom_fonts/font = ExtResource( 8 ) custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_fonts/font = ExtResource( 8 ) text = "RETURN" align = 1 valign = 1 @@ -186,8 +186,8 @@ margin_left = -225.0 margin_top = -25.0 margin_right = -225.0 margin_bottom = -25.0 -custom_fonts/font = SubResource( 1 ) custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_fonts/font = SubResource( 1 ) text = "Enter your username" align = 1 valign = 1 @@ -218,10 +218,10 @@ margin_left = -175.0 margin_top = -28.0 margin_right = 175.0 margin_bottom = 28.0 +custom_colors/selection_color = Color( 0.8, 0.8, 0.8, 1 ) +custom_fonts/font = SubResource( 4 ) custom_styles/focus = SubResource( 2 ) custom_styles/normal = SubResource( 3 ) -custom_fonts/font = SubResource( 4 ) -custom_colors/selection_color = Color( 0.8, 0.8, 0.8, 1 ) align = 1 placeholder_text = "username" __meta__ = { @@ -242,8 +242,8 @@ margin_bottom = 97.0 [node name="Label" type="Label" parent="multiplayer_configure/popup_screen/panel/confirm"] anchor_right = 1.0 anchor_bottom = 1.0 -custom_fonts/font = SubResource( 5 ) custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_fonts/font = SubResource( 5 ) text = "CONFIRM" align = 1 valign = 1 @@ -304,8 +304,8 @@ margin_left = -74.5 margin_top = -32.0 margin_right = 74.5 margin_bottom = 32.0 -custom_fonts/font = ExtResource( 10 ) custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_fonts/font = ExtResource( 10 ) text = "START" align = 1 valign = 1 @@ -324,8 +324,8 @@ margin_left = 621.0 margin_top = 464.0 margin_right = 1259.0 margin_bottom = 576.0 -custom_fonts/font = SubResource( 6 ) custom_colors/font_color = Color( 0.439216, 0.666667, 1, 0.27451 ) +custom_fonts/font = SubResource( 6 ) align = 1 valign = 1 __meta__ = { @@ -343,8 +343,8 @@ margin_left = 823.5 margin_top = 580.0 margin_right = 1056.5 margin_bottom = 609.0 -custom_fonts/font = SubResource( 7 ) custom_colors/font_color = Color( 0.439216, 0.666667, 1, 0.27451 ) +custom_fonts/font = SubResource( 7 ) text = "WAITING FOR PLAYERS" align = 1 valign = 1