Merge pull request #538 from madsboddum/locomotions

Added support for more locomotions to prevent a lot of game-breaking …
This commit is contained in:
Josh Larson
2022-06-28 15:53:25 -05:00
committed by GitHub
2 changed files with 19 additions and 8 deletions
@@ -1,7 +1,21 @@
package com.projectswg.holocore.resources.support.global.commands
import com.projectswg.common.data.encodables.tangible.Posture
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject
enum class Locomotion(val locomotionTableId: Int, val commandSdbColumnName: String, val check: (CreatureObject) -> Boolean) {
KNOCKED_DOWN(18, "L:knockedDown", {creatureObject -> creatureObject.posture == com.projectswg.common.data.encodables.tangible.Posture.KNOCKED_DOWN})
}
enum class Locomotion(val locomotionTableId: Int, val commandSdbColumnName: String, val posture: Posture) {
STANDING(0, "L:standing", Posture.UPRIGHT),
KNEELING(4, "L:kneeling", Posture.CROUCHED),
PRONE(7, "L:prone", Posture.PRONE),
SITTING(14, "L:sitting", Posture.SITTING),
SKILL_ANIMATING(15, "L:skillAnimating", Posture.SKILL_ANIMATING),
DRIVING_VEHICLE(16, "L:drivingVehicle", Posture.DRIVING_VEHICLE),
RIDING_CREATURE(17, "L:ridingCreature", Posture.RIDING_CREATURE),
KNOCKED_DOWN(18, "L:knockedDown", Posture.KNOCKED_DOWN),
INCAPACITATED(19, "L:incapacitated", Posture.INCAPACITATED),
DEAD(20, "L:dead", Posture.DEAD);
fun isActive(creatureObject: CreatureObject): Boolean {
return creatureObject.posture == posture
}
}
@@ -25,7 +25,6 @@ import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureOb
import com.projectswg.holocore.resources.support.objects.swg.weapon.WeaponObject;
import com.projectswg.holocore.resources.support.objects.swg.weapon.WeaponType;
import com.projectswg.holocore.services.support.objects.ObjectStorageService.ObjectLookup;
import kotlin.jvm.functions.Function1;
import me.joshlarson.jlcommon.concurrency.ScheduledThreadPool;
import me.joshlarson.jlcommon.control.IntentHandler;
import me.joshlarson.jlcommon.control.Service;
@@ -227,11 +226,9 @@ public class CommandQueueService extends Service {
@NotNull Locomotion[] locomotions = Locomotion.values();
for (Locomotion locomotion : locomotions) {
Function1<CreatureObject, Boolean> check = locomotion.getCheck();
boolean active = locomotion.isActive(source);
Boolean result = check.invoke(source);
if (Boolean.TRUE.equals(result)) {
if (active) {
sourceLocomotions.add(locomotion);
}
}