private void DestroyVessels() { if (teamMood == TeamMood.noContact) { if (capitalShips.Count == 0) { bool allHaveAWP = true; // Check if all flights have intercept WPs foreach (LFAI.Formation f in formations) { if (!f.hasWPs) { allHaveAWP = false; } } // if there's no contact and even one of the flights has no intercept order, give new to all if (!allHaveAWP) { // Create list of Flight lead GO-s List <GameObject> leads = new List <GameObject>(formations.Count); foreach (LFAI.Formation f in formations) { leads.Add(f.Lead); } // foreach (GameObject p in players) { leads.Add(p); } // Get list of routes i.e wplists List <RAMP.Route> routes = new List <RAMP.Route>(formations.Count); routes = RAMP.PlanDestroyVessels(likelyHostilePos, leads); for (int i = 0; i < formations.Count; i++) { formations[i].Lead.GetComponent <VesselAI>().GiveOrder(new LFAI.Order(LFAI.OrderType.intercept, routes[i])); //Debug.Log(i.ToString() + routes[i].route[0].wpCoordinates + " " + routes[i].route[1].wpCoordinates); } } } else { bool hasWP = true; if (capitalShips[0].GetComponent <VesselAI>().wpList.Count == 0) { hasWP = false; } if (!hasWP) { RAMP.Route route = new RAMP.Route(1); RAMP.Waypoint wp = new RAMP.Waypoint( new Vector2(likelyHostilePos.x, likelyHostilePos.y), 20f, false, false ); route.wpList.Add(wp); capitalShips[0].GetComponent <VesselAI>().GiveOrder(new LFAI.Order(LFAI.OrderType.intercept, route)); } } } else { } }
private void AttackBase() { switch (teamMood) { case TeamMood.noContact: if (capitalShips.Count == 0) { bool allHaveAWP = true; // Check if all flights have intercept WPs foreach (LFAI.Formation f in formations) { if (!f.hasWPs) { allHaveAWP = false; } } // if there's no contact and even one of the flights has no intercept order, give new to all if (!allHaveAWP) { // Create list of Flight lead GO-s List <GameObject> leads = new List <GameObject>(formations.Count); foreach (LFAI.Formation f in formations) { leads.Add(f.Lead); } List <RAMP.Route> routes = RAMP.PlanDestroyVessels(likelyHostilePos, leads); for (int i = 0; i < formations.Count; i++) { formations[i].Lead.GetComponent <VesselAI>().GiveOrder(new LFAI.Order(LFAI.OrderType.intercept, routes[i])); } } } else { bool hasWP = true; if (capitalShips[0].GetComponent <VesselAI>().wpList.Count == 0) { hasWP = false; } if (!hasWP) { RAMP.Route route = new RAMP.Route(1); RAMP.Waypoint wp = new RAMP.Waypoint( new Vector2(likelyHostilePos.x, likelyHostilePos.y), 20f, false, false ); route.wpList.Add(wp); capitalShips[0].GetComponent <VesselAI>().GiveOrder(new LFAI.Order(LFAI.OrderType.intercept, route)); // Instantiate the escort formation and attach it to the escortable, if it has none if (escortFormation == null) { escortFormation = Instantiate(EscortFormationPrefab, capitalShips[0].transform.position, Quaternion.identity) as GameObject; escortFormation.transform.parent = capitalShips[0].transform; escortFormation.transform.localPosition = new Vector3(0f, 0f, 0f); escortFormation.transform.localEulerAngles = new Vector3(0f, 0f, 0f); } foreach (LFAI.Formation formation in formations) { if (formation.Lead.GetComponent <VesselAI>().ReportFlightStatus() != VesselAI.FlightStatus.sentry) { GameObject orderObj = null; for (int i = 0; i < escortFormation.GetComponent <FormationScript>().positions.Count; i++) { if (!escortFormation.GetComponent <FormationScript>().positions[i].GetComponent <Position>().posOccupied) { orderObj = escortFormation.GetComponent <FormationScript>().positions[i]; escortFormation.GetComponent <FormationScript>().positions[i].GetComponent <Position>().posOccupied = true; escortFormation.GetComponent <FormationScript>().positions[i].GetComponent <Position>().wpAssignedTo = formation.Lead; break; } } LFAI.Order order = new LFAI.Order(LFAI.OrderType.Sentry, orderObj); formation.Lead.GetComponent <VesselAI>().GiveOrder(order); } } } } break; case TeamMood.offensive: break; case TeamMood.cautious: break; case TeamMood.defensive: break; } }