Example #1
0
        //Item collision testing
        public void TestGroundItem(Item_Base spr, Tile[,] tileData)
        {
            int y1 = (int)((spr.Position.Y + spr.Height) / 16);

            int x1 = (int)(spr.Position.X) / 16;
            int x2 = (int)(spr.Position.X + 16) / 16;

            if (tileData[x1, y1].isSolid == true)
            {
                spr.airState = Phys_Const.AirState.GROUND;
            }
            else if (tileData[x2, y1].isSolid == true)
            {
                spr.airState = Phys_Const.AirState.GROUND;
            }
            else
                spr.airState = Phys_Const.AirState.AIR;

            if (spr.airState == Phys_Const.AirState.GROUND)
            {
                spr.Position.Y = (y1 * 16) - spr.Source.Height;
                spr.vVelocity.Y = 0;
            }
            else
                spr.airState = Phys_Const.AirState.AIR;
        }
Example #2
0
        public void AddItem(Item_Base item)
        {
            item.isVisible = false;
            item.parentBlock = this;
            item.Position = GetWorldPosition();

            itemContents.Add(item);
        }
Example #3
0
        public void TestCeilingItem(Item_Base spr, Tile[,] tileData)
        {
            if (spr.vVelocity.Y < 0)
            {
                int y1 = (int)((spr.Position.Y) / 16);

                int x1 = (int)(spr.Position.X) / 16;
                int x2 = (int)(spr.Position.X + 14) / 16;

                if (tileData[x1, y1].isSolid == true)
                {
                    spr.vVelocity.Y = 0;
                    spr.Position.Y = (y1 * 16) + 16;
                }
                else if (tileData[x2, y1].isSolid == true)
                {
                    spr.vVelocity.Y = 0;
                    spr.Position.Y = (y1 * 16) + 16;
                }
            }
        }
Example #4
0
 public void RemoveItem(Item_Base item)
 {
     item.Remove = true;
     itemContents.Remove(item);
 }
Example #5
0
        public void WallTestItem(Item_Base spr, Tile[,] tileData)
        {
            int y1 = (int)((spr.Position.Y + (spr.Source.Height - 16)) / 16);
            //int y2 = (int)(((spr.Position.Y + 16)) / 16);

            int x1 = (int)(spr.Position.X - 2) / 16;
            int x2 = (int)(spr.Position.X + 16) / 16;

            if (spr.isMovingLeft == false)
            {
                if (tileData[x2, y1].isSolid == true)
                {
                    spr.Position.X = (x2 * 16) - 16;
                    spr.HandleCollision(Phys_Const.CollisionDir.RIGHT, "wall");
                }
            }
            else
            {
                if (tileData[x1, y1].isSolid == true)
                {
                    spr.Position.X = (x1 * 16) + 16;
                    spr.HandleCollision(Phys_Const.CollisionDir.LEFT, "wall");
                }
            }
        }