From f6085f8568f2c754ed2eac294171e542139581f4 Mon Sep 17 00:00:00 2001 From: Daniel Karbach Date: Wed, 19 Sep 2012 22:34:04 +0200 Subject: [PATCH] added Caster class to simplify the code in main() --- Debug/src/loader/subdir.mk | 3 ++ Release/src/loader/subdir.mk | 3 ++ src/loader/Caster.cpp | 58 +++++++++++++++++++++ src/loader/Caster.h | 60 ++++++++++++++++++++++ src/main.cpp | 99 +++++++++++++++++------------------- 5 files changed, 172 insertions(+), 51 deletions(-) create mode 100644 src/loader/Caster.cpp create mode 100644 src/loader/Caster.h diff --git a/Debug/src/loader/subdir.mk b/Debug/src/loader/subdir.mk index bedbb88..7a5dbb3 100644 --- a/Debug/src/loader/subdir.mk +++ b/Debug/src/loader/subdir.mk @@ -4,6 +4,7 @@ # Add inputs and outputs from these tool invocations to the build variables CPP_SRCS += \ +../src/loader/Caster.cpp \ ../src/loader/Interpreter.cpp \ ../src/loader/ParsedSource.cpp \ ../src/loader/Parser.cpp \ @@ -12,6 +13,7 @@ CPP_SRCS += \ ../src/loader/utility.cpp OBJS += \ +./src/loader/Caster.o \ ./src/loader/Interpreter.o \ ./src/loader/ParsedSource.o \ ./src/loader/Parser.o \ @@ -20,6 +22,7 @@ OBJS += \ ./src/loader/utility.o CPP_DEPS += \ +./src/loader/Caster.d \ ./src/loader/Interpreter.d \ ./src/loader/ParsedSource.d \ ./src/loader/Parser.d \ diff --git a/Release/src/loader/subdir.mk b/Release/src/loader/subdir.mk index 992a06c..d405524 100644 --- a/Release/src/loader/subdir.mk +++ b/Release/src/loader/subdir.mk @@ -4,6 +4,7 @@ # Add inputs and outputs from these tool invocations to the build variables CPP_SRCS += \ +../src/loader/Caster.cpp \ ../src/loader/Interpreter.cpp \ ../src/loader/ParsedSource.cpp \ ../src/loader/Parser.cpp \ @@ -12,6 +13,7 @@ CPP_SRCS += \ ../src/loader/utility.cpp OBJS += \ +./src/loader/Caster.o \ ./src/loader/Interpreter.o \ ./src/loader/ParsedSource.o \ ./src/loader/Parser.o \ @@ -20,6 +22,7 @@ OBJS += \ ./src/loader/utility.o CPP_DEPS += \ +./src/loader/Caster.d \ ./src/loader/Interpreter.d \ ./src/loader/ParsedSource.d \ ./src/loader/Parser.d \ diff --git a/src/loader/Caster.cpp b/src/loader/Caster.cpp new file mode 100644 index 0000000..a3a6707 --- /dev/null +++ b/src/loader/Caster.cpp @@ -0,0 +1,58 @@ +/* + * Caster.cpp + * + * Created on: Sep 19, 2012 + * Author: holy + */ + +#include "Caster.h" + +#include "TypeDescription.h" + +using battle::Hero; +using battle::Monster; +using battle::PartyLayout; +using common::Item; +using common::Spell; +using std::string; + + +namespace loader { + +Caster::Caster(Interpreter &intp) +: intp(intp) +, battleResourcesId(TypeDescription::GetTypeId("BattleResources")) +, heroId(TypeDescription::GetTypeId("Hero")) +, itemId(TypeDescription::GetTypeId("Item")) +, monsterId(TypeDescription::GetTypeId("Monster")) +, partyLayoutId(TypeDescription::GetTypeId("PartyLayout")) +, spellId(TypeDescription::GetTypeId("Spell")) { + +} + + +battle::Resources *Caster::GetBattleResources(const string &ident) { + return reinterpret_cast(intp.GetObject(battleResourcesId, ident)); +} + +Hero *Caster::GetHero(const string &ident) { + return reinterpret_cast(intp.GetObject(heroId, ident)); +} + +Item *Caster::GetItem(const string &ident) { + return reinterpret_cast(intp.GetObject(itemId, ident)); +} + +Monster *Caster::GetMonster(const string &ident) { + return reinterpret_cast(intp.GetObject(monsterId, ident)); +} + +PartyLayout *Caster::GetPartyLayout(const string &ident) { + return reinterpret_cast(intp.GetObject(partyLayoutId, ident)); +} + +Spell *Caster::GetSpell(const string &ident) { + return reinterpret_cast(intp.GetObject(spellId, ident)); +} + +} diff --git a/src/loader/Caster.h b/src/loader/Caster.h new file mode 100644 index 0000000..2718fc0 --- /dev/null +++ b/src/loader/Caster.h @@ -0,0 +1,60 @@ +/* + * Caster.h + * + * Created on: Sep 19, 2012 + * Author: holy + */ + +#ifndef LOADER_CASTER_H_ +#define LOADER_CASTER_H_ + +#include "Interpreter.h" + +#include + +namespace battle { + class Hero; + class Monster; + class PartyLayout; + class Resources; +} + +namespace common { + class Item; + class Spell; +} + +namespace loader { + +class Caster { + +public: + Caster(Interpreter &intp); + ~Caster() { } +private: + Caster(const Caster &); + Caster &operator =(const Caster &); + +public: + battle::Resources *GetBattleResources(const std::string &identifier); + battle::Hero *GetHero(const std::string &identifier); + common::Item *GetItem(const std::string &identifier); + battle::Monster *GetMonster(const std::string &identifier); + battle::PartyLayout *GetPartyLayout(const std::string &identifier); + common::Spell *GetSpell(const std::string &identifier); + +private: + Interpreter &intp; + + int battleResourcesId; + int heroId; + int itemId; + int monsterId; + int partyLayoutId; + int spellId; + +}; + +} + +#endif /* LOADER_CASTER_H_ */ diff --git a/src/main.cpp b/src/main.cpp index 964fce0..965da00 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -26,6 +26,7 @@ #include "graphics/Menu.h" #include "graphics/SimpleAnimation.h" #include "graphics/Sprite.h" +#include "loader/Caster.h" #include "loader/Interpreter.h" #include "loader/ParsedSource.h" #include "loader/Parser.h" @@ -63,6 +64,7 @@ using graphics::Gauge; using graphics::Menu; using graphics::SimpleAnimation; using graphics::Sprite; +using loader::Caster; using loader::Interpreter; using loader::ParsedSource; using loader::Parser; @@ -149,81 +151,76 @@ int main(int argc, char **argv) { return 3; } - int battleResId(TypeDescription::GetTypeId("BattleResources")); - int heroId(TypeDescription::GetTypeId("Hero")); - int itemId(TypeDescription::GetTypeId("Item")); - int monsterId(TypeDescription::GetTypeId("Monster")); - int partyLayoutId(TypeDescription::GetTypeId("PartyLayout")); - int spellId(TypeDescription::GetTypeId("Spell")); + Caster caster(intp); // temporary test data SDL_Surface *bg(IMG_Load("test-data/battle-bg.png")); - PartyLayout monstersLayout(*reinterpret_cast(intp.GetObject(partyLayoutId, "monstersLayout"))); - PartyLayout heroesLayout(*reinterpret_cast(intp.GetObject(partyLayoutId, "heroesLayout"))); + PartyLayout monstersLayout(*caster.GetPartyLayout("monstersLayout")); + PartyLayout heroesLayout(*caster.GetPartyLayout("heroesLayout")); - Monster monster(*reinterpret_cast(intp.GetObject(monsterId, "lizard"))); - Hero maxim(*reinterpret_cast(intp.GetObject(heroId, "maxim"))); - Hero selan(*reinterpret_cast(intp.GetObject(heroId, "selan"))); - Hero guy(*reinterpret_cast(intp.GetObject(heroId, "guy"))); - Hero dekar(*reinterpret_cast(intp.GetObject(heroId, "dekar"))); + Monster monster(*caster.GetMonster("lizard")); + Hero maxim(*caster.GetHero("maxim")); + Hero selan(*caster.GetHero("selan")); + Hero guy(*caster.GetHero("guy")); + Hero dekar(*caster.GetHero("dekar")); - battle::Resources *battleRes(reinterpret_cast(intp.GetObject(battleResId, "battleResources"))); + battle::Resources *battleRes(caster.GetBattleResources("battleResources")); - maxim.AddSpell(reinterpret_cast(intp.GetObject(spellId, "resetSpell"))); - Spell *strongSpell(reinterpret_cast(intp.GetObject(spellId, "strongSpell"))); + maxim.AddSpell(caster.GetSpell("resetSpell")); + Spell *strongSpell(caster.GetSpell("strongSpell")); maxim.AddSpell(strongSpell); selan.AddSpell(strongSpell); - Spell *strongerSpell(reinterpret_cast(intp.GetObject(spellId, "strongerSpell"))); + Spell *strongerSpell(caster.GetSpell("strongerSpell")); maxim.AddSpell(strongerSpell); selan.AddSpell(strongerSpell); - Spell *championSpell(reinterpret_cast(intp.GetObject(spellId, "championSpell"))); + Spell *championSpell(caster.GetSpell("championSpell")); maxim.AddSpell(championSpell); selan.AddSpell(championSpell); - Spell *rallySpell(reinterpret_cast(intp.GetObject(spellId, "rallySpell"))); + Spell *rallySpell(caster.GetSpell("rallySpell")); maxim.AddSpell(rallySpell); selan.AddSpell(rallySpell); - selan.AddSpell(reinterpret_cast(intp.GetObject(spellId, "escapeSpell"))); - Spell *valorSpell(reinterpret_cast(intp.GetObject(spellId, "valorSpell"))); + selan.AddSpell(caster.GetSpell("escapeSpell")); + Spell *valorSpell(caster.GetSpell("valorSpell")); maxim.AddSpell(valorSpell); selan.AddSpell(valorSpell); Inventory inventory; - inventory.Add(reinterpret_cast(intp.GetObject(itemId, "antidoteItem")), 9); - inventory.Add(reinterpret_cast(intp.GetObject(itemId, "magicJarItem")), 4); - inventory.Add(reinterpret_cast(intp.GetObject(itemId, "hiPotionItem")), 4); - inventory.Add(reinterpret_cast(intp.GetObject(itemId, "powerPotionItem")), 4); - inventory.Add(reinterpret_cast(intp.GetObject(itemId, "escapeItem")), 2); - inventory.Add(reinterpret_cast(intp.GetObject(itemId, "sleepBallItem")), 1); + inventory.Add(caster.GetItem("antidoteItem"), 9); + inventory.Add(caster.GetItem("magicJarItem"), 4); + inventory.Add(caster.GetItem("hiPotionItem"), 4); + inventory.Add(caster.GetItem("powerPotionItem"), 4); + inventory.Add(caster.GetItem("escapeItem"), 2); + inventory.Add(caster.GetItem("sleepBallItem"), 1); battleRes->inventory = &inventory; - maxim.SetWeapon(reinterpret_cast(intp.GetObject(itemId, "zircoSwordItem"))); - maxim.SetArmor(reinterpret_cast(intp.GetObject(itemId, "zirconArmorItem"))); - maxim.SetShield(reinterpret_cast(intp.GetObject(itemId, "holyShieldItem"))); - maxim.SetHelmet(reinterpret_cast(intp.GetObject(itemId, "legendHelmItem"))); - maxim.SetRing(reinterpret_cast(intp.GetObject(itemId, "sProRingItem"))); - maxim.SetJewel(reinterpret_cast(intp.GetObject(itemId, "evilJewelItem"))); + maxim.SetWeapon(caster.GetItem("zircoSwordItem")); + maxim.SetArmor(caster.GetItem("zirconArmorItem")); + maxim.SetShield(caster.GetItem("holyShieldItem")); + maxim.SetHelmet(caster.GetItem("legendHelmItem")); + maxim.SetRing(caster.GetItem("sProRingItem")); + maxim.SetJewel(caster.GetItem("evilJewelItem")); -// selan.SetWeapon(reinterpret_cast(intp.GetObject(itemId, "zircoWhipItem"))); - selan.SetArmor(reinterpret_cast(intp.GetObject(itemId, "zirconPlateItem"))); - selan.SetShield(reinterpret_cast(intp.GetObject(itemId, "zircoGlovesItem"))); - selan.SetHelmet(reinterpret_cast(intp.GetObject(itemId, "holyCapItem"))); - selan.SetRing(reinterpret_cast(intp.GetObject(itemId, "ghostRingItem"))); - selan.SetJewel(reinterpret_cast(intp.GetObject(itemId, "eagleRockItem"))); +// selan.SetWeapon(cst.GetItem("zircoWhipItem")); + selan.SetArmor(caster.GetItem("zirconPlateItem")); + selan.SetShield(caster.GetItem("zircoGlovesItem")); + selan.SetHelmet(caster.GetItem("holyCapItem")); + selan.SetRing(caster.GetItem("ghostRingItem")); + selan.SetJewel(caster.GetItem("eagleRockItem")); -// guy.SetWeapon(reinterpret_cast(intp.GetObject(itemId, "zircoAxItem"))); - guy.SetArmor(reinterpret_cast(intp.GetObject(itemId, "zirconArmorItem"))); - guy.SetShield(reinterpret_cast(intp.GetObject(itemId, "megaShieldItem"))); - guy.SetHelmet(reinterpret_cast(intp.GetObject(itemId, "zircoHelmetItem"))); - guy.SetRing(reinterpret_cast(intp.GetObject(itemId, "powerRingItem"))); - guy.SetJewel(reinterpret_cast(intp.GetObject(itemId, "evilJewelItem"))); +// guy.SetWeapon(cst.GetItem("zircoAxItem")); + guy.SetArmor(caster.GetItem("zirconArmorItem")); + guy.SetShield(caster.GetItem("megaShieldItem")); + guy.SetHelmet(caster.GetItem("zircoHelmetItem")); + guy.SetRing(caster.GetItem("powerRingItem")); + guy.SetJewel(caster.GetItem("evilJewelItem")); // NOTE: this is actually Artea equipment -// dekar.SetWeapon(reinterpret_cast(intp.GetObject(itemId, "lizardBlowItem"))); - dekar.SetArmor(reinterpret_cast(intp.GetObject(itemId, "holyRobeItem"))); - dekar.SetShield(reinterpret_cast(intp.GetObject(itemId, "zircoGlovesItem"))); - dekar.SetHelmet(reinterpret_cast(intp.GetObject(itemId, "holyCapItem"))); - dekar.SetRing(reinterpret_cast(intp.GetObject(itemId, "rocketRingItem"))); - dekar.SetJewel(reinterpret_cast(intp.GetObject(itemId, "krakenRockItem"))); +// dekar.SetWeapon(cst.GetItem("lizardBlowItem")); + dekar.SetArmor(caster.GetItem("holyRobeItem")); + dekar.SetShield(caster.GetItem("zircoGlovesItem")); + dekar.SetHelmet(caster.GetItem("holyCapItem")); + dekar.SetRing(caster.GetItem("rocketRingItem")); + dekar.SetJewel(caster.GetItem("krakenRockItem")); InitScreen screen(width, height); -- 2.39.2