Example #1
0
        private Tile tileEntityFactory(EntityTypesEnum type)
        {
            Tile newTileEntity = null;

            switch (type)
            {
            case EntityTypesEnum.Tile:
                newTileEntity = new Tile();
                break;

            case EntityTypesEnum.SteelWall:
                new SteelWall(out newTileEntity);
                break;

            case EntityTypesEnum.Exit:
                new Exit(out newTileEntity);
                break;

            case EntityTypesEnum.Wall:
                new Wall(out newTileEntity);
                break;

            case EntityTypesEnum.Mud:
                new Mud(out newTileEntity);
                break;

            case EntityTypesEnum.Boulder:
                new Boulder(out newTileEntity);
                break;

            case EntityTypesEnum.Diamond:
                new Diamond(out newTileEntity);
                break;

            case EntityTypesEnum.Rockford:
                Rockford rf = new Rockford(out newTileEntity);
                rockfordPos = rf;
                break;

            case EntityTypesEnum.Firefly:
                new FireFly(out newTileEntity);
                break;
            }

            if (newTileEntity == null)
            {
                throw new Exception();
            }
            else
            {
                return(newTileEntity);
            }
        }
Example #2
0
        public void switchLevels(Level newLevel, Level oldLevel)
        {
            oldLevel.stopTimer();
            Rockford currentRockford = oldLevel.rockfordPos;
            Rockford oldRockford     = newLevel.rockfordPos;

            Tile oldTile = Player.tile;

            oldRockford.tile.Entity = Player;
            Player.tile             = oldRockford.tile;

            oldRockford.tile = oldTile;
            oldTile.Entity   = oldRockford;

            newLevel.rockfordPos = currentRockford;
            oldLevel.rockfordPos = oldRockford;
            newLevel.startTimer();
        }
Example #3
0
 internal bool moveOrKill(Tile tile)
 {
     if (tile.getEntityType() == EntityTypesEnum.Tile)
     {
         moveTo(tile);
         return(true);
     }
     else if (tile.getEntityType() == EntityTypesEnum.Rockford)
     {
         Rockford rf = tile.Entity as Rockford;
         rf.kill();
         return(true);
     }
     else if (tile.getEntityType() == EntityTypesEnum.Firefly)
     {
         moveTo(tile);
         return(true);
     }
     else
     {
         return(false);
     }
 }
Example #4
0
        internal override void react(int updateFrame)
        {
            if (lastFrameUpdated == updateFrame)
            {
                return;
            }
            else
            {
                lastFrameUpdated = updateFrame;
            }

            if (lastInterval == interval)
            {
                if (status == EntityStatesEnum.Idle)
                {
                    if (tile.Down != null && tile.Down.getEntityType() == EntityTypesEnum.Tile)
                    {
                        moveTo(tile.Down);
                        status       = EntityStatesEnum.Falling;
                        lastInterval = 0;
                    }
                    else if (
                        tile.Down != null && tile.Left != null && tile.Down.Left != null &&
                        tile.Down.getEntityType() == EntityTypesEnum.Boulder &&
                        tile.Left.getEntityType() == EntityTypesEnum.Tile &&
                        tile.Down.Left.getEntityType() == EntityTypesEnum.Tile ||
                        tile.Down != null && tile.Left != null && tile.Down.Left != null &&
                        tile.Down.getEntityType() == EntityTypesEnum.Diamond &&
                        tile.Left.getEntityType() == EntityTypesEnum.Tile &&
                        tile.Down.Left.getEntityType() == EntityTypesEnum.Tile)
                    {
                        moveTo(tile.Down.Left);
                        status       = EntityStatesEnum.Falling;
                        lastInterval = 0;
                    }
                    else if (
                        tile.Down != null && tile.Right != null && tile.Down.Right != null &&
                        tile.Down.getEntityType() == EntityTypesEnum.Boulder &&
                        tile.Right.getEntityType() == EntityTypesEnum.Tile &&
                        tile.Down.Right.getEntityType() == EntityTypesEnum.Tile ||
                        tile.Down != null && tile.Right != null && tile.Down.Right != null &&
                        tile.Down.getEntityType() == EntityTypesEnum.Diamond &&
                        tile.Right.getEntityType() == EntityTypesEnum.Tile &&
                        tile.Down.Right.getEntityType() == EntityTypesEnum.Tile
                        )
                    {
                        moveTo(tile.Down.Right);
                        status       = EntityStatesEnum.Falling;
                        lastInterval = 0;
                    }
                }
                else if (status == EntityStatesEnum.Falling)
                {
                    if (tile.Down != null && tile.Down.getEntityType() == EntityTypesEnum.Tile)
                    {
                        moveTo(tile.Down);
                        status       = EntityStatesEnum.Falling;
                        lastInterval = 0;
                    }
                    else if (tile.Down != null && tile.Down.getEntityType() == EntityTypesEnum.Rockford)
                    {
                        Rockford rf = tile.Down.Entity as Rockford;
                        rf.kill();
                    }
                    else if (
                        tile.Down != null && tile.Left != null && tile.Down.Left != null &&
                        tile.Down.getEntityType() == EntityTypesEnum.Boulder &&
                        tile.Left.getEntityType() == EntityTypesEnum.Tile &&
                        tile.Down.Left.getEntityType() == EntityTypesEnum.Tile ||
                        tile.Down != null && tile.Left != null && tile.Down.Left != null &&
                        tile.Down.getEntityType() == EntityTypesEnum.Diamond &&
                        tile.Left.getEntityType() == EntityTypesEnum.Tile &&
                        tile.Down.Left.getEntityType() == EntityTypesEnum.Tile)
                    {
                        moveTo(tile.Down.Left);
                        status       = EntityStatesEnum.Falling;
                        lastInterval = 0;
                    }
                    else if (
                        tile.Down != null && tile.Left != null && tile.Down.Left != null &&
                        tile.Down.getEntityType() == EntityTypesEnum.Boulder &&
                        tile.Left.getEntityType() == EntityTypesEnum.Tile &&
                        tile.Down.Left.getEntityType() == EntityTypesEnum.Rockford ||
                        tile.Down != null && tile.Left != null && tile.Down.Left != null &&
                        tile.Down.getEntityType() == EntityTypesEnum.Diamond &&
                        tile.Left.getEntityType() == EntityTypesEnum.Tile &&
                        tile.Down.Left.getEntityType() == EntityTypesEnum.Rockford)
                    {
                        Rockford rf = tile.Down.Entity as Rockford;
                        rf.kill();
                    }
                    else if (
                        tile.Down != null && tile.Right != null && tile.Down.Right != null &&
                        tile.Down.getEntityType() == EntityTypesEnum.Boulder &&
                        tile.Right.getEntityType() == EntityTypesEnum.Tile &&
                        tile.Down.Right.getEntityType() == EntityTypesEnum.Tile ||
                        tile.Down != null && tile.Right != null && tile.Down.Right != null &&
                        tile.Down.getEntityType() == EntityTypesEnum.Diamond &&
                        tile.Right.getEntityType() == EntityTypesEnum.Tile &&
                        tile.Down.Right.getEntityType() == EntityTypesEnum.Tile
                        )
                    {
                        moveTo(tile.Down.Right);
                        status       = EntityStatesEnum.Falling;
                        lastInterval = 0;
                    }
                    else if (
                        tile.Down != null && tile.Right != null && tile.Down.Right != null &&
                        tile.Down.getEntityType() == EntityTypesEnum.Boulder &&
                        tile.Right.getEntityType() == EntityTypesEnum.Tile &&
                        tile.Down.Right.getEntityType() == EntityTypesEnum.Rockford ||
                        tile.Down != null && tile.Right != null && tile.Down.Right != null &&
                        tile.Down.getEntityType() == EntityTypesEnum.Diamond &&
                        tile.Right.getEntityType() == EntityTypesEnum.Tile &&
                        tile.Down.Right.getEntityType() == EntityTypesEnum.Rockford
                        )
                    {
                        Rockford rf = tile.Down.Entity as Rockford;
                        rf.kill();
                    }
                    else
                    {
                        status = EntityStatesEnum.Idle;
                    }
                }
            }
            else
            {
                lastInterval++;
            }
        }
Example #5
0
        public Level createLevel(string levelPath)
        {
            newLine            = false;
            columnIterator     = 0;
            rowIterator        = 0;
            firstTile          = null;
            lastCreatedTile    = null;
            firstOfLastRowTile = null;
            rockfordPos        = null;

            foreach (var line in System.IO.File.ReadAllLines("levels\\" + levelPath))
            {
                foreach (char c in line)
                {
                    switch (c)
                    {
                    case 'S':
                        connectTile(tileEntityFactory(EntityTypesEnum.SteelWall));
                        break;

                    case 'B':
                        connectTile(tileEntityFactory(EntityTypesEnum.Boulder));
                        break;

                    case 'D':
                        connectTile(tileEntityFactory(EntityTypesEnum.Diamond));
                        break;

                    case 'F':
                        connectTile(tileEntityFactory(EntityTypesEnum.Firefly));
                        break;

                    case 'M':
                        connectTile(tileEntityFactory(EntityTypesEnum.Mud));
                        break;

                    case 'R':
                        connectTile(tileEntityFactory(EntityTypesEnum.Rockford));
                        break;

                    case 'W':
                        connectTile(tileEntityFactory(EntityTypesEnum.Wall));
                        break;

                    case ' ':
                        connectTile(tileEntityFactory(EntityTypesEnum.Tile));
                        break;

                    case 'E':
                        connectTile(tileEntityFactory(EntityTypesEnum.Exit));
                        break;

                    default:
                        break;
                    }
                }
                newLine = true;
            }
            Level returnLevel = new Level();

            returnLevel.Tile        = firstTile;
            returnLevel.rockfordPos = rockfordPos;
            return(returnLevel);
        }