Changeset 59


Ignore:
Timestamp:
02/21/2012 02:20:03 PM (3 years ago)
Author:
acarter
Message:

Updating Map with Key, and varying the minigames.

Location:
Code/oMaE/oMaE
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • Code/oMaE/oMaE/GameDriver.cs

    r58 r59  
    297297            World3D.Visible = true;
    298298            World3D.SetLocation(otherSide);
     299            Map.EnterRoom();
    299300            return game;
    300301        }
  • Code/oMaE/oMaE/MinigameFactory.cs

    r57 r59  
    2020    {
    2121        private List<MiniGame> minigames = new List<MiniGame>();
     22        /// <summary>
     23        /// Overriding the children to all be minigames.
     24        /// </summary>
    2225        public override IEnumerable<GameObject> Children
    2326        {
     
    4043            minigames.Add(new FractionalTraffic(1, 6, 3, 8));
    4144            minigames.Add(new FractionalTraffic(3, 4, 3, 5));
    42             minigames.Add(new FractionalTraffic(1, 6, 3, 8));
    43             minigames.Add(new FractionalTraffic(1, 6, 3, 8));
    44             minigames.Add(new FractionalTraffic(1, 6, 3, 8));
    45             minigames.Add(new FractionalTraffic(1, 6, 3, 8));
    46             minigames.Add(new FractionalTraffic(1, 6, 3, 8));
    47             minigames.Add(new FractionalTraffic(1, 6, 3, 8));
    48             minigames.Add(new FractionalTraffic(1, 6, 3, 8));
    49             minigames.Add(new FractionalTraffic(1, 6, 3, 8));
     45            minigames.Add(new FractionalTraffic(2, 3, 3, 8));
     46            minigames.Add(new FractionalTraffic(5, 6, 3, 4));
     47            minigames.Add(new FractionalTraffic(2, 5, 1, 4));
     48            minigames.Add(new FractionalTraffic(1, 7, 1, 3));
     49            minigames.Add(new FractionalTraffic(5, 7, 3, 4));
     50            minigames.Add(new FractionalTraffic(5, 7, 1, 3));
     51            minigames.Add(new FractionalTraffic(1, 6, 1, 5));
     52            minigames.Add(new FractionalTraffic(3, 5, 10, 17));
    5053            foreach (GameObject child in Children)
    5154                child.Visible = false;
  • Code/oMaE/oMaE/Overworld/Map.cs

    r58 r59  
    4040        private string[] map;
    4141        private int[][] minimap;
     42        /// <summary>
     43        /// The entrance of the warehouse.
     44        /// </summary>
    4245        public Door Entrance;
    4346        private Vector2 start = Vector2.Zero;
     
    147150                            minimap[3 * i + 2][3 * j + 3] = -1;
    148151                            break;
     152                        case '*':
     153                            minimap[3 * i + 1][3 * j + 1] = 2;
     154                            break;
     155                        case 'Y':
     156                            start = new Vector2(j, i);
     157                            break;
    149158
    150159                    }
    151160                }
    152161            }
    153             for (int i = 0; i < map.Length; ++i)
    154                 for (int j = 0; j < map[i].Length; ++j)
    155                     if (map[i][j] == 'Y')
    156                         start = new Vector2(j, i);
     162            floodFill(1 + 3 * (int)start.Y, 1 + 3 * (int)start.X);
    157163        }
    158164        private LinkedList<Door> GenerateDoors()
     
    270276            return walls;
    271277        }
     278        private void floodFill(int x, int y)
     279        {
     280            // FIXME
     281            try
     282            {
     283                if (minimap[x][y] == 0)
     284                {
     285                    minimap[x][y] = 1;
     286                    floodFill(x, y + 1);
     287                    floodFill(x + 1, y);
     288                    floodFill(x, y - 1);
     289                    floodFill(x - 1, y);
     290                }
     291            }
     292            catch (IndexOutOfRangeException)
     293            {
     294            }
     295        }
     296        private void floodFillOpen(int x, int y)
     297        {
     298            try
     299            {
     300                if (minimap[x][y] == -2)
     301                {
     302                    minimap[x][y] = -3;
     303                    floodFillOpen(x, y + 1);
     304                    floodFillOpen(x + 1, y);
     305                    floodFillOpen(x, y - 1);
     306                    floodFillOpen(x - 1, y);
     307                }
     308            }
     309            catch (IndexOutOfRangeException)
     310            {
     311            }
     312        }
    272313        /// <summary>
    273314        /// Updates on the map
     
    282323            }
    283324            base.Update();
     325        }
     326        public void EnterRoom()
     327        {
     328            Vector2 pos = 3 * ((driver.World3D.CameraPosition2D * (1 / 20.0f)) + start);
     329            floodFill(1 + (int) pos.Y, 2 + (int) pos.X);
     330            floodFill(2 + (int) pos.Y, 1 + (int) pos.X);
     331            floodFill(3 + (int) pos.Y, 2 + (int) pos.X);
     332            floodFill(2 + (int) pos.Y, 3 + (int) pos.X);
     333            floodFillOpen(1 + (int)pos.Y, 2 + (int) pos.X);
     334            floodFillOpen(2 + (int)pos.Y, 1 + (int) pos.X);
     335            floodFillOpen(3 + (int)pos.Y, 2 + (int) pos.X);
     336            floodFillOpen(2 + (int)pos.Y, 3 + (int) pos.X);
    284337        }
    285338        /// <summary>
     
    308361                            c = Color.Red;
    309362                            break;
     363                        case -3:
     364                            c = Color.Green;
     365                            break;
    310366                        case -4:
    311367                            c = Color.Maroon;
     368                            break;
     369                        case 2:
     370                            c = Color.Yellow;
     371                            break;
     372                        case 1:
     373                            c = Color.Blue;
    312374                            break;
    313375                        default:
     
    323385            screen.FillRectangle(new Rectangle((int)loc.X + 5, (int)loc.Y + 5, 10, 10), Color.White);
    324386            screen.DrawText("Click anywhere to close", new Vector2(500, 10), TextHorizontal.CENTERED, TextVertical.TOP, Color.White);
     387            // FIXME
     388            screen.FillRectangle(new Rectangle(830, 50, 150, 400), Color.MediumPurple);
     389            screen.DrawText("Key", new Vector2(905, 60), FontSize.LARGE, TextHorizontal.CENTERED, TextVertical.TOP, Color.White);
     390            screen.FillRectangle(new Rectangle(850, 120, 20, 20), Color.Black);
     391            screen.DrawText("Wall", new Vector2(900, 130), TextHorizontal.LEFT, TextVertical.CENTERED, Color.White);
     392            screen.FillRectangle(new Rectangle(850, 160, 20, 20), Color.Blue);
     393            screen.DrawText("Visited", new Vector2(900, 170), TextHorizontal.LEFT, TextVertical.CENTERED, Color.White);
     394            screen.FillRectangle(new Rectangle(850, 200, 20, 20), Color.Gray);
     395            screen.DrawText("Unvisited", new Vector2(900, 210), TextHorizontal.LEFT, TextVertical.CENTERED, Color.White);
     396            screen.FillRectangle(new Rectangle(850, 240, 20, 20), Color.Maroon);
     397            screen.DrawText("Entrance", new Vector2(900, 250), TextHorizontal.LEFT, TextVertical.CENTERED, Color.White);
     398            screen.FillRectangle(new Rectangle(850, 280, 20, 20), Color.Red);
     399            screen.DrawText("Locked", new Vector2(900, 290), TextHorizontal.LEFT, TextVertical.CENTERED, Color.White);
     400            screen.FillRectangle(new Rectangle(850, 320, 20, 20), Color.Green);
     401            screen.DrawText("Unlocked", new Vector2(900, 330), TextHorizontal.LEFT, TextVertical.CENTERED, Color.White);
     402            screen.FillRectangle(new Rectangle(850, 360, 20, 20), Color.Yellow);
     403            screen.DrawText("Part", new Vector2(900, 370), TextHorizontal.LEFT, TextVertical.CENTERED, Color.White);
     404            screen.FillRectangle(new Rectangle(850, 400, 20, 20), Color.White);
     405            screen.DrawText("You", new Vector2(900, 410), TextHorizontal.LEFT, TextVertical.CENTERED, Color.White);
    325406            base.Draw(screen);
    326407        }
  • Code/oMaE/oMaE/Overworld/Objects/Door.cs

    r58 r59  
    6464            Vector2 normal = new Vector2(right.Y, -right.X);
    6565            normal.Normalize();
    66             otherSide = left + 0.5f * right - 5.0f * normal;
     66            otherSide = left + 0.5f * right - 20.0f * normal;
    6767            wallHeight -= doorHeight;
    6868            completed = doorColor2;
  • Code/oMaE/oMaE/oMaE.csproj

    r56 r59  
    136136    <Compile Include="GameState.cs" />
    137137    <Compile Include="Overworld\Map.cs" />
     138    <Compile Include="Overworld\Objects\Crate.cs" />
    138139    <Compile Include="ScreenFactory.cs" />
    139140    <Compile Include="MinigameFactory.cs" />
Note: See TracChangeset for help on using the changeset viewer.