示例#1
0
        public Planet GeneratePlanet(PlanetSize size)
        {
            var position = GetRandomPosition();
            var category = GetRandomCategory(position);
            var planet   = new Planet(position, size, category);

            return(planet);
        }
示例#2
0
        public Planet(Vector2 initialPosition, Allegiance allegiance, PlanetSize size, int numberOfMinions)
            : base(initialPosition, allegiance)
        {
            MinionIncrementPerSecond = Global.MinionIncrementPerSecond[size];
              mSize = size;
              Shield = 0;
              MinionCount = numberOfMinions;

              mObstruction = new Obstruction(initialPosition, CollisionRadius);
              mVisibility = new Visibility(this);
        }
示例#3
0
        public static float SizeToMass(this PlanetSize size, float density)
        {
            switch (size)
            {
            // TODO: Planet sizes (floats) should be defined somewhere else
            case PlanetSize.Small:
                return(Mass(Area(128f / PixelsPerUnit)));

            case PlanetSize.Medium:
                return(Mass(Area(192f / PixelsPerUnit)));

            case PlanetSize.Large:
                return(Mass(Area(244f / PixelsPerUnit)));

            default:
                return(0f);
            }

            float Area(float radius) => radius * radius * Mathf.Pi;
            float Mass(float area) => area * density;
        }
示例#4
0
 private Planet CreatePlanet(Vector2 position, Allegiance allegiance, PlanetSize planetSize, int numberOfMinions)
 {
     var planet = mGameObjectFactory.CreatePlanet(position, allegiance, planetSize, numberOfMinions);
       AddUnit(planet);
       return planet;
 }
示例#5
0
 public Planet CreatePlanet(Vector2 position, Allegiance allegiance, PlanetSize size, int numberOfMinions)
 {
     var unit = new Planet(position, allegiance, size, numberOfMinions);
       return unit;
 }
示例#6
0
 public Planet(PolarPosition position, PlanetSize size, PlanetCategory category)
 {
     Position = position;
     Size     = size;
     Category = category;
 }
示例#7
0
	public override void Initialize(bool bRandomize)
	{
		if (bRandomize)
		{
			int seed = UnityEngine.Random.Range (0, 8);
			Type = (PlanetType)seed;
			seed = UnityEngine.Random.Range (0, 5);
			Size = (PlanetSize)seed;

			Coordinates.Set (UnityEngine.Random.Range(-50f, 50f), UnityEngine.Random.Range(-50f, 50f));
		}
		base.Initialize (bRandomize);
		
		switch (Type)
		{
			case PlanetType.Asteroid:
			{
				_baseModifiers.Fuel = 0f;
				_baseModifiers.Metal = UnityEngine.Random.Range (1.25f, 1.4f);
				_baseModifiers.Crystal = UnityEngine.Random.Range (.25f, .4f);
				_baseModifiers.Organic = 0;

				_initialRates = new GainRate (0f, 0f, 0f, 0f);
				break;
			}
			case PlanetType.Aquatic:
			{
				_baseModifiers.Fuel = UnityEngine.Random.Range (.8f, 1.1f);
				_baseModifiers.Metal = UnityEngine.Random.Range (.1f, .2f);
				_baseModifiers.Crystal = UnityEngine.Random.Range (.5f, .75f);
				_baseModifiers.Organic = UnityEngine.Random.Range (.5f, .75f);

				_initialRates = new GainRate (0f, 0f, .5f, 2f);
				break;
			}
			case PlanetType.Barren:
			{
				_baseModifiers.Fuel = 0f;
				_baseModifiers.Metal = UnityEngine.Random.Range (.5f, .75f);
				_baseModifiers.Crystal = UnityEngine.Random.Range (.1f, .2f);
				_baseModifiers.Organic = 0f;

				_initialRates = new GainRate (0f, 0f, 0f, 0f);
				break;
			}
			case PlanetType.Desert:
			{
				_baseModifiers.Fuel = UnityEngine.Random.Range (.8f, 1.1f);
				_baseModifiers.Metal = UnityEngine.Random.Range (.8f, 1.1f);
				_baseModifiers.Crystal = UnityEngine.Random.Range (.5f, .75f);
				_baseModifiers.Organic = UnityEngine.Random.Range (.1f, .2f);

				_initialRates = new GainRate (0f, 0f, 0f, 0f);
				break;
			}
			case PlanetType.Frozen:
			{
				_baseModifiers.Fuel = UnityEngine.Random.Range (.1f, .2f);
				_baseModifiers.Metal = UnityEngine.Random.Range (.1f, .2f);
				_baseModifiers.Crystal = UnityEngine.Random.Range (1.1f, 1.2f);
				_baseModifiers.Organic = 0f;

				_initialRates = new GainRate (0f, 0f, 0f, 0f);
				break;
			}
			case PlanetType.Gas:
			{
				_baseModifiers.Fuel = UnityEngine.Random.Range (1.4f, 1.6f);
				_baseModifiers.Metal = 0f;
				_baseModifiers.Crystal = 0f;
				_baseModifiers.Organic = 0f;

				_initialRates = new GainRate (.5f, 0f, 0f, 0f);
				break;
			}
			case PlanetType.Jungle:
			{
				_baseModifiers.Fuel = UnityEngine.Random.Range (1.1f, 1.2f);
				_baseModifiers.Metal = UnityEngine.Random.Range (.25f, .4f);
				_baseModifiers.Crystal = UnityEngine.Random.Range (.25f, .4f);
				_baseModifiers.Organic = UnityEngine.Random.Range (1.4f, 1.6f);

				_initialRates = new GainRate (2f, 0f, 1f, 5f);
				break;
			}
			case PlanetType.Terran:
			{
				_baseModifiers.Fuel = UnityEngine.Random.Range (.8f, 1.1f);
				_baseModifiers.Metal = UnityEngine.Random.Range (.8f, 1.1f);
				_baseModifiers.Crystal = UnityEngine.Random.Range (.8f, 1.1f);
				_baseModifiers.Organic = UnityEngine.Random.Range (.8f, 1.1f);

				_initialRates = new GainRate (4f, 4f, 4f, 4f);
				break;
			}
			case PlanetType.Volcanic:
			{
				_baseModifiers.Fuel = UnityEngine.Random.Range (1.1f, 1.2f);
				_baseModifiers.Metal = UnityEngine.Random.Range (1.25f, 1.4f);
				_baseModifiers.Crystal = UnityEngine.Random.Range (.25f, .4f);
				_baseModifiers.Organic = 0f;

				_initialRates = new GainRate (0f, 2f, 0f, 0f);
				break;
			}
			default:
			{
				_baseModifiers.Fuel = UnityEngine.Random.Range (0f, .1f);
				_baseModifiers.Metal = UnityEngine.Random.Range (0f, .1f);
				_baseModifiers.Crystal = UnityEngine.Random.Range (0f, .1f);
				_baseModifiers.Organic = UnityEngine.Random.Range (0f, .1f);

				_initialRates = new GainRate (0f, 0f, 0f, 0f);
				break;
			}
		}

		int _randomNum = -1;

		do 
		{
			_randomNum = UnityEngine.Random.Range (0, Database.PlanetNames.Length - 1);
		} 
		while (_selectedNames.Contains(_randomNum));

		Name = Database.PlanetNames[_randomNum];
		InteractRadius = ((int)Size + 1) * 2f;
		UpdateState += OnUpdateStateEvent;
		UpdateSecond += OnUpdateSecondEvent;

		CalcRates ();
	}