Changeset 59

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

Updating Map with Key, and varying the minigames.

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

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" />