]> git.localhorst.tv Git - l2e.git/blobdiff - src/main.cpp
third column menu hack for cursor
[l2e.git] / src / main.cpp
index f70103a0dd411da6755c9cd85240f320855a5ee8..b47a473d50d3f395d92eaad5507127982a774092 100644 (file)
@@ -30,6 +30,7 @@
 #include "graphics/Menu.h"
 #include "graphics/SimpleAnimation.h"
 #include "graphics/Sprite.h"
+#include "graphics/Texture.h"
 #include "loader/Caster.h"
 #include "loader/Interpreter.h"
 #include "loader/ParsedSource.h"
@@ -41,6 +42,7 @@
 #include "map/MapState.h"
 #include "map/Tile.h"
 #include "map/Trigger.h"
+#include "menu/Resources.h"
 #include "sdl/InitImage.h"
 #include "sdl/InitScreen.h"
 #include "sdl/InitSDL.h"
@@ -64,6 +66,7 @@ using common::GameConfig;
 using common::GameState;
 using common::Spell;
 using geometry::Vector;
+using graphics::Texture;
 using loader::Caster;
 using loader::Interpreter;
 using loader::ParsedSource;
@@ -83,8 +86,8 @@ using std::string;
 using std::vector;
 
 int main(int argc, char **argv) {
-       const int width = 800;
-       const int height = 480;
+       const int width = 512;
+       const int height = 448;
 
        const float walkSpeed = 128.0f;
 
@@ -188,6 +191,7 @@ int main(int argc, char **argv) {
                gameState.party[1] = &gameState.heroes[1];
                gameState.party[2] = &gameState.heroes[2];
                gameState.party[3] = &gameState.heroes[3];
+               gameState.partySize = 4;
 
                GameConfig gameConfig;
                gameConfig.state = &gameState;
@@ -218,12 +222,19 @@ int main(int argc, char **argv) {
                gameState.heroes[0].AddSpell(valorSpell);
                gameState.heroes[1].AddSpell(valorSpell);
 
+               gameState.inventory.Add(caster.GetItem("zirconPlateItem"));
                gameState.inventory.Add(caster.GetItem("antidoteItem"), 9);
+               gameState.inventory.Add(caster.GetItem("powerRingItem"));
                gameState.inventory.Add(caster.GetItem("magicJarItem"), 4);
+               gameState.inventory.Add(caster.GetItem("sProRingItem"));
                gameState.inventory.Add(caster.GetItem("hiPotionItem"), 4);
+               gameState.inventory.Add(caster.GetItem("powerRingItem"));
                gameState.inventory.Add(caster.GetItem("powerPotionItem"), 4);
+               gameState.inventory.Add(caster.GetItem("zircoSwordItem"));
                gameState.inventory.Add(caster.GetItem("escapeItem"), 2);
+               gameState.inventory.Add(caster.GetItem("zircoHelmetItem"));
                gameState.inventory.Add(caster.GetItem("sleepBallItem"), 1);
+               gameState.inventory.Add(caster.GetItem("zirconPlateItem"));
 
                gameState.heroes[0].SetWeapon(caster.GetItem("zircoSwordItem"));
                gameState.heroes[0].SetArmor(caster.GetItem("zirconArmorItem"));
@@ -268,6 +279,122 @@ int main(int argc, char **argv) {
                gameState.heroes[3].MapEntity().SetFlags(Entity::FLAG_NONBLOCKING);
                gameState.heroes[2].MapEntity().AddFollower(&gameState.heroes[3].MapEntity());
 
+               menu::Resources menuResources;
+               gameConfig.menuResources = &menuResources;
+
+               Texture menubg;
+               menubg.SetSurface(IMG_Load("test-data/menubg.png"));
+               menubg.SetSize(Vector<int>(64, 64));
+               menuResources.menubg = &menubg;
+
+               menuResources.statusFont = gameConfig.battleResources->normalFont;
+
+               graphics::Sprite statusLabels(IMG_Load("test-data/status-labels.png"), 32, 16);
+               menuResources.statusLabels = &statusLabels;
+
+               graphics::Frame statusFrame(IMG_Load("test-data/status-frame.png"), 32, 32, 32, 32);
+               menuResources.statusFrame = &statusFrame;
+
+               graphics::Sprite menuFontSprite(IMG_Load("test-data/menu-font.png"), 16, 16);
+               graphics::Font menuFont(&menuFontSprite, 0, -2);
+
+               menuResources.normalFont = &menuFont;
+
+               graphics::Sprite menuCursor(IMG_Load("test-data/menu-cursor.png"), 32, 16);
+               menuResources.menuCursor = &menuCursor;
+               graphics::Sprite menuActiveCursor(IMG_Load("test-data/menu-cursor-active.png"), 32, 18);
+               menuResources.menuActiveCursor = &menuActiveCursor;
+
+               graphics::MenuProperties mainMenuProperties;
+               mainMenuProperties.cols = 2;
+               mainMenuProperties.rows = 4;
+               mainMenuProperties.charsPerEntry = 8;
+               mainMenuProperties.rowGap = 8;
+               mainMenuProperties.colGap = 32;
+               mainMenuProperties.cursor = &menuCursor;
+               mainMenuProperties.font = &menuFont;
+               mainMenuProperties.wrapX = true;
+               mainMenuProperties.wrapY = true;
+               menuResources.mainMenuProperties = &mainMenuProperties;
+
+               menuResources.mainMenuItemText = "ITEM";
+               menuResources.mainMenuSpellText = "SPELL";
+               menuResources.mainMenuCapsuleText = "CAPSULE";
+               menuResources.mainMenuEquipmentText = "EQUIP";
+               menuResources.mainMenuStatusText = "STATUS";
+               menuResources.mainMenuChangeText = "CHANGE";
+               menuResources.mainMenuConfigText = "CONFIG";
+               menuResources.mainMenuScenarioText = "SCENARIO";
+
+               menuResources.mainMenuTimeText = "TIME";
+               menuResources.mainMenuGoldText = "GOLD";
+
+               graphics::Sprite heroCursor(IMG_Load("test-data/hero-cursor.png"), 64, 16);
+               menuResources.heroCursor = &heroCursor;
+               menuResources.heroCursorBlinkTime = 532;
+
+               menuResources.noEquipmentText = "No equip";
+
+               graphics::Sprite shoulderNav(IMG_Load("test-data/shoulder-nav.png"), 160, 16);
+               menuResources.shoulderNav = &shoulderNav;
+
+               menuResources.atpLabel = "ATP";
+               menuResources.dfpLabel = "DFP";
+               menuResources.strLabel = "STR";
+               menuResources.aglLabel = "AGL";
+               menuResources.intLabel = "INT";
+               menuResources.gutLabel = "GUT";
+               menuResources.mgrLabel = "MGR";
+
+               menuResources.ipLabel = "IP";
+               menuResources.experienceLabel = "NOW EXP";
+               menuResources.nextLevelLabel = "NEXT LEVEL";
+
+               graphics::MenuProperties statusMenuProperties;
+               statusMenuProperties.cols = 2;
+               statusMenuProperties.rows = 1;
+               statusMenuProperties.charsPerEntry = 6;
+               statusMenuProperties.rowGap = 0;
+               statusMenuProperties.colGap = 16;
+               statusMenuProperties.cursor = &menuCursor;
+               statusMenuProperties.font = &menuFont;
+               statusMenuProperties.wrapX = true;
+               menuResources.statusMenuProperties = &statusMenuProperties;
+
+               menuResources.nextLabel = "NEXT";
+               menuResources.returnLabel = "RETURN";
+
+               graphics::MenuProperties itemMenuProperties;
+               itemMenuProperties.cols = 3;
+               itemMenuProperties.rows = 1;
+               itemMenuProperties.charsPerEntry = 5;
+               itemMenuProperties.rowGap = 8;
+               itemMenuProperties.colGap = 16;
+               itemMenuProperties.cursor = &menuCursor;
+               itemMenuProperties.selectedCursor = &menuActiveCursor;
+               itemMenuProperties.font = &menuFont;
+               itemMenuProperties.wrapX = true;
+               itemMenuProperties.wrapY = true;
+               menuResources.itemMenuProperties = &itemMenuProperties;
+               menuResources.itemMenuUseText = "USE";
+               menuResources.itemMenuSortText = "SORT";
+               menuResources.itemMenuDropText = "DROP";
+
+               graphics::MenuProperties inventoryMenuProperties;
+               inventoryMenuProperties.cols = 1;
+               inventoryMenuProperties.rows = 6;
+               inventoryMenuProperties.charsPerEntry = 13;
+               inventoryMenuProperties.rowGap = 8;
+               inventoryMenuProperties.cursor = &menuCursor;
+               inventoryMenuProperties.selectedCursor = &menuActiveCursor;
+               inventoryMenuProperties.font = &menuFont;
+               // TODO: disabled font
+               inventoryMenuProperties.disabledFont = &menuFont;
+               inventoryMenuProperties.iconSpace = 16;
+               inventoryMenuProperties.charsPerNumber = 2;
+               inventoryMenuProperties.delimiter = ':';
+               menuResources.inventoryMenuProperties = &inventoryMenuProperties;
+
                InitScreen screen(width, height);
 
                app::State *state(0);