public void acceptWorkStrike(ActorStrikeAction actorStrikeAction) { Island relevantIsland = getClosestIslandToLocation(actorStrikeAction.getStriker().getLocation()); relevantIsland.acceptWorkStrike(actorStrikeAction); }
private void handleStrikeAction(ActorAction action) { ActorStrikeAction strikeAction = (ActorStrikeAction)action; if (strikeAction.getStrikeType() == ActorStrikeAction.StrikeType.OnBlock) { switch (strikeAction.getJobType()) { case JobType.combat: break; case JobType.agriculture: islandManager.acceptWorkStrike((ActorStrikeAction)action); SoundsManager.playSoundType(SoundsManager.SoundType.wheatRustling, ((ActorStrikeAction)action).getStriker().getLocation(), .3f); break; case JobType.building: placeBlock(((ActorStrikeBlockAction)action).getStrikeTarget(), 5); break; case JobType.mining: strikeAction.getStriker().setRotationWithGivenDeltaVec(strikeAction.getLookDeltaVec()); islandManager.acceptWorkStrike((ActorStrikeAction)action); break; case JobType.logging: strikeAction.getStriker().setRotationWithGivenDeltaVec(strikeAction.getLookDeltaVec()); islandManager.acceptWorkStrike((ActorStrikeAction)action); //chopBlockAt(((ActorStrikeBlockAction)action).getStrikeTarget()); break; default: throw new Exception("unhandled job type"); } } else // is strike along ray { ActorStrikeAlongRayAction rayStrike = (ActorStrikeAlongRayAction)strikeAction; switch (strikeAction.getJobType()) { case JobType.combat: actorManager.handleStrike(rayStrike.getStriker(), rayStrike.getStrikeOrigen(), rayStrike.getStrikeDirectionNormal(), rayStrike.getStrikeDistance(), 1); rayStrike.getStriker().StartStrikeAnimation(); break; case JobType.agriculture: islandManager.acceptWorkStrike(rayStrike); break; case JobType.building: islandManager.acceptWorkStrike(rayStrike); break; case JobType.mining: islandManager.acceptWorkStrike(rayStrike); break; case JobType.logging: islandManager.acceptWorkStrike(rayStrike); break; case JobType.CarryingSomething: islandManager.acceptWorkStrike(rayStrike); break; } } }