godot-shooter / commit
Changed the main font and added a check to ensure that new items are not added too close to other items in World's Environment.
CharacterTheme.tres | 2 +- Enemy.tscn | 7 ------- Player.tscn | 2 +- Theme.tres | 6 +++--- World.gd | 33 +++++++++++++++++++++++++-------- assets/neuropolitical rg.otf | Bin 0 -> 66036 bytes 6 files changed, 30 insertions(+), 20 deletions(-) diff --git a/CharacterTheme.tres b/CharacterTheme.tres index 52dfe6b..e0cd380 100644 --- a/CharacterTheme.tres +++ b/CharacterTheme.tres @@ -1,6 +1,6 @@ [gd_resource type="Theme" load_steps=3 format=2] -[ext_resource path="res://assets/Unique.ttf" type="DynamicFontData" id=1] +[ext_resource path="res://assets/neuropolitical rg.otf" type="DynamicFontData" id=1] [sub_resource type="DynamicFont" id=1] size = 30 diff --git a/Enemy.tscn b/Enemy.tscn index efba735..d969ad2 100644 --- a/Enemy.tscn +++ b/Enemy.tscn @@ -132,10 +132,3 @@ cast_to = Vector2( 0, -50 ) [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] polygon = PoolVector2Array( 0, -23, -7, 5, -12, 9, -19, 9, -23, 14, -23, 19, -19, 23, -14, 23, -9, 19, -9, 14, -10, 12, -6, 9, 0, 15, 6, 9, 10, 12, 9, 14, 9, 19, 13, 23, 18, 23, 23, 18, 23, 14, 19, 10, 13, 10, 7, 5 ) - -[node name="Area2D" type="Area2D" parent="."] - -[node name="CollisionPolygon2D2" type="CollisionPolygon2D" parent="Area2D"] -polygon = PoolVector2Array( 0, -23, -7, 5, -12, 9, -19, 9, -23, 14, -23, 19, -19, 23, -14, 23, -9, 19, -9, 14, -10, 12, -6, 9, 0, 15, 6, 9, 10, 12, 9, 14, 9, 19, 13, 23, 18, 23, 23, 18, 23, 14, 19, 10, 13, 10, 7, 5 ) - -[connection signal="body_entered" from="Area2D" to="." method="_on_Area2D_body_entered"] diff --git a/Player.tscn b/Player.tscn index 3da4bfe..6465b31 100644 --- a/Player.tscn +++ b/Player.tscn @@ -173,7 +173,7 @@ shape = SubResource( 7 ) [node name="Alive" type="Node2D" parent="Graphics"] -[node name="Line2D" type="Line2D" parent="Graphics/Alive"] +[node name="LaserBeam" type="Line2D" parent="Graphics/Alive"] points = PoolVector2Array( 0, 0, 0, -300 ) width = 2.0 default_color = Color( 1, 0, 0, 1 ) diff --git a/Theme.tres b/Theme.tres index fdf2be2..8489d73 100644 --- a/Theme.tres +++ b/Theme.tres @@ -1,11 +1,11 @@ [gd_resource type="Theme" load_steps=3 format=2] -[ext_resource path="res://assets/Unique.ttf" type="DynamicFontData" id=1] +[ext_resource path="res://assets/neuropolitical rg.otf" type="DynamicFontData" id=1] [sub_resource type="DynamicFont" id=1] size = 48 -outline_size = 2 -outline_color = Color( 0, 0, 0, 1 ) +outline_size = 3 +outline_color = Color( 0, 0.262745, 1, 1 ) use_mipmaps = true use_filter = true font_data = ExtResource( 1 ) diff --git a/World.gd b/World.gd index 9e270d1..f69791e 100644 --- a/World.gd +++ b/World.gd @@ -38,13 +38,12 @@ func weapon_consumed(): func create_enemy() -> Enemy: var enemy = Enemy.instance() - enemy.position = get_new_item_pos() + enemy.position = get_new_environment_position() enemy.connect("enemy_killed", self, "enemy_killed") return enemy - func create_health() -> PowerUp: var health = PowerUp.instance() - health.position = get_new_item_pos(randf() + .5) + health.position = get_new_environment_position(randf() + .5) health.connect("consumed", self, "health_consumed") health.label = "+HP" health.color = Color.green @@ -58,17 +57,16 @@ func create_shield() -> PowerUp: shield.color = Color.blue return shield -func create_gold(pos: Vector2 = get_new_item_pos(1 + randf())) -> PowerUp: +func create_gold(pos: Vector2 = get_new_environment_position(1 + randf())) -> PowerUp: var gold = PowerUp.instance() gold.position = pos gold.connect("consumed", self, "gold_consumed") gold.label = "" gold.color = Color.gold return gold - func create_weapon() -> PowerUp: var weapon = PowerUp.instance() - weapon.position = get_new_item_pos(randf() + .5) + weapon.position = get_new_environment_position(randf() + .5) weapon.connect("consumed", self, "weapon_consumed") weapon.label = "WPN" weapon.color = Color.red @@ -87,6 +85,25 @@ func get_new_item_pos(dist_ratio: float = 1.0) -> Vector2: var pos = unit_vector * enemy_spawn_dist + $Player.global_position return pos +func get_new_environment_position(dist_ratio: float = 1.0) -> Vector2: + var potential_pos: Vector2 + while true: + # find the positions of the closest Environment items + var items = $Environment.get_children() + potential_pos = get_new_item_pos(dist_ratio) + var closest_pos = 10000 + for i in items: + var item: Node2D = i + var pos = item.global_position + var dist = potential_pos.distance_to(pos) + if dist < closest_pos: + closest_pos = dist + var is_too_close = closest_pos < 50 + var found_one = !is_too_close + if found_one: + break + return potential_pos + func _input(event: InputEvent) -> void: if $Player.dead: return @@ -115,7 +132,7 @@ func _process(_delta: float) -> void: for g in generators: var generator = g - var _is_done = generator.run(self) + var _is_done = generator.run($Environment) if is_destination_set: $Player.turn_towards(destination) @@ -132,7 +149,7 @@ func _process(_delta: float) -> void: var dist = diff.length() var is_too_far = dist > item_replacement_distance if is_too_far: - var new_pos = get_new_item_pos(1 + randf()) + var new_pos = get_new_environment_position(1 + randf()) Utils.log("moving distant enemy from", enemy.position, "to", new_pos) enemy.teleport(new_pos) diff --git a/assets/neuropolitical rg.otf b/assets/neuropolitical rg.otf new file mode 100644 index 0000000..e9e8007 Binary files /dev/null and b/assets/neuropolitical rg.otf differ