Ejemplo n.º 1
0
        public virtual void FillPlayerInventory(Inventory inventory)
        {
            foreach (ItemDefinition itemDefinition in world.itemManager.itemDefinitions)
            {
                if (itemDefinition.type != CubeWorld.World.Objects.CWDefinition.DefinitionType.ItemTile)
                {
                    Item item = new Item(world, itemDefinition, -1);

                    InventoryEntry ie = new InventoryEntry();
                    ie.position = 0;
                    ie.quantity = 1;
                    ie.cwobject = item;

                    inventory.entries.Add(ie);
                }
            }

            foreach (TileDefinition tileDefinition in world.tileManager.tileDefinitions)
            {
                if (tileDefinition.tileType != TileDefinition.EMPTY_TILE_TYPE)
                {
                    DynamicTile dynamicTile = new DynamicTile(world, tileDefinition, -1);

                    InventoryEntry ie = new InventoryEntry();
                    ie.position = 0;
                    ie.quantity = 10;
                    ie.cwobject = dynamicTile;

                    inventory.entries.Add(ie);
                }
            }
        }
Ejemplo n.º 2
0
        public override void Update(float deltaTime)
        {
            if (deltaTime > MAX_DELTA_TIME)
            {
                deltaTime = MAX_DELTA_TIME;
            }

            Vector3 vectorToPlayer   = item.position - (item.world.avatarManager.player.position + new Vector3(0, Player.HEAD_POSITION * 0.5f, 0));
            float   distanceToPlayer = vectorToPlayer.magnitude;

            if (distanceToPlayer < PLAYER_CATCH_DISTANCE)
            {
                CWObject objectToAdd = this.item;

                if (objectToAdd.definition.type == CWDefinition.DefinitionType.ItemTile)
                {
                    objectToAdd = new DynamicTile(item.world, ((ItemTileDefinition)item.definition).tileDefinition, -1);
                }

                if (item.world.avatarManager.player.inventory.Add(objectToAdd))
                {
                    item.world.itemManager.RemoveItem(item);
                }
            }
            else if (distanceToPlayer < PLAYER_ATTRACT_DISTANCE)
            {
                Vector3 dirToPlayer = vectorToPlayer.normalized;

                item.position -= dirToPlayer * MOVE_SPEED * deltaTime;
            }
        }
Ejemplo n.º 3
0
    public GameObject CreateTileGameObject(DynamicTile tile)
    {
        GameObject g = new GameObject();
        TileUnity tileUnity = (TileUnity)g.AddComponent(typeof(TileUnity));
        tileUnity.gameManagerUnity = gameManagerUnity;
        tileUnity.tile = tile;

        unityTiles.Add(tileUnity);

        return g;
    }
Ejemplo n.º 4
0
        public void Load(System.IO.BinaryReader br)
        {
            entries.Clear();

            int n = br.ReadInt32();

            for (int i = 0; i < n; i++)
            {
                string id       = br.ReadString();
                int    position = br.ReadInt32();
                int    quantity = br.ReadInt32();

                TileDefinition tileDefinition = owner.world.tileManager.GetTileDefinitionById(id);
                CWObject       cwobject       = null;

                if (tileDefinition != null)
                {
                    //It's a tile
                    DynamicTile dynamicTile = new DynamicTile(owner.world, tileDefinition, -1);

                    cwobject = dynamicTile;
                }
                else
                {
                    ItemDefinition itemDefinition = owner.world.itemManager.GetItemDefinitionById(id);

                    if (itemDefinition != null)
                    {
                        //It's an item
                        Item item;

                        if (itemDefinition.type == CubeWorld.World.Objects.CWDefinition.DefinitionType.ItemTile)
                        {
                            item = new ItemTile(owner.world, (ItemTileDefinition)itemDefinition, -1);
                        }
                        else
                        {
                            item = new Item(owner.world, itemDefinition, -1);
                        }

                        cwobject = item;
                    }
                }

                cwobject.Load(br);

                InventoryEntry ie = new InventoryEntry();
                ie.position = position;
                ie.quantity = quantity;
                ie.cwobject = cwobject;

                entries.Add(ie);
            }
        }
Ejemplo n.º 5
0
    public GameObject CreateTileGameObject(DynamicTile tile)
    {
        GameObject g         = new GameObject();
        TileUnity  tileUnity = (TileUnity)g.AddComponent(typeof(TileUnity));

        tileUnity.gameManagerUnity = gameManagerUnity;
        tileUnity.tile             = tile;

        unityTiles.Add(tileUnity);

        return(g);
    }
Ejemplo n.º 6
0
        public override void Execute(TileManager tileManager, Tile tile, TilePosition pos)
        {
            pos += delta;

            if (tileManager.IsValidTile(pos))
            {
                if (tileManager.GetTileDynamic(pos))
                {
                    DynamicTile dynamicTile = tileManager.GetDynamicTile(pos);
                    tileManager.world.fxListener.PlayEffect(effectId, dynamicTile);
                }
            }
        }
Ejemplo n.º 7
0
 private void OnTriggerEnter2D(Collider2D other)
 {
     if (other.CompareTag("DynamicTile"))
     {
         DynamicTile dynamicTile = other.GetComponent <DynamicTile>();
         if (!dynamicTile.IsBeingGrabbed && !dynamicTile.IsTouchingBroken)
         {
             dynamicTile.IsTouchingBroken = true;
             Object.Destroy(other.gameObject, updateDelay);
             StartCoroutine(DelayedSpriteUpdate(updateDelay));
         }
     }
 }
Ejemplo n.º 8
0
 private void OnTriggerStay2D(Collider2D other)
 {
     if (other.CompareTag("DynamicTile"))
     {
         DynamicTile dynamicTile = other.GetComponent <DynamicTile>();
         if (!dynamicTile.IsBeingGrabbed && !dynamicTile.IsTouchingBroken)
         {
             dynamicTile.IsTouchingBroken = true;
             Object.Destroy(other.gameObject);
             GetComponent <SpriteRenderer>().sprite = fixedSprite;
             GetComponent <Collider2D>().isTrigger  = false;
             gameObject.tag = "FixedTile";
         }
     }
 }
Ejemplo n.º 9
0
        public override void Execute(TileManager tileManager, Tile tile, TilePosition pos)
        {
            pos += delta;

            if (tileManager.IsValidTile(pos))
            {
                if (value == true)
                {
                    tileManager.SetTileDynamic(pos, value, gravity, timeout);
                }
                else if (tileManager.GetTileDynamic(pos))
                {
                    //Call DynamicTile.MakeStatic because if the tile is inside it's update cycle
                    //when this rule is executed, then the array of components would become invalid
                    DynamicTile dynamicTile = tileManager.GetDynamicTile(pos);

                    dynamicTile.MakeStatic();
                }
            }
        }
Ejemplo n.º 10
0
 protected override void OnRemovedFromObject()
 {
     tile = null;
 }
Ejemplo n.º 11
0
 protected override void OnAddedToObject(CWObject cwobject)
 {
     tile = (DynamicTile)cwobject;
 }
Ejemplo n.º 12
0
    protected override void Update()
    {
        movementVec.x = Input.GetAxis("Horizontal");

        if (jumpState == JumpState.Grounded && !IsGrabbing && Input.GetButtonDown("Jump"))
        {
            jumpState = JumpState.PrepareToJump;
        }

        if (Input.GetButtonDown("Grab"))
        {
            if (!IsGrabbing && tileToGrab != null)
            {
                IsGrabbing = true;
                DynamicTile dynamicTileFix = tileToGrab.GetComponent <DynamicTile>();
                if (dynamicTileFix != null)
                {
                    dynamicTileFix.IsBeingGrabbed = true;
                }

                tileToGrab.transform.SetParent(horn.transform);
                tileToGrab.transform.localPosition = new Vector3((spriteRenderer.flipX ? -flipGrabOffset : 0.9f) * 0.1f, -0.05f);
                tileToGrab.transform.localScale   -= new Vector3(onGrabScaleMod, onGrabScaleMod);
                var tileBody = tileToGrab.GetComponent <Rigidbody2D>();
                tileBody.bodyType = RigidbodyType2D.Kinematic;
            }
            else if (IsGrabbing && tileToGrab != null)
            {
                IsGrabbing = false;
                DynamicTile dynamicTileFix = tileToGrab.GetComponent <DynamicTile>();
                if (dynamicTileFix != null)
                {
                    dynamicTileFix.IsBeingGrabbed = false;
                }
                tileToGrab.transform.SetParent(null);
                tileToGrab.transform.localScale += new Vector3(onGrabScaleMod, onGrabScaleMod);
                var tileBody = tileToGrab.GetComponent <Rigidbody2D>();
                tileBody.bodyType = RigidbodyType2D.Dynamic;
            }
        }

        base.isGrabbing = IsGrabbing;

        switch (jumpState)
        {
        case JumpState.PrepareToJump:
            break;

        case JumpState.Jumping:
            if (!IsGrounded)
            {
                jumpState = JumpState.InFlight;
            }
            break;

        case JumpState.InFlight:
            if (IsGrounded)
            {
                jumpState = JumpState.Landed;
            }
            break;

        case JumpState.Landed:
            jumpState = JumpState.Grounded;
            break;
        }

        base.Update();
    }
Ejemplo n.º 13
0
 protected override void OnRemovedFromObject()
 {
     tile = null;
 }
Ejemplo n.º 14
0
 protected override void OnAddedToObject(CWObject cwobject)
 {
     tile = (DynamicTile) cwobject;
 }