diff --git a/core/src/com/isharryh/arkpets/ArkPets.java b/core/src/com/isharryh/arkpets/ArkPets.java index 4e798ca3..d2b52708 100644 --- a/core/src/com/isharryh/arkpets/ArkPets.java +++ b/core/src/com/isharryh/arkpets/ArkPets.java @@ -94,6 +94,16 @@ else if (BehaviorOperBuild.match(cha.anim_list)) behavior = new BehaviorOperBuild(config); else if (BehaviorOperBuild3.match(cha.anim_list)) behavior = new BehaviorOperBuild3(config); + else if (BehaviorEnemy.match(cha.anim_list)) + behavior = new BehaviorEnemy(config); + else if (BehaviorEnemy2.match(cha.anim_list)) + behavior = new BehaviorEnemy2(config); + else if (BehaviorEnemy3.match(cha.anim_list)) + behavior = new BehaviorEnemy3(config); + else if (BehaviorEnemy4.match(cha.anim_list)) + behavior = new BehaviorEnemy4(config); + else if (BehaviorEnemy5.match(cha.anim_list)) + behavior = new BehaviorEnemy5(config); else { Gdx.app.error("error", "AP:No suitable ArkPets behavior instance found, you can contact the developer.\n" + "This model only contains the animation below:\n" + Arrays.toString(cha.anim_list)); diff --git a/core/src/com/isharryh/arkpets/behaviors/BehaviorEnemy.java b/core/src/com/isharryh/arkpets/behaviors/BehaviorEnemy.java new file mode 100644 index 00000000..59307a6a --- /dev/null +++ b/core/src/com/isharryh/arkpets/behaviors/BehaviorEnemy.java @@ -0,0 +1,53 @@ +/** Copyright (c) 2022-2023, Harry Huang + * At GPL-3.0 License + */ +package com.isharryh.arkpets.behaviors; + +import com.badlogic.gdx.utils.Array; +import com.isharryh.arkpets.ArkConfig; +import com.isharryh.arkpets.utils.AnimAutoData; +import com.isharryh.arkpets.utils.AnimData; + + +public class BehaviorEnemy extends Behavior { + + public BehaviorEnemy(ArkConfig $config) { + super($config); + action_list = new AnimAutoData[] { + new AnimAutoData(new AnimData("Idle", true, true, 0, 0), + 4f, (int) (256 / Math.sqrt(config.behavior_ai_activation))), + new AnimAutoData(new AnimData("Move_Loop", true, true, 0, 1), + 2f, 32*(config.behavior_allow_walk?1:0)), + new AnimAutoData(new AnimData("Move_Loop", true, true, 0, -1), + 2f, 32*(config.behavior_allow_walk?1:0)) + }; + } + + public static boolean match(String[] animList) { + Array arr = new Array<>(animList); + if (!arr.contains("Idle", false)) + return false; + if (!arr.contains("Move_Loop", false)) + return false; + if (!arr.contains("Attack", false)) + return false; + return true; + } + + public AnimData defaultAnim() { + return new AnimData("Idle", true, true); + } + + public AnimData clickEnd() { + return config.behavior_allow_interact?new AnimData("Attack", false, false, + new AnimData("Idle", true, true)) : null; + } + + public AnimData dragStart() { + return action_list[0].ANIM; + } + + public AnimData dragEnd() { + return clickEnd(); + } +} diff --git a/core/src/com/isharryh/arkpets/behaviors/BehaviorEnemy2.java b/core/src/com/isharryh/arkpets/behaviors/BehaviorEnemy2.java new file mode 100644 index 00000000..dc761c15 --- /dev/null +++ b/core/src/com/isharryh/arkpets/behaviors/BehaviorEnemy2.java @@ -0,0 +1,53 @@ +/** Copyright (c) 2022-2023, Harry Huang + * At GPL-3.0 License + */ +package com.isharryh.arkpets.behaviors; + +import com.badlogic.gdx.utils.Array; +import com.isharryh.arkpets.ArkConfig; +import com.isharryh.arkpets.utils.AnimAutoData; +import com.isharryh.arkpets.utils.AnimData; + + +public class BehaviorEnemy2 extends Behavior { + + public BehaviorEnemy2(ArkConfig $config) { + super($config); + action_list = new AnimAutoData[] { + new AnimAutoData(new AnimData("Idle", true, true, 0, 0), + 4f, (int) (256 / Math.sqrt(config.behavior_ai_activation))), + new AnimAutoData(new AnimData("Move", true, true, 0, 1), + 2f, 32*(config.behavior_allow_walk?1:0)), + new AnimAutoData(new AnimData("Move", true, true, 0, -1), + 2f, 32*(config.behavior_allow_walk?1:0)) + }; + } + + public static boolean match(String[] animList) { + Array arr = new Array<>(animList); + if (!arr.contains("Idle", false)) + return false; + if (!arr.contains("Move", false)) + return false; + if (!arr.contains("Attack", false)) + return false; + return true; + } + + public AnimData defaultAnim() { + return new AnimData("Idle", true, true); + } + + public AnimData clickEnd() { + return config.behavior_allow_interact?new AnimData("Attack", false, false, + new AnimData("Idle", true, true)) : null; + } + + public AnimData dragStart() { + return action_list[0].ANIM; + } + + public AnimData dragEnd() { + return clickEnd(); + } +} diff --git a/core/src/com/isharryh/arkpets/behaviors/BehaviorEnemy3.java b/core/src/com/isharryh/arkpets/behaviors/BehaviorEnemy3.java new file mode 100644 index 00000000..a52ffc5c --- /dev/null +++ b/core/src/com/isharryh/arkpets/behaviors/BehaviorEnemy3.java @@ -0,0 +1,47 @@ +/** Copyright (c) 2022-2023, Harry Huang + * At GPL-3.0 License + */ +package com.isharryh.arkpets.behaviors; + +import com.badlogic.gdx.utils.Array; +import com.isharryh.arkpets.ArkConfig; +import com.isharryh.arkpets.utils.AnimAutoData; +import com.isharryh.arkpets.utils.AnimData; + + +public class BehaviorEnemy3 extends Behavior { + + public BehaviorEnemy3(ArkConfig $config) { + super($config); + action_list = new AnimAutoData[] { + new AnimAutoData(new AnimData("Idle", true, true, 0, 0), + 4f, (int) (256 / Math.sqrt(config.behavior_ai_activation))) + }; + } + + public static boolean match(String[] animList) { + Array arr = new Array<>(animList); + if (!arr.contains("Idle", false)) + return false; + if (!arr.contains("Attack", false)) + return false; + return true; + } + + public AnimData defaultAnim() { + return new AnimData("Idle", true, true); + } + + public AnimData clickEnd() { + return config.behavior_allow_interact?new AnimData("Attack", false, false, + new AnimData("Idle", true, true)) : null; + } + + public AnimData dragStart() { + return action_list[0].ANIM; + } + + public AnimData dragEnd() { + return clickEnd(); + } +} diff --git a/core/src/com/isharryh/arkpets/behaviors/BehaviorEnemy4.java b/core/src/com/isharryh/arkpets/behaviors/BehaviorEnemy4.java new file mode 100644 index 00000000..a3eb6ff9 --- /dev/null +++ b/core/src/com/isharryh/arkpets/behaviors/BehaviorEnemy4.java @@ -0,0 +1,51 @@ +/** Copyright (c) 2022-2023, Harry Huang + * At GPL-3.0 License + */ +package com.isharryh.arkpets.behaviors; + +import com.badlogic.gdx.utils.Array; +import com.isharryh.arkpets.ArkConfig; +import com.isharryh.arkpets.utils.AnimAutoData; +import com.isharryh.arkpets.utils.AnimData; + + +public class BehaviorEnemy4 extends Behavior { + + public BehaviorEnemy4(ArkConfig $config) { + super($config); + action_list = new AnimAutoData[] { + new AnimAutoData(new AnimData("W_Idle", true, true, 0, 0), + 4f, (int) (256 / Math.sqrt(config.behavior_ai_activation))), + new AnimAutoData(new AnimData("W_Move", true, true, 0, 1), + 2f, 32*(config.behavior_allow_walk?1:0)), + new AnimAutoData(new AnimData("W_Move", true, true, 0, -1), + 2f, 32*(config.behavior_allow_walk?1:0)) + }; + } + + public static boolean match(String[] animList) { + Array arr = new Array<>(animList); + if (!arr.contains("W_Idle", false)) + return false; + if (!arr.contains("W_Attack", false)) + return false; + return true; + } + + public AnimData defaultAnim() { + return new AnimData("W_Idle", true, true); + } + + public AnimData clickEnd() { + return config.behavior_allow_interact?new AnimData("W_Attack", false, false, + new AnimData("W_Idle", true, true)) : null; + } + + public AnimData dragStart() { + return action_list[0].ANIM; + } + + public AnimData dragEnd() { + return clickEnd(); + } +} diff --git a/core/src/com/isharryh/arkpets/behaviors/BehaviorEnemy5.java b/core/src/com/isharryh/arkpets/behaviors/BehaviorEnemy5.java new file mode 100644 index 00000000..22e56a8e --- /dev/null +++ b/core/src/com/isharryh/arkpets/behaviors/BehaviorEnemy5.java @@ -0,0 +1,42 @@ +/** Copyright (c) 2022-2023, Harry Huang + * At GPL-3.0 License + */ +package com.isharryh.arkpets.behaviors; + +import com.badlogic.gdx.utils.Array; +import com.isharryh.arkpets.ArkConfig; +import com.isharryh.arkpets.utils.AnimAutoData; +import com.isharryh.arkpets.utils.AnimData; + + +public class BehaviorEnemy5 extends Behavior { + + public BehaviorEnemy5(ArkConfig $config) { + super($config); + action_list = new AnimAutoData[] { + new AnimAutoData(new AnimData("Idle", true, true, 0, 0), + 4f, (int) (256 / Math.sqrt(config.behavior_ai_activation))), + new AnimAutoData(new AnimData("Move", true, true, 0, 1), + 2f, 32*(config.behavior_allow_walk?1:0)), + new AnimAutoData(new AnimData("Move", true, true, 0, -1), + 2f, 32*(config.behavior_allow_walk?1:0)) + }; + } + + public static boolean match(String[] animList) { + Array arr = new Array<>(animList); + if (!arr.contains("Idle", false)) + return false; + if (!arr.contains("Move", false)) + return false; + return true; + } + + public AnimData defaultAnim() { + return new AnimData("Idle", true, true); + } + + public AnimData dragStart() { + return action_list[0].ANIM; + } +}