Exemplo n.º 1
0
	public static ABLevel LoadXmlLevel(string xmlString) {

		ABLevel level = new ABLevel();
		level.gameObjects = new List<ABGameObject>();

		using (XmlReader reader = XmlReader.Create(new StringReader(xmlString)))
		{
			reader.ReadToFollowing("BirdsAmount");
			level.birdsAmount = Convert.ToInt32(reader.ReadElementContentAsString());

			reader.ReadToFollowing("GameObjects");

			while (reader.ReadToFollowing("GameObject"))
			{
				ABGameObject abObj = new ABGameObject();

				reader.MoveToAttribute("label");
				abObj.Label = Convert.ToInt32(reader.Value);

				Vector2 position = new Vector2();

				reader.MoveToAttribute("x");
				position.x = (float)Convert.ToDouble(reader.Value);

				reader.MoveToAttribute("y");
				position.y = (float)Convert.ToDouble(reader.Value);

				abObj.Position = position;

				level.gameObjects.Add(abObj);
			}
		}

		return level;
	}
Exemplo n.º 2
0
    public bool Equals(ABGameObject otherGen)
   	{
        if (ReferenceEquals(null, otherGen)) return false;
        if (ReferenceEquals(this, otherGen)) return true;

		return (Label == otherGen.Label && Position == otherGen.Position);
   }
Exemplo n.º 3
0
	public static ABLevel GameObjectsToABLevel(GameObject []gameObjs)
	{
		ABLevel level = new ABLevel();

		for(int i = 0; i < gameObjs.Length; i++)
		{
			if(gameObjs[i].tag == "Bird")
			{
				level.birdsAmount++;
			}
			else
			{
				ABGameObject abGameObj = new ABGameObject();
				abGameObj.Position = gameObjs[i].transform.position;
				abGameObj.Label = GameWorld.Instance.GetTemplateIndex(gameObjs[i]);
				level.gameObjects.Add(abGameObj);
			}
		}

		return level;
	}
Exemplo n.º 4
0
    public static void Explode(Vector2 position, float explosionArea, float explosionPower, float explosionDamage, GameObject explosive)
    {
        Collider2D[] colliders = Physics2D.OverlapCircleAll(position, explosionArea);

        foreach (Collider2D coll in colliders)
        {
            if (coll.attachedRigidbody && coll.gameObject != explosive && coll.GetComponent <ABBird>() == null)
            {
                float   distance  = Vector2.Distance((Vector2)coll.transform.position, position);
                Vector2 direction = ((Vector2)coll.transform.position - position).normalized;

                ABGameObject abGameObj = coll.gameObject.GetComponent <ABGameObject> ();
                if (abGameObj)
                {
                    coll.gameObject.GetComponent <ABGameObject> ().DealDamage(explosionDamage / distance);
                }

                coll.attachedRigidbody.AddForce(direction * (explosionPower / (distance * 2f)), ForceMode2D.Impulse);
            }
        }
    }
Exemplo n.º 5
0
    protected void ConvertShiftGBtoABGB(ref ShiftABLevel randomLevel)
    {
        float offsetX, offsetY;
        float slingPos = GameWorld.Instance._slingshotTransform.position.x;
        offsetX = slingPos + randomLevel.LevelPlayableWidth/2f - randomLevel.GetLevelBounds().size.x/2.25f;

        for(int i = 0; i < randomLevel.GetStacksAmount(); i++)
        {
            if(i > 0)
            {
                if(randomLevel.GetStack(i - 1).Count > 0)
                {
                    ShiftABGameObject wid = randomLevel.GetWidestObjInStack(i - 1);
                    offsetX = wid.Position.x + wid.GetBounds().size.x/2f;
                }
                else
                    offsetX += randomLevel.WidthOfEmptyStack/2f;
            }

            if(randomLevel.GetStack(i).Count > 0)
            {
                offsetX += randomLevel.GetWidestObjInStack(i).GetBounds().size.x/2f;

                for (LinkedListNode<ShiftABGameObject> obj = randomLevel.GetStack(i).First; obj != randomLevel.GetStack(i).Last.Next; obj = obj.Next)
                {
                    // Define object position
                    if(obj.Previous != null)

                        offsetY = obj.Previous.Value.Position.y +
                            obj.Previous.Value.GetBounds().size.y/2f - obj.Value.UnderObjectsHeight;
                    else
                        offsetY = GameWorld.Instance._groundTransform.GetComponent<Collider2D>().bounds.center.y +
                            GameWorld.Instance._groundTransform.GetComponent<Collider2D>().bounds.size.y/2f;

                    offsetY += obj.Value.GetBounds().size.y/2f;
                    obj.Value.Position = new Vector2(offsetX, offsetY);

                    if(!obj.Value.IsDouble)
                    {
                        ABGameObject baseGameObject = new ABGameObject();

                        baseGameObject.Label =  obj.Value.Label;
                        baseGameObject.Position =  obj.Value.Position;

                        randomLevel.gameObjects.Add(baseGameObject);
                    }
                    else
                    {
                        ABGameObject baseGameObjectA = new ABGameObject();

                        baseGameObjectA.Label =  obj.Value.Label;

                        Vector2 leftObjPos = obj.Value.Position;
                        leftObjPos.x -=  obj.Value.GetBounds().size.x/4f;
                        baseGameObjectA.Position = leftObjPos;

                        randomLevel.gameObjects.Add(baseGameObjectA);

                        ABGameObject baseGameObjectB = new ABGameObject();

                        baseGameObjectB.Label =  obj.Value.Label;
                        Vector2 rightObjPos =  obj.Value.Position;
                        rightObjPos.x +=   obj.Value.GetBounds().size.x/4f;
                        baseGameObjectB.Position = rightObjPos;

                        randomLevel.gameObjects.Add(baseGameObjectB);
                    }
                }
            }
            else
                offsetX += randomLevel.WidthOfEmptyStack/2f;
        }
    }