public DefaultActuator(Dictionary<string, Dictionary<string, CharacterActionInterface>> actions, CharacterAbstract character, string initialActionSet) { if (ActionSetValidator.validate(actions)) { actions_ = actions; } else { throw new InvalidActionSetException("This action set is invalid for the DefaultActuator"); } character_ = character; currentActionSet_ = initialActionSet; currentAction_ = actions_[currentActionSet_]["rest"]; currentAction_.update(); }
public CharacterActionInterface interrupt(CharacterActionInterface newAction) { if (newAction == this || newAction.getPriority() <= priority_) { return this; } newAction.start(); return newAction; }
public CharacterActionInterface interrupt(CharacterActionInterface newAction) { if (newAction == this || (newAction.getPriority() <= priority_ && !newAction.isFinished())) { return this; } newAction.start(); return newAction; }
public void crouch() { CrouchAction crouch = (CrouchAction)actions_[currentActionSet_]["crouch"]; currentAction_ = currentAction_.interrupt(crouch); }
public void cover(CoverObject coverObject) { CoverActionInterface cover = (CoverActionInterface)actions_[currentActionSet_]["cover"]; cover.setCover(coverObject); currentAction_ = currentAction_.interrupt(cover); }
public void addAction(CharacterActionInterface action) { throw new NotImplementedException(); }
public void update() { Vector2 oldPos = character_.getPosition(); if (!currentAction_.isFinished()) { currentAction_.update(); } else { currentAction_ = actions_[currentActionSet_]["rest"]; currentAction_.update(); } character_.setVelocity(character_.getPosition() - oldPos); }
public void shoot(RangedWeaponAbstract weapon) { ShootActionInterface shoot = (ShootActionInterface)actions_[currentActionSet_]["shoot"]; shoot.shoot(weapon); currentAction_ = currentAction_.interrupt(shoot); }
public void moveTo(Vector2 location) { MoveToActionInterface moveTo = (MoveToActionInterface)actions_[currentActionSet_]["moveTo"]; moveTo.moveTo(location); /* //Or for efficiency's sake CharacterActionInterface move = actions_[currentActionSet_]["move"]; (move as MoveActionInterface).move(direction); */ currentAction_ = currentAction_.interrupt(moveTo); }
public CharacterActionInterface interrupt(CharacterActionInterface newAction) { if (newAction == this) { finished_ = true; return this; } if (newAction.getPriority() <= priority_ && !finished_) { return this; } newAction.start(); return newAction; }
public CharacterActionInterface interrupt(CharacterActionInterface newAction) { return newAction; }