Exemplo n.º 1
0
        public static void GenerateShips(IEnumerable <ShipSystemModel> ships, IEnumerable <ShipDriver> drivers, Vector3 position, Quaternion rotation, Vector3 up, Vector3 right, Vector3 forward, DistributionCube cube, ICollection <ShipController> outGeneratedShips)
        {
            int shipsAmount = drivers.Count();

            int[] shipsDistribution = Algs.Split(shipsAmount, Enumerable.Range(0, cube.cubesAmount).Select(i => UnityEngine.Random.value).ToArray());
            int   n = 0;

            var driver = drivers.GetEnumerator();
            var ship   = ships.GetEnumerator();

            foreach (var pos in cube.Distribute(position, up, right, forward))
            {
                for (int m = 0; m < shipsDistribution[n]; m++)
                {
                    driver.MoveNext();
                    ship.MoveNext();

                    var oldShip = driver.Current.ship;
                    var s       = new CustomShipInitializerModel(ship.Current, driver.Current)
                                  .Init(pos + right * (20 * m), rotation);

                    outGeneratedShips.Add(s);
                }

                n++;
            }
        }
Exemplo n.º 2
0
    IEnumerator <ShipController> InitShip()
    {
        var ships = GameResources.GetAllShips()
                    .GroupBy(s => GameResources.GetShipHull(s.hull.hullName).shipClass)
                    .Where(s => s.Key > 0 && s.Key < 4)
                    .OrderBy(s => s.Key)
                    .Select(s => s.ToArray());

begin:

        foreach (var model in ships)
        {
            foreach (var s in model)
            {
                var ship = new CustomShipInitializerModel(s, new FakeDriver()).Init(targetPosition.position, targetPosition.rotation);
                yield return(ship);
            }
        }
        goto begin;
    }