Пример #1
0
Файл: Game.cs Проект: L4fter/Orb
    private void CreateCelestialSystemFromScene()
    {
        celestialSystem = resolver.Resolve <CelestialSystem>();
        var planets     = planetFactory.CollectAllAvailablePlanets();
        var centralStar = planets.OrderByDescending(planet => planet.SimulatedEntity.Mass).First();

        celestialSystem.AddCentralStar(centralStar);
        celestialSystem.Add(planets);

        var allAvailableWeapons = weaponFactory.GetAllAvailableTypes();

        var onlyPlanets = planets.Except(new[] { centralStar }).ToList();
        var randomIndex = Random.Range(0, onlyPlanets.Count);

        var randomPlanet = onlyPlanets.Skip(randomIndex).First();
        var randomWeapon = allAvailableWeapons[Random.Range(0, allAvailableWeapons.Count)];

        weaponFactory.AddWeapon(randomWeapon, randomPlanet);
        inputPlanetController.Control(randomPlanet, randomPlanet.Weapon);
        playerStatsProvider.SetPlayerPlanet(randomPlanet);

        onlyPlanets.Remove(randomPlanet);

        randomIndex  = Random.Range(0, onlyPlanets.Count);
        randomPlanet = onlyPlanets.Skip(randomIndex).First();
        randomWeapon = allAvailableWeapons[Random.Range(0, allAvailableWeapons.Count)];
        weaponFactory.AddWeapon(randomWeapon, randomPlanet);
        aiPlanetController.Control(randomPlanet, randomPlanet.Weapon);
    }
Пример #2
0
    public CelestialSystem CreateFromSerialized(IProjectileFactory projectileFactory, IPlanetFactory planetFactory,
                                                IWeaponFactory weaponFactory)
    {
        var celestialSystem = resolver.Resolve <CelestialSystem>();
        var planets         = new List <IPlanet>();

        var central           = scs.planets.First(planet => planet.isCentral);
        var centralStarPlanet = planetFactory.CreatePlanet(central.entity.pos);

        central.entity.FillIn(centralStarPlanet.SimulatedEntity);
        celestialSystem.AddCentralStar(centralStarPlanet);

        foreach (var serializedPlanet in scs.planets.Except(new [] { central }))
        {
            var appearance = new PlanetAppearance()
            {
                color = serializedPlanet.color
            };
            var planet = planetFactory.CreatePlanet(serializedPlanet.entity.pos, appearance);
            weaponFactory.AddWeapon(serializedPlanet.weaponType, planet);
            serializedPlanet.entity.FillIn(planet.SimulatedEntity);
            planets.Add(planet);
        }
        celestialSystem.AddRaw(planets);
        projectileFactory.celestialSystem = celestialSystem;

        foreach (var projectile in scs.projectiles)
        {
            var proj = projectileFactory.CreateBullet(projectile.entity.pos);
            projectile.entity.FillIn(proj);
        }

        return(celestialSystem);
    }