X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fmain.cpp;h=d92e2940cc1dcb8b7b97fb477a5c17fccb044339;hb=0fc36d261ef8129debbd4aa15594bc46cb82eb27;hp=8fa1318f6e6d55dfd7554e066c893365da9430a3;hpb=1d6a9f01b8db0f5212b6a02603dd0670c6da38c7;p=l2e.git diff --git a/src/main.cpp b/src/main.cpp index 8fa1318..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,7 @@ 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); @@ -310,23 +313,56 @@ int main(int argc, char **argv) { 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); @@ -346,6 +382,9 @@ 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;