X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fmain.cpp;h=a8a722552e2d8126cd6c22e40f88a92720dbcc9f;hb=2ad47aa3758fe5d04ba1764f275a0fe30706d200;hp=8029a64c42d9ecb570c776990c562b1b56724203;hpb=0ad5ca97b5df217329bc319d62564a9f46ba11d7;p=l2e.git diff --git a/src/main.cpp b/src/main.cpp index 8029a64..a8a7225 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -19,6 +19,7 @@ #include "common/Ikari.h" #include "common/Inventory.h" #include "common/Item.h" +#include "common/Script.h" #include "common/Spell.h" #include "common/Stats.h" #include "geometry/Vector.h" @@ -65,6 +66,7 @@ using common::Hero; using common::Ikari; using common::Inventory; using common::Item; +using common::Script; using common::Spell; using common::Stats; using geometry::Vector; @@ -417,6 +419,7 @@ int main(int argc, char **argv) { Trigger triggers1[1]; triggers1[0].SetTilePosition(Vector(8, 3)); + triggers1[0].SetType(Trigger::TYPE_NORTH); SDL_Surface *tilesetImg(IMG_Load("test-data/tileset.png")); Sprite tileset(tilesetImg, tileSize, tileSize); @@ -508,6 +511,7 @@ int main(int argc, char **argv) { Trigger triggers2[1]; triggers2[0].SetTilePosition(Vector(6, 2)); + triggers2[0].SetType(Trigger::TYPE_SOUTH); Map map2; map2.SetAreas(areas2, 1); @@ -516,11 +520,43 @@ int main(int argc, char **argv) { map2.SetWidth(1); map2.SetBattleBackground(bg); - triggers1[0].map = &map2; - triggers1[0].target = Vector(6, 2); - - triggers2[0].map = &map1; - triggers2[0].target = Vector(8, 3); + unsigned char transition1text[4 + sizeof(int) + sizeof(Map *) + sizeof(Vector)]; + int i(0); + transition1text[i++] = Script::CODE_MOVE_I0; + *reinterpret_cast(transition1text + i) = 1; + i += sizeof(int); + transition1text[i++] = Script::CODE_MOVE_A0; + *reinterpret_cast(transition1text + i) = &map2; + i += sizeof(Map *); + transition1text[i++] = Script::CODE_MOVE_V0; + *reinterpret_cast *>(transition1text + i) = Vector(6, 2); + i += sizeof(Vector); + transition1text[i++] = Script::CODE_SYSCALL; + + Script transition1; + transition1.text = transition1text; + transition1.textlen = sizeof(transition1text); + + triggers1[0].SetScript(&transition1); + + unsigned char transition2text[4 + sizeof(int) + sizeof(Map *) + sizeof(Vector)]; + i = 0; + transition2text[i++] = Script::CODE_MOVE_I0; + *reinterpret_cast(transition2text + i) = 1; + i += sizeof(int); + transition2text[i++] = Script::CODE_MOVE_A0; + *reinterpret_cast(transition2text + i) = &map1; + i += sizeof(Map *); + transition2text[i++] = Script::CODE_MOVE_V0; + *reinterpret_cast *>(transition2text + i) = Vector(8, 3); + i += sizeof(Vector); + transition2text[i++] = Script::CODE_SYSCALL; + + Script transition2; + transition2.text = transition2text; + transition2.textlen = sizeof(transition2text); + + triggers2[0].SetScript(&transition2); gameState.heroes[0].MapEntity().Position() = Vector(64, 128); @@ -536,16 +572,22 @@ int main(int argc, char **argv) { gameState.heroes[3].MapEntity().SetFlags(Entity::FLAG_NONBLOCKING); gameState.heroes[2].MapEntity().AddFollower(&gameState.heroes[3].MapEntity()); + Entity mapPopulation[2]; + map1.SetEntities(mapPopulation, 2); + SDL_Surface *mapMonsterImg(IMG_Load("test-data/monster-map.png")); Sprite mapMonsterSprite(mapMonsterImg, 32, 32); SimpleAnimation mapMonsterAnimation(&mapMonsterSprite, 500, 2, 0, 0, true); - Entity mapMonster; - mapMonster.SetAnimation(&mapMonsterAnimation); - mapMonster.Position() = Vector(64, 32); - mapMonster.SetOrientation(Entity::ORIENTATION_SOUTH); - mapMonster.SetPartyLayout(&monstersLayout); - mapMonster.SetMonsters(&monster, 1); - map1.SetEntities(&mapMonster, 1); + mapPopulation[0].SetAnimation(&mapMonsterAnimation); + mapPopulation[0].Position() = Vector(64, 32); + mapPopulation[0].SetOrientation(Entity::ORIENTATION_SOUTH); + mapPopulation[0].SetPartyLayout(&monstersLayout); + mapPopulation[0].SetMonsters(&monster, 1); + + Sprite blockSprite(tilesetImg, tileSize, tileSize, 3 * tileSize, 1 * tileSize); + mapPopulation[1].SetSprite(&blockSprite); + mapPopulation[1].Position() = Vector(64, 160); + mapPopulation[1].SetFlags(Entity::FLAG_PUSHABLE | Entity::FLAG_FIXED_ORIENTATION); InitScreen screen(width, height); @@ -567,7 +609,7 @@ int main(int argc, char **argv) { mapState->ControlEntity(&gameState.heroes[0].MapEntity()); mapState->SetWalkingSpeed(walkSpeed); - mapMonster.StartAnimation(*mapState); + mapPopulation[0].StartAnimation(*mapState); state = mapState; }