Esempio n. 1
0
    void GenerateBatlleForTheSun()
    {
        center   = Vector3.zero;
        distance = config.battleSize.value;
        float halfDistance = distance / 2;

        Vector3 team1Pos = center + Vector3.forward * halfDistance;
        Vector3 team2Pos = center - Vector3.forward * halfDistance;

        float teamOffset = 250;

        GenerateShips(team1Pos + Vector3.forward * (halfDistance + teamOffset), team2Pos - Vector3.forward * (halfDistance + teamOffset));

        sunSystem = SunSystem.Random(new LineBounds(distance * .33f, distance * .33f), new LineBounds <int>(1, 13));

        GenerateEnvironment(center, sunSystem);

        var station1 = new StationInitializerModel(teams[0]).Init(team1Pos - new Vector3(0, 0, 100), Quaternion.LookRotation(Vector3.forward, Vector3.up));
        var station2 = new StationInitializerModel(teams[1]).Init(team2Pos + new Vector3(0, 0, 100), Quaternion.LookRotation(Vector3.forward * -1, Vector3.up));

        {
            var o = station1.AddMyComponent <Obstacle>();
            o.radius = 250;
            navigation.AddObstacle(o);

            o        = station2.AddMyComponent <Obstacle>();
            o.radius = 250;
            navigation.AddObstacle(o);
        }

        station1.AddMyComponent <SatelliteBehaviour>().SetSun(sun.transform, Vector3.Distance(team1Pos, sun.transform.position), station1.transform.up);
        station2.AddMyComponent <SatelliteBehaviour>().SetSun(sun.transform, Vector3.Distance(team2Pos, sun.transform.position), station1.transform.up);

        ships.Add(station1);
        ships.Add(station2);

        teams[0].AddGoal(new DestroyObjectGoal(station2));
        teams[1].AddGoal(new DestroyObjectGoal(station1));
        foreach (var t in teams)
        {
            t.GetType().GetMethod("Lock", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(t, new object[] { 0, (int)Random.value * int.MaxValue });
        }

        _updaters.Add(new RespawnBehaviour(teams,
                                           new Transform[] { station1.transform, station2.transform },
                                           new float[] { distance + teamOffset, distance + teamOffset },
                                           25));
    }