From 0be049dc95009e10630317a14dd2da6a826cdfbc Mon Sep 17 00:00:00 2001 From: gregchan550 Date: Thu, 5 Oct 2023 22:12:10 +1000 Subject: [PATCH] states implemented and ai component added. commiting for push --- .../{MobMeleeTask.java => MobTask.java} | 21 +++++++++++++++---- .../game/entities/factories/NPCFactory.java | 8 +++---- 2 files changed, 21 insertions(+), 8 deletions(-) rename source/core/src/main/com/csse3200/game/components/tasks/MobTask/{MobMeleeTask.java => MobTask.java} (88%) diff --git a/source/core/src/main/com/csse3200/game/components/tasks/MobTask/MobMeleeTask.java b/source/core/src/main/com/csse3200/game/components/tasks/MobTask/MobTask.java similarity index 88% rename from source/core/src/main/com/csse3200/game/components/tasks/MobTask/MobMeleeTask.java rename to source/core/src/main/com/csse3200/game/components/tasks/MobTask/MobTask.java index ba44c71d5..648a79ee1 100644 --- a/source/core/src/main/com/csse3200/game/components/tasks/MobTask/MobMeleeTask.java +++ b/source/core/src/main/com/csse3200/game/components/tasks/MobTask/MobTask.java @@ -1,16 +1,15 @@ package com.csse3200.game.components.tasks.MobTask; import com.badlogic.gdx.math.Vector2; -import com.badlogic.gdx.utils.Timer; import com.csse3200.game.ai.tasks.DefaultTask; import com.csse3200.game.ai.tasks.PriorityTask; import com.csse3200.game.components.tasks.MovementTask; -import com.csse3200.game.components.tasks.bosstask.PatrickTask; import com.csse3200.game.entities.Entity; import com.csse3200.game.physics.components.PhysicsMovementComponent; import com.csse3200.game.rendering.AnimationRenderComponent; +import com.csse3200.game.services.ServiceLocator; -public class MobMeleeTask extends DefaultTask implements PriorityTask { +public class MobTask extends DefaultTask implements PriorityTask { // Constants private static final int PRIORITY = 3; @@ -24,6 +23,8 @@ public class MobMeleeTask extends DefaultTask implements PriorityTask { Entity mob; AnimationRenderComponent animation; MovementTask movementTask; + + // Flags boolean melee; // Enums @@ -31,12 +32,13 @@ private enum State { RUN, ATTACK, DEATH, DEFAULT } - public MobMeleeTask(MobType mobType) { + public MobTask(MobType mobType) { this.mobType = mobType; } @Override public void start() { + System.out.println("harrypotter"); super.start(); mob = owner.getEntity(); animation = mob.getComponent(AnimationRenderComponent.class); @@ -46,6 +48,7 @@ public void start() { movementTask = new MovementTask(new Vector2(0f, mob.getPosition().y)); movementTask.create(owner); movementTask.start(); + changeState(State.RUN); if (melee) { mob.getComponent(PhysicsMovementComponent.class).setSpeed(MELEE_MOB_SPEED); @@ -60,6 +63,11 @@ public void update() { switch (state) { case RUN -> { + if (enemyDetected()) { + changeState(State.ATTACK); + } + } + case ATTACK -> { } } @@ -123,6 +131,11 @@ private void changeState(State state) { this.state = state; } + private boolean enemyDetected() { + return ServiceLocator.getEntityService().getEntityAtPosition(mob.getPosition().x - 1, + mob.getPosition().y) != null; // if theres an entity within x of - 1 of mob + } + @Override public int getPriority() { return PRIORITY; diff --git a/source/core/src/main/com/csse3200/game/entities/factories/NPCFactory.java b/source/core/src/main/com/csse3200/game/entities/factories/NPCFactory.java index c277200de..3eecf0e4a 100644 --- a/source/core/src/main/com/csse3200/game/entities/factories/NPCFactory.java +++ b/source/core/src/main/com/csse3200/game/entities/factories/NPCFactory.java @@ -20,10 +20,9 @@ import com.csse3200.game.components.tasks.MobDodgeTask; import com.csse3200.game.components.tasks.MobMeleeAttackTask; import com.csse3200.game.components.tasks.MobRangedAttackTask; -import com.csse3200.game.components.tasks.MobTask.MobMeleeTask; +import com.csse3200.game.components.tasks.MobTask.MobTask; import com.csse3200.game.components.tasks.MobTask.MobType; import com.csse3200.game.components.tasks.MobWanderTask; -import com.csse3200.game.components.tasks.bosstask.DemonBossTask; import com.csse3200.game.entities.Entity; import com.csse3200.game.entities.Melee; import com.csse3200.game.entities.PredefinedWeapons; @@ -309,12 +308,13 @@ public static Entity createGregMob(int health) { animator.addAnimation("default", 0.1f); AITaskComponent aiTaskComponent = new AITaskComponent() - .addTask(new MobMeleeTask(MobType.DRAGON_KNIGHT)); + .addTask(new MobTask(MobType.DRAGON_KNIGHT)); dragonKnight .addComponent(new CombatStatsComponent(health, 10, drops)) .addComponent(animator) - .addComponent(new DragonKnightAnimationController()); + .addComponent(new DragonKnightAnimationController()) + .addComponent(aiTaskComponent); dragonKnight.getComponent(HitboxComponent.class).setAsBoxAligned(new Vector2(.3f, .5f), PhysicsComponent.AlignX.RIGHT, PhysicsComponent.AlignY.BOTTOM); dragonKnight.getComponent(AnimationRenderComponent.class).scaleEntity();