X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fmain.cpp;h=951eccc4c311220612748565e88b52f63d079692;hb=a1c89e41e38eca790e168b8acd3beee974685fcd;hp=0a6882a5c4187897f46697d5b34e2337c6d2e744;hpb=6786f73930b6a0406ddefa792763157ac41298ee;p=l2e.git diff --git a/src/main.cpp b/src/main.cpp index 0a6882a..951eccc 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -32,9 +32,11 @@ #include "loader/Parser.h" #include "loader/TypeDescription.h" #include "map/Area.h" +#include "map/Entity.h" #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" @@ -74,9 +76,11 @@ using loader::ParsedSource; using loader::Parser; using loader::TypeDescription; using map::Area; +using map::Entity; using map::Map; using map::MapState; using map::Tile; +using map::Trigger; using sdl::InitImage; using sdl::InitScreen; using sdl::InitSDL; @@ -92,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)); @@ -235,89 +242,124 @@ 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.SetAnimation(&mapMaximAnimation); + mapMaxim.Position() = Vector(80, 128); + + 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(80, 128); + 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(80, 128); + 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(80, 128); + mapGuy.AddFollower(&mapDekar); + InitScreen screen(width, height); app::State *state(0); @@ -335,6 +377,12 @@ int main(int argc, char **argv) { state = battleState; } 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; }