Пример #1
0
        public override void OnInspectorGUI()
        {
            PlanetBehavior t = target as PlanetBehavior;

            if (t == null)
            {
                return;
            }

            if (GUILayout.Button("Move To Start of Orbit"))
            {
                t.transform.position = PlanetBehavior.Elipse(t.XElipseRadius(), t.YElipseRadius(), Vector3.zero, t.ElipseAngle(), 0);
            }

            base.OnInspectorGUI();
        }
Пример #2
0
        void OnSceneGUI()
        {
            PlanetBehavior t = target as PlanetBehavior;

            if (t == null)
            {
                return;
            }

            Handles.color = Color.yellow;

            Vector3[] elipsePoints = new Vector3[256];
            for (int i = 0; i < elipsePoints.Length; i++)
            {
                elipsePoints[i] = PlanetBehavior.Elipse(t.XElipseRadius(), t.YElipseRadius(), Vector3.zero, t.ElipseAngle(), (float)i / elipsePoints.Length); // ((float)(i + 1) / elipsePoints.Length) * 4 * t.XElipseRadius()
            }

            for (int i = 1; i < elipsePoints.Length; i++)
            {
                Handles.DrawLine(elipsePoints[i - 1], elipsePoints[i]);
            }
        }
Пример #3
0
    void CheckEnemyActions()
    {
        PlanetBehavior playerPlanet = PlayerStatsController.Instance.GetPlayersPlanet();

        if (playerPlanet != null)
        {
            transform.LookAt(playerPlanet.transform.position, -Vector3.forward);

            float cooldown = GetCooldownPercents();

            if (cooldown >= 1f)
            {
                //set delay before next launch to make enemy more easy
                if (Time.time > lastLaunchTime + currentWeaponStats.CooldownTime + launchDelayAI)
                {
                    //enemy launch his rocket
                    LaunchRocket();

                    launchDelayAI = Random.Range(0.4f, 2.5f);
                }
            }
        }
    }
Пример #4
0
    public void ResetSystem()
    {
        Debug.Log("Clean previous system");

        int planetCount = PlanetList.Count;

        for (int i = 0; i < planetCount; i++)
        {
            PlanetBehavior planet = PlanetList[0];
            PlanetList.RemoveAt(0);
            Destroy(planet.gameObject);
        }

        Storage.Instance.CleanPool();

        PlanetList.Clear();
        PlanetBarsList.Clear();

        //spawn new objects
        InitializeSystem();

        //unpause
        Messenger.Broadcast(MessageKeys.ON_CONTINUE);
    }
Пример #5
0
 public void AttachPlanet(PlanetBehavior planet)
 {
     currentPlanet = planet;
 }
Пример #6
0
    void InitializeSystem()
    {
        //Create planets here

        float currentDistance = MinPlanetDistance;

        List <int> FreePlanets = new List <int>();

        for (int i = 0; i < PlanetCount; i++)
        {
            //Generate random position
            Vector3 newPos = new Vector3(0f, 0f, 0f);

            //try to avoid overlays of planets

            currentDistance += Random.Range(1f, 7f);
            float dist = currentDistance;

            //check that planet on proper distance from each other
            float resultSpeed = Random.Range(PlanetInitSpeedMin, PlanetInitSpeedMax);

            //ability to set any start angle on orbit
            newPos.x = Mathf.Sin(0f) * dist;
            newPos.y = Mathf.Cos(0f) * dist;

            //better if depends from size
            //  float newPlanetMass = Random.Range(PlanetInitMassMin, PlanetInitMassMax);

            GameObject     newPlanet = Instantiate(PlanetPrefab, newPos, PlanetPrefab.transform.rotation);
            PlanetBehavior planet    = newPlanet.GetComponent <PlanetBehavior>();
            planet.ID = i;

            //randomize planet type
            int        randomType = Random.Range(0, 3);
            PlanetType t          = (PlanetType)randomType;

            int weaponType = Random.Range(1, 4);
            //choose weapon here

            planet.Initialize(resultSpeed, t, weaponType);

            PlanetList.Add(planet);

            GameObject barObject = Instantiate(HpBarPrefab, newPos + new Vector3(0f, 10f, -10f), Quaternion.identity);
            HealthBar  bar       = barObject.GetComponent <HealthBar>();
            bar.AttachPlanet(planet);
            PlanetBarsList.Add(bar);
            Storage.Instance.AddToPool(barObject);

            //add offset from planet
            currentDistance += planet.GetSize() + 3f;
            FreePlanets.Add(planet.ID);
        }

        int playerPlanetIndex = Random.Range(0, FreePlanets.Count);
        int playerPlanetID    = FreePlanets[playerPlanetIndex];

        FreePlanets.Remove(playerPlanetID);

        //also select planet for enemy
        int enemyIndex    = Random.Range(0, FreePlanets.Count);
        int enemyPlanetID = FreePlanets[enemyIndex];

        FreePlanets.Remove(enemyPlanetID);


        foreach (PlanetBehavior planet in PlanetList)
        {
            if (planet.ID == playerPlanetID)
            {
                planet.SetPlanetOwner(PlanetBehavior.PlanetOwnerType.Player);
                Messenger.Broadcast(MessageKeys.ON_PLANET_SETTED, planet, planet.GetWeaponID());
                Debug.Log("Player planet ID:" + playerPlanetID);
            }
            else if (planet.ID == enemyPlanetID)
            {
                planet.SetPlanetOwner(PlanetBehavior.PlanetOwnerType.AI);
                Debug.Log("AI planet ID:" + playerPlanetID);
            }
            else
            {
                planet.SetPlanetOwner(PlanetBehavior.PlanetOwnerType.None);
            }
        }
    }
Пример #7
0
 public void RemovePlanet(PlanetBehavior planet)
 {
     PlanetList.Remove(planet);
 }
Пример #8
0
 private void OnEnable()
 {
     planet = (PlanetBehavior)target;
 }
Пример #9
0
 public void OnPlanetSelected(PlanetBehavior planet, int weaponID)
 {
     currentWeaponStats = Storage.Instance.GetWeaponData(weaponID);
     currentPlanet      = planet;
 }
Пример #10
0
 // Use this for initialization
 void Start()
 {
     hexPlanet = planet.GetComponent<HexPlanet>();
     planetBehavior = planet.GetComponent<PlanetBehavior>();
     sceneBuilder = GameObject.FindGameObjectWithTag("GameController").GetComponent<SceneBuilder>();
 }
Пример #11
0
 private void Awake()
 {
     planet          = transform.parent.GetComponent <PlanetBehavior>();
     planetTransform = transform.parent;
 }