public void jumpPlayerToStar(PlayerModel player, StarModel star) { float distance = starService.CalculateDistanceBetweenStars(starService.GetStarByName(player.currentNodeName), star); float engineJumpDistance = player.getActiveShip().getShipJumpDistance(); if (distance > engineJumpDistance) { throw new UnityEngine.UnityException("Player Engines are not strong enough to jump there directly"); } if (player.getActiveShip().currentEnergyAmount < 10) { throw new UnityEngine.UnityException("Insufficient Energy for a jump"); } if (playerAdapter.JumpPlayerToStar(player, star)) { player.currentNodeName = star.name; PlayerJumpedToStarEvent playerJumpedToStarEvent = new PlayerJumpedToStarEvent(player, star); eventManager.DispatchEvent <PlayerJumpedToStarEvent>(playerJumpedToStarEvent); OrbitPlayerOnStar(player, star); } }
protected void OnPlayJumpToStar(PlayerJumpedToStarEvent e) { player.currentNodeName = e.star.name; }