mirror of
https://github.com/collinsmith/riiablo.git
synced 2025-03-05 23:20:32 +07:00
Created Actioneer system to manage entity actions such as spell casting
This commit is contained in:
parent
885df8f4e2
commit
8a820effc8
@ -1,5 +1,7 @@
|
||||
package com.riiablo.engine.client;
|
||||
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import com.artemis.Aspect;
|
||||
import com.artemis.BaseSystem;
|
||||
import com.artemis.ComponentMapper;
|
||||
@ -18,18 +20,20 @@ import com.riiablo.Riiablo;
|
||||
import com.riiablo.camera.IsometricCamera;
|
||||
import com.riiablo.engine.Engine;
|
||||
import com.riiablo.engine.client.component.Hovered;
|
||||
import com.riiablo.engine.server.Actioneer;
|
||||
import com.riiablo.engine.server.Pathfinder;
|
||||
import com.riiablo.engine.server.component.Interactable;
|
||||
import com.riiablo.engine.server.component.Position;
|
||||
import com.riiablo.engine.server.component.Target;
|
||||
import com.riiablo.item.Item;
|
||||
import com.riiablo.log.LogManager;
|
||||
import com.riiablo.map.Map;
|
||||
import com.riiablo.map.RenderSystem;
|
||||
import com.riiablo.profiler.ProfilerSystem;
|
||||
import com.riiablo.save.ItemController;
|
||||
|
||||
public class CursorMovementSystem extends BaseSystem {
|
||||
private static final String TAG = "CursorMovementSystem";
|
||||
private static final Logger log = LogManager.getLogger(CursorMovementSystem.class);
|
||||
|
||||
protected ComponentMapper<Target> mTarget;
|
||||
protected ComponentMapper<Position> mPosition;
|
||||
@ -40,6 +44,7 @@ public class CursorMovementSystem extends BaseSystem {
|
||||
protected MenuManager menuManager;
|
||||
protected DialogManager dialogManager;
|
||||
protected ProfilerSystem profiler;
|
||||
protected Actioneer actioneer;
|
||||
|
||||
@Wire(name = "iso")
|
||||
protected IsometricCamera iso;
|
||||
@ -77,9 +82,9 @@ public class CursorMovementSystem extends BaseSystem {
|
||||
if (hit) return;
|
||||
|
||||
if (Gdx.input.isButtonPressed(Input.Buttons.LEFT) && UIUtils.shift()) {
|
||||
// static primary cast
|
||||
actioneer.cast(renderer.getSrc(), Riiablo.charData.getAction(Input.Buttons.LEFT));
|
||||
} else if (Gdx.input.isButtonPressed(Input.Buttons.RIGHT)) {
|
||||
// secondary cast
|
||||
actioneer.cast(renderer.getSrc(), Riiablo.charData.getAction(Input.Buttons.RIGHT));
|
||||
} else {
|
||||
updateLeft();
|
||||
}
|
||||
|
32
core/src/com/riiablo/engine/server/Actioneer.java
Normal file
32
core/src/com/riiablo/engine/server/Actioneer.java
Normal file
@ -0,0 +1,32 @@
|
||||
package com.riiablo.engine.server;
|
||||
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import com.artemis.ComponentMapper;
|
||||
import net.mostlyoriginal.api.system.core.PassiveSystem;
|
||||
|
||||
import com.riiablo.Riiablo;
|
||||
import com.riiablo.codec.excel.Skills;
|
||||
import com.riiablo.engine.server.component.Class;
|
||||
import com.riiablo.engine.server.component.MovementModes;
|
||||
import com.riiablo.engine.server.component.Sequence;
|
||||
import com.riiablo.log.LogManager;
|
||||
|
||||
public class Actioneer extends PassiveSystem {
|
||||
private static final Logger log = LogManager.getLogger(Actioneer.class);
|
||||
|
||||
protected ComponentMapper<Class> mClass;
|
||||
protected ComponentMapper<Sequence> mSequence;
|
||||
protected ComponentMapper<MovementModes> mMovementModes;
|
||||
|
||||
public void cast(int entityId, int skillId) {
|
||||
if (mSequence.has(entityId)) return;
|
||||
final Skills.Entry skill = Riiablo.files.skills.get(skillId);
|
||||
log.trace("casting skill: {}", skill);
|
||||
|
||||
byte mode = (byte) mClass.get(entityId).type.getMode(skill.anim);
|
||||
log.trace("mode: {}", mode);
|
||||
|
||||
mSequence.create(entityId).sequence(mode, mMovementModes.get(entityId).NU);
|
||||
}
|
||||
}
|
@ -79,6 +79,7 @@ import com.riiablo.engine.client.debug.PathDebugger;
|
||||
import com.riiablo.engine.client.debug.PathfindDebugger;
|
||||
import com.riiablo.engine.client.debug.RenderSystemDebugger;
|
||||
import com.riiablo.engine.server.AIStepper;
|
||||
import com.riiablo.engine.server.Actioneer;
|
||||
import com.riiablo.engine.server.AngularVelocity;
|
||||
import com.riiablo.engine.server.AnimDataResolver;
|
||||
import com.riiablo.engine.server.AnimStepper;
|
||||
@ -567,6 +568,7 @@ public class GameScreen extends ScreenAdapter implements GameLoadingScreen.Loada
|
||||
;
|
||||
if (!DEBUG_TOUCHPAD && Gdx.app.getType() == Application.ApplicationType.Desktop) {
|
||||
builder.with(new CursorMovementSystem());
|
||||
builder.with(new Actioneer());
|
||||
}
|
||||
if (socket == null) {
|
||||
builder.with(new ItemGenerator());
|
||||
|
Loading…
Reference in New Issue
Block a user