From dd227744acea341d7dab13fed4999865915cc173 Mon Sep 17 00:00:00 2001 From: Jonas Mucke Date: Sun, 19 Apr 2020 18:23:50 +0200 Subject: [PATCH] fixed no target bug --- src/Maps/Grid.gd | 2 +- src/Overlap/AI/AI_Hero.gd | 41 +++++++++++++++++++++++++++------------ src/Player/Player.gd | 3 ++- src/Player/Player.tscn | 3 --- src/World.tscn | 17 ++++++++-------- 5 files changed, 40 insertions(+), 26 deletions(-) diff --git a/src/Maps/Grid.gd b/src/Maps/Grid.gd index f59f13c..811ba51 100644 --- a/src/Maps/Grid.gd +++ b/src/Maps/Grid.gd @@ -56,7 +56,7 @@ func _ready(): _update_grid() -func _reset_history(): +func reset_history(): for x in range(14): for y in range(7): used_grid[x][y] = false diff --git a/src/Overlap/AI/AI_Hero.gd b/src/Overlap/AI/AI_Hero.gd index 715fb11..958f20d 100644 --- a/src/Overlap/AI/AI_Hero.gd +++ b/src/Overlap/AI/AI_Hero.gd @@ -24,9 +24,10 @@ enum{ } var ExecutionState = AI_MOVE +var movmentState = NOTHING var numbers = [0,0,0,0,0,0,0,0,0,0] -var prios = [7,0,6,5,4,3,2,0,0,4] +var prios = [7,0,6,5,4,3,2,1,1,4] var totalPrioTurn = 0 var executesTurn = false @@ -68,7 +69,7 @@ func calcPrioTable(): #updates heart and bonfire prio func adjustPrio(currentHealth, maxHealth): - var prioVal = 10 - (currentHealth/maxHealth)*10 + var prioVal = 1000 - (float(currentHealth)/float(maxHealth))*1000 var bonfire = prioVal var hearts = prioVal - 1 if(hearts < 0): @@ -81,7 +82,7 @@ func calcEnemyKind(): var table = calcPrioTable() var number = randf() var i = 0 - while table[i] <= number: + while i!=Grid.Kind.TERMINAL_SYMBOL and table[i] <= number: i += 1 return i @@ -95,7 +96,7 @@ func getCost(field): for i in grid.prio_grid[field.x][field.y]: match i: Grid.Kind.DAMAGE: - cost += prios[Grid.kind.BONFIRE] * 6 + cost += prios[Grid.Kind.BONFIRE] * 6 Grid.Kind.SLOW: cost += 2 return cost @@ -193,25 +194,41 @@ func AStar(source, target): return [NOTHING, [0,0]] - func makeMove(delta): - pass if ExecutionState == AI_MOVE: var currentPosition = grid._pixel_to_grid_coords(global_position) var enemyKind = calcEnemyKind() - var targetField = grid.get_nearest(currentPosition, enemyKind) - var MoveAdvice = getMoveDescription(currentPosition, targetField) - print(MoveAdvice) + if(enemyKind==Grid.Kind.TERMINAL_SYMBOL): + return + var target = grid.get_nearest(currentPosition, enemyKind) + var MoveAdvice = getMoveDescription(currentPosition, target) + target = MoveAdvice[1] + if(MoveAdvice[0]==STEP): + run(Vector2(target[0]-currentPosition[0], target[1]-currentPosition[1]), delta*10) + targetField = target + targetFieldUsed = true + movmentState = STEP + elif(MoveAdvice[0]==ROLL): + roll(Vector2(target[0]-currentPosition[0], target[1]-currentPosition[1]), delta*10) + targetFieldUsed = true + targetField = target ExecutionState = EXECUTING - pass + grid.reset_history() elif ExecutionState == EXECUTING: if(targetFieldUsed): - pass var cur = grid._pixel_to_grid_coords(global_position) var distance = sqrt(pow(cur[0]-targetField[0],2)+ pow(cur[1]-targetField[1],2)) - if(distance<0.5): + if(distance<0.01): targetFieldUsed = false ExecutionState = AI_MOVE + else: + var currentPosition = grid._pixel_to_grid_coords(global_position) + if(movmentState==STEP): + run(Vector2(targetField[0]-currentPosition[0], targetField[1]-currentPosition[1]), delta*10) + elif(movmentState==ROLL): + roll(Vector2(targetField[0]-currentPosition[0], targetField[1]-currentPosition[1]), delta*10) + else: + ExecutionState = AI_MOVE pass diff --git a/src/Player/Player.gd b/src/Player/Player.gd index bfdb6c4..eb6972b 100644 --- a/src/Player/Player.gd +++ b/src/Player/Player.gd @@ -49,6 +49,7 @@ func _physics_process(delta): while(totaldamage < -1): totaldamage+=1 player_stats.health+=1 + adjustPrio(player_stats.health, player_stats.max_health) _debug_update() if debug == true: match movementState: @@ -169,7 +170,7 @@ func _on_Hurtbox_area_exited(area): func _on_Stats_no_health(): queue_free() - get_tree().change_scene("res://Menus/TitleScreen/TitleScreen.tscn") + #get_tree().change_scene("res://Menus/TitleScreen/TitleScreen.tscn") func _on_Hitbox_area_entered(area): diff --git a/src/Player/Player.tscn b/src/Player/Player.tscn index d1df54f..7feeace 100644 --- a/src/Player/Player.tscn +++ b/src/Player/Player.tscn @@ -619,10 +619,7 @@ font_data = ExtResource( 6 ) [node name="Player" type="KinematicBody2D"] script = ExtResource( 1 ) -debug = null -ROLL_SPEED = null FRICTION = 270 -ACCELERATION = null [node name="Kind" parent="." instance=ExtResource( 7 )] kind = 1 diff --git a/src/World.tscn b/src/World.tscn index 119dfe1..d90d371 100644 --- a/src/World.tscn +++ b/src/World.tscn @@ -1,13 +1,13 @@ -[gd_scene load_steps=8 format=2] +[gd_scene load_steps=7 format=2] [ext_resource path="res://Player/Player.tscn" type="PackedScene" id=1] [ext_resource path="res://World.gd" type="Script" id=2] [ext_resource path="res://Maps/Tilesets/Room/tileset_room.tres" type="TileSet" id=3] [ext_resource path="res://testSprites/dark.png" type="Texture" id=4] -[ext_resource path="res://Objects/Bonfire/Bonfire.tscn" type="PackedScene" id=7] -[ext_resource path="res://Boss/Boss_template.tscn" type="PackedScene" id=17] [ext_resource path="res://Maps/Grid.tscn" type="PackedScene" id=18] +[sub_resource type="AnimationNodeStateMachinePlayback" id=1] + [node name="World" type="Node2D"] script = ExtResource( 2 ) @@ -34,12 +34,11 @@ position = Vector2( 152, 120 ) [node name="Player" parent="YSort" instance=ExtResource( 1 )] position = Vector2( 176, 112 ) scale = Vector2( 2, 2 ) -FRICTION = null +FRICTION = 200 -[node name="Bonfire" parent="YSort" instance=ExtResource( 7 )] -position = Vector2( 296, -16 ) - -[node name="Boss_template2" parent="YSort" instance=ExtResource( 17 )] -position = Vector2( -40, 16 ) +[node name="AnimationTree" parent="YSort/Player" index="4"] +parameters/playback = SubResource( 1 ) [node name="Grid" parent="." instance=ExtResource( 18 )] + +[editable path="YSort/Player"]