Changeset 1733 for 2011/23/sijoseha


Ignore:
Timestamp:
2011-06-07 13:31:04 (8 years ago)
Author:
tekrjant
Message:

Lots of changes:

  • Added camera
  • Separate map and hud areas
  • Saving happens on binary data instead of XML to save space. (And it gives more rep!.. maybe)
  • And a lot of minor stuff
Location:
2011/23/sijoseha/AdventureGame/AdventureGame
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • 2011/23/sijoseha/AdventureGame/AdventureGame/AdventureGame.cs

    r1729 r1733  
    3535 
    3636        Map gameMap; 
     37        Camera gameCamera; 
     38 
     39        Viewport mapView, hudView; 
    3740 
    3841        Button saveButton; 
     
    5255        protected override void Initialize() 
    5356        { 
    54              
    55  
    56  
     57 
     58 
     59            //graphics.IsFullScreen = true; 
     60            //graphics.ApplyChanges(); 
    5761            IsMouseVisible = true; 
    5862            base.Initialize(); 
     
    7074            selectionBox = Content.Load<Texture2D>("selectionbox"); 
    7175            tileImage = Content.Load<Texture2D>("tilet"); 
    72             gameMap = new Map(this, tileImage, TILE_SIZE, 16, 8); 
    73  
    74             saveButton = new Button(new Rectangle(400, 100, 150, 40), "Save", Color.YellowGreen, Color.Red, GraphicsDevice); 
     76 
     77            mapView = new Viewport(0, 0, graphics.PreferredBackBufferWidth - 200, graphics.PreferredBackBufferHeight); 
     78            hudView = new Viewport(graphics.PreferredBackBufferWidth - 200, 0, 200, graphics.PreferredBackBufferHeight); 
     79 
     80            gameMap = new Map(this, tileImage, TILE_SIZE, 50, 20); 
     81            gameCamera = new Camera(); 
     82            saveButton = new Button(new Rectangle(10, 10, 150, 40), "Save", Color.YellowGreen, Color.Red, GraphicsDevice); 
    7583        } 
    7684 
     
    100108            if (previousMouseState.LeftButton == ButtonState.Released && mouseState.LeftButton == ButtonState.Pressed) 
    101109            { 
    102                 Rectangle mousePos = new Rectangle(mouseState.X, mouseState.Y, 1, 1); 
    103                 foreach (Tile tile in gameMap.Tiles) 
    104                 { 
    105                     if (mousePos.Intersects(tile.Boundaries)) 
     110                if (mouseState.X < graphics.PreferredBackBufferWidth - 200) 
     111                { 
     112                    Vector2 mouseWorldPos = gameCamera.getMouseWorldPos(new Vector2(mouseState.X, mouseState.Y), mapView); 
     113                    Rectangle mousePos = new Rectangle((int)mouseWorldPos.X, (int)mouseWorldPos.Y, 1, 1); 
     114                    foreach (Tile tile in gameMap.Tiles) 
    106115                    { 
    107                         gameMap.UnSelectAll(); 
    108                         gameMap.SelectTile(tile); 
     116                        if (mousePos.Intersects(tile.Boundaries)) 
     117                        { 
     118                            gameMap.UnSelectAll(); 
     119                            gameMap.SelectTile(tile); 
     120                        } 
    109121                    } 
    110122                } 
    111                 if (mousePos.Intersects(saveButton.Boundaries)) 
    112                     SaveMap(); 
     123                else 
     124                { 
     125                    Vector2 mouseWorldPos = gameCamera.getMouseWorldPos(new Vector2(mouseState.X - hudView.X, mouseState.Y), hudView); 
     126                    Rectangle mousePos = new Rectangle((int)mouseWorldPos.X, (int)mouseWorldPos.Y, 1, 1); 
     127                    if (mousePos.Intersects(saveButton.Boundaries)) 
     128                        SaveMap(); 
     129                } 
    113130            } 
    114131 
     
    121138            if (keyState.IsKeyDown(Keys.D4) && previousKeyState.IsKeyUp(Keys.D4)) 
    122139                gameMap.ChangeTileTo(TileType.Water); 
     140 
     141            if (keyState.IsKeyDown(Keys.Left)) 
     142                gameCamera.Move(new Vector2(-5, 0)); 
     143            if (keyState.IsKeyDown(Keys.Right)) 
     144                gameCamera.Move(new Vector2(5, 0)); 
     145            if (keyState.IsKeyDown(Keys.Up)) 
     146                gameCamera.Move(new Vector2(0, -5)); 
     147            if (keyState.IsKeyDown(Keys.Down)) 
     148                gameCamera.Move(new Vector2(0, 5)); 
    123149            previousMouseState = mouseState; 
    124150            previousKeyState = keyState; 
     
    133159        { 
    134160            GraphicsDevice.Clear(Color.CornflowerBlue); 
     161            GraphicsDevice.Viewport = mapView; 
     162            spriteBatch.Begin(SpriteSortMode.Deferred, 
     163                BlendState.AlphaBlend, 
     164                null,null,null,null,gameCamera.getTransformation(mapView)); 
     165            gameMap.Draw(spriteBatch); 
     166            spriteBatch.End(); 
     167            GraphicsDevice.Viewport = hudView; 
    135168            spriteBatch.Begin(); 
    136             gameMap.Draw(spriteBatch); 
    137169            saveButton.Draw(spriteBatch); 
    138170            spriteBatch.End(); 
     
    144176        { 
    145177            //FileStream mapFile = File.Create("savedMap,xml"); 
    146  
    147             XmlWriterSettings settings = new XmlWriterSettings(); 
    148             settings.ConformanceLevel = ConformanceLevel.Document; 
    149             settings.Indent = true; 
    150             settings.Encoding = Encoding.UTF8; 
    151             using (XmlWriter xmlWriter = XmlWriter.Create("savedMap", settings)) 
     178            using (FileStream mapSave = new FileStream("savedMap", FileMode.Create, FileAccess.Write)) 
    152179            { 
    153                 xmlWriter.WriteStartDocument(); 
    154             xmlWriter.WriteStartElement("Map"); 
    155             foreach (Tile tile in gameMap.Tiles) 
     180                using (BinaryWriter w = new BinaryWriter(mapSave)) 
     181                { 
     182                    w.Write(gameMap.Tiles.Count); 
     183                    foreach (Tile tile in gameMap.Tiles) 
     184                    { 
     185                        w.Write((int)tile.TileType); 
     186                        w.Write((int)tile.Position.X); 
     187                        w.Write((int)tile.Position.Y); 
     188                    } 
     189                } 
     190            } 
     191 
     192            using (FileStream mapLoad = new FileStream("savedMap", FileMode.Open, FileAccess.Read)) 
    156193            { 
    157                 xmlWriter.WriteStartElement("Tile"); 
    158                 xmlWriter.WriteStartElement("TileType"); 
    159                 xmlWriter.WriteValue(tile.TileType.ToString()); 
    160                 xmlWriter.WriteEndElement(); 
    161                 //xmlWriter.WriteAttributeString("TileType", tile.TileType.ToString()); 
    162                 //xmlWriter.WriteAttributeString("X", tile.Position.X.ToString()); 
    163                 //xmlWriter.WriteAttributeString("Y", tile.Position.Y.ToString()); 
    164                 xmlWriter.WriteEndElement(); 
    165             } 
    166             xmlWriter.WriteEndElement(); 
    167             xmlWriter.WriteEndDocument(); 
    168             } 
    169              
     194                using (BinaryReader r = new BinaryReader(mapLoad)) 
     195                { 
     196                    using (StreamWriter random = new StreamWriter("clear.txt")) 
     197                    { 
     198                        int amount = r.ReadInt32(); 
     199                        for (int i = 0; i < amount; i++) 
     200                        { 
     201                            int tile = r.ReadInt32(); 
     202                            int x = r.ReadInt32(); 
     203                            int y = r.ReadInt32(); 
     204                            random.WriteLine(tile.ToString() + ' ' + x.ToString() + ' ' + y.ToString()); 
     205                        } 
     206                    } 
     207                } 
     208            }            
    170209        } 
    171210    } 
  • 2011/23/sijoseha/AdventureGame/AdventureGame/AdventureGame.csproj

    r1727 r1733  
    109109  <ItemGroup> 
    110110    <Compile Include="Button.cs" /> 
     111    <Compile Include="Camera.cs" /> 
    111112    <Compile Include="Map.cs" /> 
    112113    <Compile Include="Properties\AssemblyInfo.cs" /> 
  • 2011/23/sijoseha/AdventureGame/AdventureGame/Tile.cs

    r1727 r1733  
    1010    public enum TileType 
    1111    { 
    12         Grass, 
    13         Water, 
    14         Sand, 
    15         DarkGrass, 
     12        Grass = 1, 
     13        Water = 2, 
     14        Sand = 3, 
     15        DarkGrass = 4, 
    1616    } 
    1717    public class Tile 
Note: See TracChangeset for help on using the changeset viewer.