89 lines
2.1 KiB
C#
89 lines
2.1 KiB
C#
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Runtime.InteropServices.WindowsRuntime;
|
|
using UnityEngine;
|
|
|
|
public class Fleet : MonoBehaviour
|
|
{
|
|
public float TravelDistanceTotal = 0;
|
|
public int TravelTimeTotal = 0;
|
|
public string Name { get; set; }
|
|
public GameObject CurrentLocation;
|
|
public GameObject Destination;
|
|
public List<Ship> Ships = new();
|
|
// Start is called before the first frame update
|
|
void Start()
|
|
{
|
|
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
|
|
}
|
|
public int GetNumberOfShips()
|
|
{
|
|
return Ships.Count;
|
|
}
|
|
public int GetStrength()
|
|
{
|
|
int result = 0;
|
|
foreach (Ship g in Ships)
|
|
{
|
|
result += g.Strength;
|
|
}
|
|
return result;
|
|
}
|
|
public int GetSpeed()
|
|
{
|
|
int result = FleetManager.maxSpeed;
|
|
foreach (Ship g in Ships)
|
|
{
|
|
if (g.Speed < result)
|
|
{
|
|
result = g.Speed;
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
public float GetTravelDistanceTotal()
|
|
{
|
|
float result = 0;
|
|
Vector3 dest = Destination.transform.position;
|
|
Vector3 curr = CurrentLocation.transform.position;
|
|
Vector3 path = dest - curr;
|
|
result = path.magnitude;
|
|
return result;
|
|
}
|
|
|
|
public int GetTravelTimeTotal()
|
|
{
|
|
int result = 0;
|
|
result = (int) (this.TravelDistanceTotal / this.GetSpeed());
|
|
return result;
|
|
}
|
|
|
|
public void SetDestination(GameObject destStarSystem)
|
|
{
|
|
if(this.CurrentLocation == destStarSystem)
|
|
{
|
|
return;
|
|
}
|
|
this.Destination = destStarSystem;
|
|
this.TravelDistanceTotal = GetTravelDistanceTotal();
|
|
this.TravelTimeTotal = GetTravelTimeTotal();
|
|
//TODO: make fleet invisible
|
|
}
|
|
public void Travel()
|
|
{
|
|
this.TravelTimeTotal--;
|
|
if (this.TravelTimeTotal == 0) //fleet arrived
|
|
{
|
|
//TODO put fleet into ui of destination Star System
|
|
this.CurrentLocation = this.Destination;
|
|
}
|
|
}
|
|
}
|