X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fmain.cpp;h=d92e2940cc1dcb8b7b97fb477a5c17fccb044339;hb=0fc36d261ef8129debbd4aa15594bc46cb82eb27;hp=f6a069c2331eb73a695de2a7f1a3a87c858b4243;hpb=350233c2834eb36e66220aba490f1876bd6b19bf;p=l2e.git diff --git a/src/main.cpp b/src/main.cpp index f6a069c..d92e294 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -36,6 +36,7 @@ #include "map/Map.h" #include "map/MapState.h" #include "map/Tile.h" +#include "map/Trigger.h" #include "sdl/InitImage.h" #include "sdl/InitScreen.h" #include "sdl/InitSDL.h" @@ -79,6 +80,7 @@ using map::Entity; using map::Map; using map::MapState; using map::Tile; +using map::Trigger; using sdl::InitImage; using sdl::InitScreen; using sdl::InitSDL; @@ -94,6 +96,9 @@ int main(int argc, char **argv) { const int width = 800; const int height = 480; + const int tileSize = 32; + const float walkSpeed = 128.0f; + const bool battle(false); // std::srand(std::time(0)); @@ -237,94 +242,127 @@ int main(int argc, char **argv) { Tile tiles[64]; tiles[ 0].SetOffset(Vector(2, 1)); - tiles[ 1].SetOffset(Vector(4, 0)); - tiles[ 2].SetOffset(Vector(3, 0)); - tiles[ 3].SetOffset(Vector(3, 0)); + tiles[ 1].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_NORTH | Tile::BLOCK_WEST); + tiles[ 2].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH); + tiles[ 3].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH | Tile::BLOCK_EAST); tiles[ 4].SetOffset(Vector(0, 1)); tiles[ 5].SetOffset(Vector(2, 0)); tiles[ 6].SetOffset(Vector(2, 0)); tiles[ 7].SetOffset(Vector(2, 0)); tiles[ 8].SetOffset(Vector(2, 1)); - tiles[ 9].SetOffset(Vector(4, 0)); + tiles[ 9].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_WEST); tiles[10].SetOffset(Vector(3, 0)); - tiles[11].SetOffset(Vector(3, 0)); + tiles[11].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_EAST); tiles[12].SetOffset(Vector(0, 2)); tiles[13].SetOffset(Vector(1, 2)); tiles[14].SetOffset(Vector(1, 2)); tiles[15].SetOffset(Vector(1, 2)); tiles[16].SetOffset(Vector(2, 1)); - tiles[17].SetOffset(Vector(4, 0)); + tiles[17].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_WEST); tiles[18].SetOffset(Vector(3, 0)); - tiles[19].SetOffset(Vector(3, 0)); + tiles[19].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_EAST); tiles[20].SetOffset(Vector(0, 3)); tiles[21].SetOffset(Vector(1, 3)); tiles[22].SetOffset(Vector(1, 3)); tiles[23].SetOffset(Vector(2, 3)); tiles[24].SetOffset(Vector(2, 1)); - tiles[25].SetOffset(Vector(4, 0)); + tiles[25].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_WEST); tiles[26].SetOffset(Vector(3, 0)); - tiles[27].SetOffset(Vector(3, 0)); + tiles[27].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_EAST); tiles[28].SetOffset(Vector(0, 4)); tiles[29].SetOffset(Vector(1, 4)); tiles[30].SetOffset(Vector(1, 4)); tiles[31].SetOffset(Vector(2, 4)); tiles[32].SetOffset(Vector(2, 1)); - tiles[33].SetOffset(Vector(4, 0)); + tiles[33].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_WEST); tiles[34].SetOffset(Vector(3, 0)); tiles[35].SetOffset(Vector(3, 0)); - tiles[36].SetOffset(Vector(3, 0)); - tiles[37].SetOffset(Vector(3, 0)); - tiles[38].SetOffset(Vector(3, 0)); - tiles[39].SetOffset(Vector(3, 0)); + tiles[36].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH); + tiles[37].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH); + tiles[38].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH); + tiles[39].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH | Tile::BLOCK_EAST); tiles[40].SetOffset(Vector(2, 1)); - tiles[41].SetOffset(Vector(4, 0)); + tiles[41].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_WEST); tiles[42].SetOffset(Vector(3, 0)); tiles[43].SetOffset(Vector(3, 0)); - tiles[44].SetOffset(Vector(3, 0)); - tiles[45].SetOffset(Vector(4, 0)); - tiles[46].SetOffset(Vector(4, 0)); - tiles[47].SetOffset(Vector(4, 0)); + tiles[44].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_SOUTH); + tiles[45].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_SOUTH); + tiles[46].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_SOUTH); + tiles[47].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_SOUTH | Tile::BLOCK_EAST); tiles[48].SetOffset(Vector(2, 1)); - tiles[49].SetOffset(Vector(4, 0)); + tiles[49].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_WEST); tiles[50].SetOffset(Vector(3, 0)); - tiles[51].SetOffset(Vector(3, 0)); + tiles[51].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_EAST); tiles[52].SetOffset(Vector(0, 0)); tiles[53].SetOffset(Vector(1, 0)); tiles[54].SetOffset(Vector(1, 0)); tiles[55].SetOffset(Vector(1, 0)); tiles[56].SetOffset(Vector(2, 1)); - tiles[57].SetOffset(Vector(4, 0)); - tiles[58].SetOffset(Vector(3, 0)); - tiles[59].SetOffset(Vector(3, 0)); + tiles[57].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_SOUTH | Tile::BLOCK_WEST); + tiles[58].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_SOUTH); + tiles[59].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_SOUTH | Tile::BLOCK_EAST); tiles[60].SetOffset(Vector(0, 1)); tiles[61].SetOffset(Vector(1, 1)); tiles[62].SetOffset(Vector(1, 1)); tiles[63].SetOffset(Vector(1, 1)); - Area area; - area.SetTiles(tiles, 64); - area.SetWidth(8); + Area areas[1]; + areas[0].SetTiles(tiles, 64); + areas[0].SetWidth(8); + + Trigger triggers[1]; + triggers[0].SetTilePosition(Vector(2, 0)); SDL_Surface *tilesetImg(IMG_Load("test-data/tileset.png")); - Sprite tileset(tilesetImg, 32, 32); + Sprite tileset(tilesetImg, tileSize, tileSize); Map map; - map.SetAreas(&area, 1); + map.SetAreas(areas, 1); map.SetTileset(&tileset); + map.SetTriggers(triggers, 1); map.SetWidth(1); SDL_Surface *mapMaximImg(IMG_Load("test-data/maxim-map.png")); Sprite mapMaximSprite(mapMaximImg, 32, 64); + SimpleAnimation mapMaximAnimation(&mapMaximSprite, (tileSize/walkSpeed) / 2 * 1000, 2, 0, 0, true); Entity mapMaxim; - mapMaxim.SetSprite(&mapMaximSprite); - mapMaxim.Position() = Vector(80, 160); + mapMaxim.SetAnimation(&mapMaximAnimation); + mapMaxim.Position() = Vector(64, 128); + mapMaxim.SpriteOffset() = Vector(0, -32); + + SDL_Surface *mapSelanImg(IMG_Load("test-data/selan-map.png")); + Sprite mapSelanSprite(mapSelanImg, 32, 64); + SimpleAnimation mapSelanAnimation(&mapSelanSprite, (tileSize/walkSpeed) / 2 * 1000, 2, 0, 0, true); + Entity mapSelan; + mapSelan.SetAnimation(&mapSelanAnimation); + mapSelan.Position() = Vector(64, 128); + mapSelan.SpriteOffset() = Vector(0, -32); + mapMaxim.AddFollower(&mapSelan); + + SDL_Surface *mapGuyImg(IMG_Load("test-data/guy-map.png")); + Sprite mapGuySprite(mapGuyImg, 32, 64); + SimpleAnimation mapGuyAnimation(&mapGuySprite, (tileSize/walkSpeed) / 2 * 1000, 2, 0, 0, true); + Entity mapGuy; + mapGuy.SetAnimation(&mapGuyAnimation); + mapGuy.Position() = Vector(64, 128); + mapGuy.SpriteOffset() = Vector(0, -32); + mapSelan.AddFollower(&mapGuy); + + SDL_Surface *mapDekarImg(IMG_Load("test-data/dekar-map.png")); + Sprite mapDekarSprite(mapDekarImg, 32, 64); + SimpleAnimation mapDekarAnimation(&mapDekarSprite, (tileSize/walkSpeed) / 2 * 1000, 2, 0, 0, true); + Entity mapDekar; + mapDekar.SetAnimation(&mapDekarAnimation); + mapDekar.Position() = Vector(64, 128); + mapDekar.SpriteOffset() = Vector(0, -32); + mapGuy.AddFollower(&mapDekar); InitScreen screen(width, height); @@ -344,7 +382,11 @@ int main(int argc, char **argv) { } else { MapState *mapState(new MapState(&map)); mapState->AddEntity(&mapMaxim); + mapState->AddEntity(&mapSelan); + mapState->AddEntity(&mapGuy); + mapState->AddEntity(&mapDekar); mapState->ControlEntity(&mapMaxim); + mapState->SetWalkingSpeed(walkSpeed); state = mapState; }