|
|
@ -69,6 +69,8 @@ namespace GWConquest |
|
|
|
|
|
|
|
private float animDistanceCovered = 0; |
|
|
|
|
|
|
|
private Vector3 restingPosition; |
|
|
|
|
|
|
|
public float AnimCompletion { |
|
|
|
get => animDistanceCovered / State.CurrentTransition.TransitionLength; |
|
|
|
} |
|
|
@ -167,6 +169,8 @@ namespace GWConquest |
|
|
|
public float movingArmyScale; |
|
|
|
private GameObject movingArmyIcon; |
|
|
|
|
|
|
|
private Vector3 arrivalPosition; |
|
|
|
|
|
|
|
public float movementSpeed = 1f; |
|
|
|
|
|
|
|
public int FormationNumber { |
|
|
@ -334,7 +338,7 @@ namespace GWConquest |
|
|
|
var iconComp = movingArmyIcon.GetComponent<FormationIcon>(); |
|
|
|
iconComp.Arrow.gameObject.SetActive(true); |
|
|
|
iconComp.UpdateDisplay(this); |
|
|
|
iconComp.CanBeDragged = false; |
|
|
|
iconComp.CanBeDragged = ZoneType == ZoneType.Space; |
|
|
|
var stick = movingArmyIcon.AddComponent<StickToFormation>(); |
|
|
|
stick.formation = this; |
|
|
|
|
|
|
@ -356,7 +360,9 @@ namespace GWConquest |
|
|
|
IngameUI.Instance.PlanetView.SpawnLandingLine(this); |
|
|
|
} |
|
|
|
} else { |
|
|
|
MakeMovingIcon(IngameUI.Instance.MovingFleetsTransform); |
|
|
|
//MakeMovingIcon(IngameUI.Instance.MovingFleetsTransform);
|
|
|
|
|
|
|
|
arrivalPosition = targetZone.planet.GetFleetArrivalPosition(originZone); |
|
|
|
} |
|
|
|
|
|
|
|
if(originZone.planet == targetZone.planet) |
|
|
@ -367,7 +373,7 @@ namespace GWConquest |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
if(movingArmyIcon != null) |
|
|
|
if(currentZone.zoneType == ZoneType.Ground && movingArmyIcon != null) |
|
|
|
{ |
|
|
|
Destroy(movingArmyIcon); |
|
|
|
movingArmyIcon = null; |
|
|
@ -378,6 +384,8 @@ namespace GWConquest |
|
|
|
{ |
|
|
|
planet.InTransitFormations.Remove(this); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -407,6 +415,12 @@ namespace GWConquest |
|
|
|
{ |
|
|
|
|
|
|
|
currentZone = Zone.GetFromId(State.CurrentTransition.TargetZone); |
|
|
|
|
|
|
|
if(currentZone.zoneType == ZoneType.Space) |
|
|
|
{ |
|
|
|
State.FleetRestingPoint = currentZone.planet.GetFleetArrivalPosition(Zone.GetFromId(State.CurrentTransition.OriginZone)); |
|
|
|
} |
|
|
|
|
|
|
|
State.CurrentTransition.OriginZone = -1; |
|
|
|
State.CurrentTransition.TargetZone = -1; |
|
|
|
State.CurrentTransition.TransitionLength = 0; |
|
|
@ -500,7 +514,13 @@ namespace GWConquest |
|
|
|
|
|
|
|
private void Update() |
|
|
|
{ |
|
|
|
|
|
|
|
if(GameManager.EntitiesLoaded) |
|
|
|
{ |
|
|
|
if(currentZone != null && currentZone.zoneType == ZoneType.Space && movingArmyIcon == null) |
|
|
|
{ |
|
|
|
MakeMovingIcon(IngameUI.Instance.MovingFleetsTransform); |
|
|
|
} |
|
|
|
} |
|
|
|
//Debug.LogFormat("Current state: IsInTransit {0}; CurrentZone {1}; CoveredDistance {2}", State.IsInTransit, State.CurrentZone, CoveredDistance);
|
|
|
|
|
|
|
|
if (MovementState == FormationMovementState.Moving) |
|
|
@ -508,6 +528,17 @@ namespace GWConquest |
|
|
|
animDistanceCovered += movementSpeed * Time.deltaTime; |
|
|
|
Zone originZone = Zone.GetFromId(State.CurrentTransition.OriginZone); |
|
|
|
Zone targetZone = Zone.GetFromId(State.CurrentTransition.TargetZone); |
|
|
|
|
|
|
|
Vector3 originPos = originZone.transform.position; |
|
|
|
Vector3 targetPos = targetZone.transform.position; |
|
|
|
|
|
|
|
if(!State.CurrentTransition.IsCurved) |
|
|
|
{ |
|
|
|
originPos += originZone.planet.GetFleetArrivalPosition(targetZone) * originZone.planet.GetCurrentCircleRadius(); |
|
|
|
targetPos += targetZone.planet.GetFleetArrivalPosition(originZone) * targetZone.planet.GetCurrentCircleRadius(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
Vector3 oldPos = transform.position; |
|
|
|
Vector3 newPos; |
|
|
|
Quaternion newRot; |
|
|
@ -525,8 +556,8 @@ namespace GWConquest |
|
|
|
//}
|
|
|
|
//else
|
|
|
|
//{
|
|
|
|
newPos = Vector3.Lerp(originZone.transform.position, |
|
|
|
targetZone.transform.position, |
|
|
|
newPos = Vector3.Lerp(originPos, |
|
|
|
targetPos, |
|
|
|
animDistanceCovered / State.CurrentTransition.TransitionLength); |
|
|
|
newRot = Quaternion.LookRotation(newPos - oldPos, Vector3.up); |
|
|
|
//}
|
|
|
@ -535,10 +566,67 @@ namespace GWConquest |
|
|
|
transform.rotation = newRot; |
|
|
|
|
|
|
|
} |
|
|
|
else if(currentZone != null) |
|
|
|
else if(MovementState == FormationMovementState.PreparingMovement) |
|
|
|
{ |
|
|
|
transform.position = currentZone.transform.position; |
|
|
|
if(ZoneType == ZoneType.Space) |
|
|
|
{ |
|
|
|
var planet = currentZone.planet; |
|
|
|
Vector3 origin = GetRestingPosition(); |
|
|
|
var targetZone = PathQueue.First(); |
|
|
|
Vector3 target = planet.transform.position + planet.GetFleetArrivalPosition(targetZone) * planet.GetCurrentCircleRadius(); |
|
|
|
|
|
|
|
Vector3 newPos = Vector3.Lerp(origin, target, 1f - ActionCooldownPercent); |
|
|
|
transform.position = newPos; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
else if(MovementState == FormationMovementState.FinishingMovement) |
|
|
|
{ |
|
|
|
if(ZoneType == ZoneType.Space) |
|
|
|
{ |
|
|
|
var planet = currentZone.planet; |
|
|
|
Vector3 target = GetRestingPosition(); |
|
|
|
Vector3 origin = planet.transform.position + arrivalPosition * planet.GetCurrentCircleRadius(); |
|
|
|
|
|
|
|
Vector3 newPos = Vector3.Lerp(origin, target, 1f - ActionCooldownPercent); |
|
|
|
transform.position = newPos; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
else if(MovementState == FormationMovementState.Idle) |
|
|
|
{ |
|
|
|
//transform.position = currentZone.transform.position;
|
|
|
|
if(ZoneType == ZoneType.Space) |
|
|
|
{ |
|
|
|
transform.position = GetRestingPosition(); |
|
|
|
} |
|
|
|
else { |
|
|
|
transform.position = currentZone.transform.position; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if(movingArmyIcon != null && ZoneType == ZoneType.Space) |
|
|
|
{ |
|
|
|
if(GameManager.Instance.ShowCircles || MovementState == FormationMovementState.Moving) |
|
|
|
{ |
|
|
|
movingArmyIcon.SetActive(true); |
|
|
|
movingArmyIcon.GetComponent<StickToFormation>().Update(); |
|
|
|
} |
|
|
|
else { |
|
|
|
movingArmyIcon.SetActive(false); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private Vector3 GetRestingPosition() |
|
|
|
{ |
|
|
|
if(currentZone == null) |
|
|
|
return Vector3.zero; |
|
|
|
|
|
|
|
var planet = currentZone.planet; |
|
|
|
float currentCircleRadius = planet.GetCurrentCircleRadius(); |
|
|
|
|
|
|
|
return planet.transform.position + State.FleetRestingPoint * 0.5f * currentCircleRadius; |
|
|
|
} |
|
|
|
|
|
|
|
public override void Attached() |
|
|
|