diff --git a/Game/config.xml b/Game/config.xml index 8eb900cd..35643a8b 100644 --- a/Game/config.xml +++ b/Game/config.xml @@ -30,46 +30,60 @@ - -
- + +
+ + + +
+ + + + +
+ + + + +
+ + + +
- +
- + -
- +
+ -
- +
+ -
- +
+ -
+
+
- - - -
- - + @@ -80,7 +94,7 @@ - + @@ -94,21 +108,21 @@ - -
- + +
+ - -
- + +
+ - -
- + +
+ @@ -121,39 +135,34 @@ - - - - -
- - + + +
+ - -
- + +
+ - -
- + +
+ - -
- + +
+ -
- +
+ -
- +
+ -
- +
+ @@ -162,32 +171,32 @@ -
- +
+ -
- +
+ -
- +
+ -
- +
+ -
- +
+ -
- +
+ -
- +
+ @@ -197,32 +206,32 @@ -
- +
+ -
- +
+ -
- +
+ -
- +
+ -
- +
+ -
- +
+ -
- +
+ @@ -266,17 +275,14 @@
+ +
+ + - + @@ -285,21 +291,23 @@ - - + + + + - + @@ -332,6 +340,11 @@ + + + + + + + + + +
+ + + + + diff --git a/Game/gui/atlasUi.png b/Game/gui/atlasUi.png index 046862ab..7535c2ab 100644 Binary files a/Game/gui/atlasUi.png and b/Game/gui/atlasUi.png differ diff --git a/Game/maps/probando.tmx b/Game/maps/probando.tmx new file mode 100644 index 00000000..6ad2f745 --- /dev/null +++ b/Game/maps/probando.tmx @@ -0,0 +1,8 @@ + + + + + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + + diff --git a/Game/maps/tilesetprueba.png b/Game/maps/tilesetprueba.png new file mode 100644 index 00000000..190fd9ee Binary files /dev/null and b/Game/maps/tilesetprueba.png differ diff --git a/Game/maps/tilesetprueba.tsx b/Game/maps/tilesetprueba.tsx new file mode 100644 index 00000000..6dc05565 --- /dev/null +++ b/Game/maps/tilesetprueba.tsx @@ -0,0 +1,4 @@ + + + + diff --git a/Motor2D/EnemyTest.cpp b/Motor2D/EnemyTest.cpp index cab3685c..9ebb88c0 100644 --- a/Motor2D/EnemyTest.cpp +++ b/Motor2D/EnemyTest.cpp @@ -9,6 +9,8 @@ //#include "j1AttackManager.h" #include "UiItem_HitPointManager.h" #include "UiItem_Image.h" +#include "j1BuffManager.h" + #include @@ -182,7 +184,7 @@ bool EnemyTest::Update(float dt) if (App->input->GetControllerButton(SDL_CONTROLLER_BUTTON_Y) == KEY_DOWN) { - life -= 30; + App->buff->DirectAttack(App->entityFactory->player->selectedCharacterEntity, this, 30, ELEMENTAL_TYPE::ICE_ELEMENT, "meh"); App->HPManager->callHPLabelSpawn(iPoint(this->position.x, this->position.y), 30, ELEMENTAL_TYPE::POISON_ELEMENT); } diff --git a/Motor2D/EquipableLoot.h b/Motor2D/EquipableLoot.h index 43bfe330..3b529367 100644 --- a/Motor2D/EquipableLoot.h +++ b/Motor2D/EquipableLoot.h @@ -32,7 +32,6 @@ class Equipable : public LootEntity int id; std::string character; - std::string itemName; int equipableChance; diff --git a/Motor2D/LootEntity.cpp b/Motor2D/LootEntity.cpp index afccc075..b62897e8 100644 --- a/Motor2D/LootEntity.cpp +++ b/Motor2D/LootEntity.cpp @@ -13,12 +13,17 @@ LootEntity::LootEntity(LOOT_TYPE type, int posX, int posY) : j1Entity(LOOT, posX lootSubtile.y = posY; engine.seed(rd()); + //lootTexture = App->tex->Load("textures/loot/loot_items.png"); } LootEntity::~LootEntity() -{} +{ + // TODO: call DeleteEverything() in the associated GUI description + + +} //bool LootEntity::PreUpdate() @@ -37,11 +42,6 @@ bool LootEntity::Start() bool LootEntity::Update(float dt) { - - - - - return true; } float LootEntity::LerpX(float origin, float destination, float t ) @@ -72,33 +72,7 @@ iPoint LootEntity::GetPosition() { return App->map->SubTileMapToWorld(App->entityFactory->GetEnemySubtile(this).x, App->entityFactory->GetEnemySubtile(this).y); } -/* ARc - -posY = sin(angle) * currenttime - gravity*t^2/2 -y = xtan(angle) - gravity*x^2 / (2*cos^2(angle)) -*/ -//Basic trigonometry example -// -//cosine for x axis -// -//sine for y axis -// -//speed is whatever you would like the movement each time to increment by... Obviously the higher the number the more pixels it will move at any given time so the quicker it will be. -// -//dx = (double)(Math.cos(angle) * speed); -//dy = (double)(Math.sin(angle) * speed); -// -//A.x += dx; -//A.y += dy; -//bool LootEntity::PostUpdate() -//{ -// return true; -//} -// -//bool LootEntity::CleanUp() -//{ -// return true; -//} + std::string LootEntity::GetName() { return name; @@ -280,3 +254,36 @@ void LootEntity::ExplosionMaker(float dt) } + +/*void LootEntity::GetAttributesForDescription() +{ + + std::vector::iterator stat = stats.begin(); + + float attack = 0.0f; + float resistance = 0.0f; + + for (; stat != stats.end(); ++stat) + { + + if ((*stat)->GetRol() == OBJECT_ROL::ATTACK_ROL) + { + attack = (*stat)->GetValue(); + } + else if ((*stat)->GetRol() == OBJECT_ROL::DEFENCE_ROL) + { + resistance = (*stat)->GetValue(); + } + + } + + if (this->objectType == OBJECT_TYPE::WEAPON_OBJECT) + { + this->MyDescription = App->gui->AddDescriptionToWeapon(App->render->WorldToScreen(loot_pos.x, loot_pos.y), this->lootname, App->scene->lootPanelRect, &this->loot_rect, attack, resistance, App->scene->inGamePanel); + } + else + { + // TODO for vests, etc + } + +}*/ diff --git a/Motor2D/LootEntity.h b/Motor2D/LootEntity.h index 8f49ea7b..e1035699 100644 --- a/Motor2D/LootEntity.h +++ b/Motor2D/LootEntity.h @@ -9,6 +9,10 @@ #include //#include "pcg_random.hpp" +#include "j1Scene.h" + +#include +#include "j1Gui.h" struct SDL_Texture; @@ -65,6 +69,7 @@ class LootEntity : public j1Entity void Draw(); iPoint GetPosition(); int GetRandomValue(int min, int max); + //void GetAttributesForDescription(); float EaseOutBack(float t); void CreateBuff(BUFF_TYPE type, j1Entity* character, std::string stat, ELEMENTAL_TYPE elementType, ROL rol, float value, LootEntity* item); @@ -96,6 +101,15 @@ class LootEntity : public j1Entity j1Entity* character = nullptr; + // - - - - - - - LootEntity stats in XML - - - - - - - // + std::string name; + + + // - - - - - - - The attached description - - - - - - - // + UiItem_Description* MyDescription = nullptr; + +protected: + int dmg; std::string itemname; diff --git a/Motor2D/Motor2D.vcxproj b/Motor2D/Motor2D.vcxproj index 33414d74..990c4d08 100644 --- a/Motor2D/Motor2D.vcxproj +++ b/Motor2D/Motor2D.vcxproj @@ -14,21 +14,21 @@ {2AF9969B-F202-497B-AF30-7BEF9CE8005E} programacio_2 Final_Fantasy-Dawn_of_Ivalice - 10.0.17134.0 + 10.0 Application true MultiByte - v141 + v142 Application false false MultiByte - v141 + v142 @@ -102,7 +102,6 @@ - @@ -117,6 +116,7 @@ + @@ -139,7 +139,6 @@ - @@ -147,7 +146,6 @@ - @@ -172,6 +170,7 @@ + diff --git a/Motor2D/Motor2D.vcxproj.filters b/Motor2D/Motor2D.vcxproj.filters index 179ba58c..487b2fea 100644 --- a/Motor2D/Motor2D.vcxproj.filters +++ b/Motor2D/Motor2D.vcxproj.filters @@ -1,148 +1,158 @@  - - Desenvolupament ====== - - - Desenvolupament ====== - - - p2Help - + + - Desenvolupament ======\Scenes + Development======\Scenes + + + Development======\Modules\Tools - Desenvolupament ======\Tools + Development======\Modules\Tools - Desenvolupament ======\Tools + Development======\Modules\Tools - Desenvolupament ======\Tools\PuguiXML + Development======\Modules\Tools\PuguiXML - - Desenvolupament ======\Modules\Entities\Enemies + + p2Help + + + Development======\Modules\Entities - Desenvolupament ======\Modules\Entities\Enemies + Development======\Modules\Entities\Enemies - - Desenvolupament ======\Modules\Entities\Loot + + Development======\Modules\Entities\Enemies + + + Development======\Modules\Entities\Enemies - Desenvolupament ======\Modules\Entities\Loot + Development======\Modules\Entities\Loot + + + Development======\Modules\Entities\Loot - Desenvolupament ======\Modules\Entities\Loot + Development======\Modules\Entities\Loot - Desenvolupament ======\Modules\Entities\Player + Development======\Modules\Entities\Player - Desenvolupament ======\Modules\Entities\Player + Development======\Modules\Entities\Player - Desenvolupament ======\Modules\Entities\Player + Development======\Modules\Entities\Player - Desenvolupament ======\Modules\Entities\Player + Development======\Modules\Entities\Player - Desenvolupament ======\Modules\Entities\Player - - - Desenvolupament ======\Modules\GUI\core - - - Desenvolupament ======\Modules\GUI\core + Development======\Modules\Entities\Player - Desenvolupament ======\Modules\GUI\basic + Development======\Modules\GUI\basic - Desenvolupament ======\Modules\GUI\basic - - - Desenvolupament ======\Modules\GUI\basic + Development======\Modules\GUI\basic - Desenvolupament ======\Modules\GUI\basic + Development======\Modules\GUI\basic - Desenvolupament ======\Modules\GUI\basic + Development======\Modules\GUI\basic - - Desenvolupament ======\Modules\GUI\special items + + Development======\Modules\GUI\basic - - Desenvolupament ======\Modules\GUI\special items + + Development======\Modules\GUI\core - - Desenvolupament ======\Modules\GUI\special items + + Development======\Modules\GUI\core - - Desenvolupament ======\Modules + + Development======\Modules\GUI\managers - - Desenvolupament ======\Modules + + Development======\Modules\GUI\special items - - Desenvolupament ======\Modules + + Development======\Modules\GUI\special items - - Desenvolupament ======\Modules + + Development======\Modules\GUI\special items - - Desenvolupament ======\Modules + + Development======\Modules\GUI\special items - - Desenvolupament ======\Modules + + Development======\Modules - - Desenvolupament ======\Modules + + Development======\Modules - - Desenvolupament ======\Modules + + Development======\Modules - - Desenvolupament ======\Modules + + Development======\Modules - Desenvolupament ======\Modules + Development======\Modules - - Desenvolupament ======\Modules + + Development======\Modules - - Desenvolupament ======\Modules + + Development======\Modules - - Desenvolupament ======\Modules + + Development======\Modules - - Desenvolupament ======\Modules\GUI\managers + + Development======\Modules - - Desenvolupament ======\Modules\Entities + + Development======\Modules - - Desenvolupament ======\Modules + + Development======\Modules - - Desenvolupament ======\Tools + + Development======\Modules - - Desenvolupament ======\Modules\Entities\Enemies + + Development======\Modules - - Desenvolupament ====== + + + + Development======\Scenes + + + Development======\Modules\Tools + + + Development======\Modules\Tools + + + Development======\Modules\Tools + + + Development======\Modules\Tools\PuguiXML - - Desenvolupament ====== + + Development======\Modules\Tools\PuguiXML p2Help @@ -153,218 +163,197 @@ p2Help - + p2Help - + p2Help p2Help - - Desenvolupament ======\Scenes - - - Desenvolupament ======\Tools - - - Desenvolupament ======\Tools + + Development======\Modules\Entities - - Desenvolupament ======\Tools\PuguiXML + + Development======\Modules\Entities\Enemies - - Desenvolupament ======\Tools\PuguiXML + + Development======\Modules\Entities\Enemies - Desenvolupament ======\Modules\Entities\Enemies - - - Desenvolupament ======\Modules\Entities\Enemies + Development======\Modules\Entities\Enemies - Desenvolupament ======\Modules\Entities\Loot - - - Desenvolupament ======\Modules\Entities\Loot + Development======\Modules\Entities\Loot - Desenvolupament ======\Modules\Entities\Loot + Development======\Modules\Entities\Loot + + + Development======\Modules\Entities\Loot - Desenvolupament ======\Modules\Entities\Player + Development======\Modules\Entities\Player - Desenvolupament ======\Modules\Entities\Player + Development======\Modules\Entities\Player - Desenvolupament ======\Modules\Entities\Player - - - Desenvolupament ======\Modules\Entities\Player + Development======\Modules\Entities\Player - Desenvolupament ======\Modules\Entities\Player + Development======\Modules\Entities\Player - - Desenvolupament ======\Modules\GUI\core + + Development======\Modules\Entities\Player - Desenvolupament ======\Modules\GUI\basic + Development======\Modules\GUI\basic - Desenvolupament ======\Modules\GUI\basic - - - Desenvolupament ======\Modules\GUI\basic + Development======\Modules\GUI\basic - Desenvolupament ======\Modules\GUI\basic + Development======\Modules\GUI\basic - Desenvolupament ======\Modules\GUI\basic - - - Desenvolupament ======\Modules\GUI\special items + Development======\Modules\GUI\basic - - Desenvolupament ======\Modules\GUI\special items - - - Desenvolupament ======\Modules\GUI\special items + + Development======\Modules\GUI\basic - - Desenvolupament ======\Modules + + Development======\Modules\GUI\core - - Desenvolupament ======\Modules + + Development======\Modules\GUI\core - - Desenvolupament ======\Modules + + Development======\Modules\GUI\help - - Desenvolupament ======\Modules + + Development======\Modules\GUI\managers - - Desenvolupament ======\Modules + + Development======\Modules\GUI\special items - - Desenvolupament ======\Modules + + Development======\Modules\GUI\special items - - Desenvolupament ======\Modules + + Development======\Modules\GUI\special items - - Desenvolupament ======\Modules + + Development======\Modules\GUI\special items - - Desenvolupament ======\Modules + + Development======\Modules - - Desenvolupament ======\Modules + + Development======\Modules - - Desenvolupament ======\Modules + + Development======\Modules - Desenvolupament ======\Modules + Development======\Modules - - Desenvolupament ======\Modules + + Development======\Modules - - Desenvolupament ======\Modules + + Development======\Modules - - Desenvolupament ======\Modules\GUI\core + + Development======\Modules - - Desenvolupament ======\Modules\GUI\help + + Development======\Modules - - Desenvolupament ======\Modules\GUI\managers + + Development======\Modules - - Desenvolupament ======\Modules\Entities + + Development======\Modules - - Desenvolupament ======\Modules + + Development======\Modules - - Desenvolupament ======\Tools + + Development======\Modules - - Desenvolupament ======\Modules\Entities\Enemies + + Development======\Modules - - Desenvolupament ======\XML - - Desenvolupament ======\XML + Development======\XML + + + Development======\XML - - {34e05b63-3dfc-46bc-abc5-d4969a6f2e64} - - - {52b9e171-bd0a-494d-8c54-7bdd0bb27237} + + Development======\XML + + + Development======\XML + + + + + {eebc7c4b-f97c-4a90-ac88-b26a98093e0a} - - {2149654e-7386-43a9-bb01-d9b53d3df634} + + {2d191d23-eb06-455a-8951-cd5dbdb06f03} - - {0d600ddf-12eb-457c-941c-f2b17d08f625} + + {f279b6ef-5cc9-4837-8e65-2f75f770b7cf} - {6b218f57-f07e-4e5f-afbe-e78ab64455b1} + {7333ebb3-8d42-4290-8e3c-0e7a4076b4ab} - - {b633a016-d036-43a1-ac9c-0f646c9f9d83} + + {d91ebbfa-bd20-42c3-8048-8aa38efda706} - - {9200e895-932a-4108-a404-6d8aba81435a} + + {52280538-2bf4-40b0-964c-363b30968ef6} - - {268d2e8e-53ee-44ab-ad1e-6ed97b74c78d} + + {835c6e90-de68-456a-9d03-99788d01119f} - - {1a10f779-9006-4843-92bc-5dee13019469} + + {93cbe47b-43bb-4176-84e4-5f97163ef40d} - - {be08cd0a-2d04-454b-97c6-5e8be24520bf} + + {a43683b2-82cb-42e0-aa0b-7411ea526ffd} - - {feaa2edb-e534-4a04-b768-f567d93e7faf} + + {4f07a242-e9e9-4347-bfcf-cce6749fbeb2} - - {d793c6e5-239b-47e9-8edf-826cb183ef72} + + {e8c75be4-019c-4243-86fc-0ce135c73889} - - {3194119e-7ffb-434a-9fc6-3a8e3bbbf30d} + + {266590b7-570f-4dd5-bb77-1c43cae62f32} - - {3ac7798b-ea0c-4d5d-bbc3-3fead91e4556} + + {898c4e0f-4f7d-4411-bfc3-8e4b0134d5bc} - - {287d2e4b-faed-4f84-bb54-1f6e528519e2} + + {dc061775-0f62-4b9d-90eb-9f7ddadeeb56} - - {bae3aad3-5463-4932-aa2f-32fa20943063} + + {b9f80ef1-580d-4ca9-aba5-bcdae0c01979} - - {b80e7e2c-237d-4733-b894-f326f4f605fd} + + {295057d2-450d-4da2-bd96-4fe776c93bb1} + + + {640dc0b7-7864-437e-b10b-8f5eb6c08a56} - - - - Desenvolupament ====== - - - Desenvolupament ======\XML - \ No newline at end of file diff --git a/Motor2D/UiItem.h b/Motor2D/UiItem.h index 904deddf..f4e9539d 100644 --- a/Motor2D/UiItem.h +++ b/Motor2D/UiItem.h @@ -52,6 +52,7 @@ class UiItem void Draw_Cursor(float dt); bool slidable = false; bool tabbed = false; + bool tabbable = false; bool enable = true; UiItem* iFriend = nullptr; bool to_delete = false; diff --git a/Motor2D/UiItem_Button.cpp b/Motor2D/UiItem_Button.cpp index 8ae4932f..8f78691f 100644 --- a/Motor2D/UiItem_Button.cpp +++ b/Motor2D/UiItem_Button.cpp @@ -47,6 +47,8 @@ void UiItem_Button::DoLogicClicked(std::string &functionName) App->gui->GoBackToMenu(); if (functionName == "GoBackToGame") App->gui->GoBackToGame(); + if (functionName == "GoBackToStartMenu") + App->gui->GoBackToStartMenu(); } void UiItem_Button::Draw(const float &dt) diff --git a/Motor2D/UiItem_CooldownClock.cpp b/Motor2D/UiItem_CooldownClock.cpp index 33e3b613..e1d81c97 100644 --- a/Motor2D/UiItem_CooldownClock.cpp +++ b/Motor2D/UiItem_CooldownClock.cpp @@ -115,7 +115,7 @@ void UiItem_CooldownClock::DoLogic() } else { - // Restart(); dont't call it if it is already called from the player + Restart(); // dont't call it if it is already called from the player } } @@ -138,7 +138,7 @@ void UiItem_CooldownClock::DoLogic() } else { - // Restart(); dont't call it if it is already called from the player + Restart(); //dont't call it if it is already called from the player } } @@ -154,7 +154,7 @@ void UiItem_CooldownClock::DoLogic() } else { - // Restart(); dont't call it if it is already called from the player + Restart(); //dont't call it if it is already called from the player } } diff --git a/Motor2D/UiItem_Description.cpp b/Motor2D/UiItem_Description.cpp new file mode 100644 index 00000000..15d7cc92 --- /dev/null +++ b/Motor2D/UiItem_Description.cpp @@ -0,0 +1,74 @@ +#include "UiItem_Description.h" +#include "j1Gui.h" + +UiItem_Description::UiItem_Description(iPoint position, std::string itemName, const SDL_Rect* panelRect, const SDL_Rect* iconRect, float Value, EquipmentStatType variableType, UiItem*const parent) : UiItem(position, parent) +{ + this->descrType = descriptionType::EQUIPMENT; + this->parent = parent; + + // TODO + +} + + +UiItem_Description::UiItem_Description(iPoint position, std::string itemName, const SDL_Rect* panelRect, const SDL_Rect* iconRect, float Attack, float resistance, UiItem*const parent) : UiItem(position, parent) +{ + + this->descrType = descriptionType::WEAPON; + this->parent = parent; + + + iconImage = App->gui->AddImage(position, iconRect, this); // the icon must use the loot texture atlas + iconImage->printFromLoot = true; + + panelWithButton = App->gui->AddImage(position, panelRect, this); + + + +} + + +void UiItem_Description::HideAllElements(bool hide) +{ + this->iconImage->hide = hide; + this->panelWithButton->hide = hide; + this->name->hide = hide; + this->hide = hide; + + + if (this->descrType == descriptionType::WEAPON) + { + this->damageLabel->hide = hide; + this->reistanceLabel->hide = hide; + + } + else if(this->descrType == descriptionType::EQUIPMENT) + { + + } + + +} + + +void UiItem_Description::DeleteEverything() +{ + + this->iconImage->to_delete = true; + this->panelWithButton->to_delete = true; + this->name->to_delete = true; + + if (this->descrType == descriptionType::WEAPON) + { + this->damageLabel->to_delete = true; + this->reistanceLabel->to_delete = true; + + } + else if (this->descrType == descriptionType::EQUIPMENT) + { + + } + + this->to_delete = true; + +} diff --git a/Motor2D/UiItem_Description.h b/Motor2D/UiItem_Description.h new file mode 100644 index 00000000..97b5485a --- /dev/null +++ b/Motor2D/UiItem_Description.h @@ -0,0 +1,66 @@ +#ifndef UIITEM_DESCRIPTION_H +#define UIITEM_DESCRIPTION_H + +#include "UiItem.h" +#include "p2Point.h" +#include "j1Textures.h" +#include +// #include "j1Entity.h" + + +class UiItem_Image; +class UiItem_Label; + +enum EquipmentStatType +{ + HP, + HIT_SEC, + COOLDOWN, + ATT, +}; + +enum descriptionType +{ + WEAPON, + EQUIPMENT +}; + + +class UiItem_Description: public UiItem +{ + +public: + UiItem_Description(iPoint position, std::string itemName, const SDL_Rect* panelRect, const SDL_Rect* iconRect, float Value, EquipmentStatType variableType, UiItem*const parent); // for equipment + UiItem_Description(iPoint position, std::string itemName, const SDL_Rect* panelRect, const SDL_Rect* iconRect, float Attack, float resistance, UiItem*const parent); // for weapons, right now we will print TWO variables + +// void Draw(const float& dt); // do we need this?? I bet we don't + + void HideAllElements(bool hide = true); + void DeleteEverything(); + +public: + // - - - - common - - - - // + UiItem_Image* iconImage = nullptr; + UiItem_Image* panelWithButton = nullptr; + UiItem_Label* name = nullptr; + + // for weapons + UiItem_Label* damageLabel = nullptr; + UiItem_Label* reistanceLabel = nullptr; + + bool hide = false; + + + // TODO: cooldown and other stats + + + + // TODO: variable to_delete: description (and all items contained) are only deleted when the loot item is sold in the store + +private: + + EquipmentStatType equipmentLootInfo; + descriptionType descrType; +}; + +#endif \ No newline at end of file diff --git a/Motor2D/UiItem_HealthBar.cpp b/Motor2D/UiItem_HealthBar.cpp index 51eb1414..b1a19b63 100644 --- a/Motor2D/UiItem_HealthBar.cpp +++ b/Motor2D/UiItem_HealthBar.cpp @@ -104,8 +104,6 @@ void UiItem_HealthBar::Draw(const float& dt) startShowing = true; } - - UpdatePos(); if (conversionFactor == 0.0f) diff --git a/Motor2D/UiItem_Image.cpp b/Motor2D/UiItem_Image.cpp index 786fbd49..c7e368fe 100644 --- a/Motor2D/UiItem_Image.cpp +++ b/Motor2D/UiItem_Image.cpp @@ -4,7 +4,7 @@ #include "j1Render.h" #include "j1Gui.h" #include "j1Scene.h" - +#include "LootEntity.h" UiItem_Image::UiItem_Image(iPoint position, const SDL_Rect* section, UiItem*const parent, bool isPanel) : UiItem(position, parent) { @@ -32,8 +32,21 @@ UiItem_Image::UiItem_Image(iPoint position, const SDL_Rect* section, UiItem*cons void UiItem_Image::Draw(const float& dt) { + + if (!hide) { - App->render->BlitGui(App->gui->GetAtlas(), hitBox.x, hitBox.y, &this->section, 0.0F, 1.0f, 0.0f, resizedRect); + // TODO: don't blit the icon in the loot item description using the GUI atlas, but instead the Loot atlas + + if (!printFromLoot) + { + App->render->BlitGui(App->gui->GetAtlas(), hitBox.x, hitBox.y, &this->section, 0.0F, 1.0f, 0.0f, resizedRect); + } + else + { + // TODO: check that this works + App->render->BlitGui(App->gui->lootTexture, hitBox.x, hitBox.y, &this->section, 0.0F); + } + } } \ No newline at end of file diff --git a/Motor2D/UiItem_Image.h b/Motor2D/UiItem_Image.h index 89a160a5..6c75fa95 100644 --- a/Motor2D/UiItem_Image.h +++ b/Motor2D/UiItem_Image.h @@ -32,12 +32,14 @@ class UiItem_Image : public UiItem this->hitBox.y = pos.y; } - bool hide = false; bool isPanel = false; - SDL_Rect resizedRect; -public: +public: + bool hide = false; + bool printFromLoot = false; // TODO: use to print the loot description icon from the loot texture + + friend class UiItem_Bar; friend class UiItem_Checkbox; friend class UiItem_HealthBar; diff --git a/Motor2D/UiItem_Label.cpp b/Motor2D/UiItem_Label.cpp index 72ddc972..b03572f9 100644 --- a/Motor2D/UiItem_Label.cpp +++ b/Motor2D/UiItem_Label.cpp @@ -36,6 +36,7 @@ UiItem_Label::UiItem_Label(std::string text, SDL_Color color, TTF_Font * font, p void UiItem_Label::Draw(const float & dt) { + if(!hide) App->render->BlitGui(texture, hitBox.x, hitBox.y, NULL, 0.0F); diff --git a/Motor2D/UiItem_Label.h b/Motor2D/UiItem_Label.h index 25959d6f..dc638c8f 100644 --- a/Motor2D/UiItem_Label.h +++ b/Motor2D/UiItem_Label.h @@ -19,5 +19,10 @@ class UiItem_Label : public UiItem SDL_Color color; TTF_Font* font = nullptr; SDL_Texture* texture = nullptr; + + +public: + bool hide = false; + }; #endif diff --git a/Motor2D/j1Audio.cpp b/Motor2D/j1Audio.cpp index 86452ce1..c5924096 100644 --- a/Motor2D/j1Audio.cpp +++ b/Motor2D/j1Audio.cpp @@ -195,5 +195,6 @@ void j1Audio::SetFxVolume(float volume) for (std::list::iterator item_fx = fx.begin();item_fx!=fx.end() ; ++item_fx) { Mix_VolumeChunk((*item_fx), final_fx_volume); + } } diff --git a/Motor2D/j1Fonts.cpp b/Motor2D/j1Fonts.cpp index e45e328f..4218012a 100644 --- a/Motor2D/j1Fonts.cpp +++ b/Motor2D/j1Fonts.cpp @@ -38,6 +38,7 @@ bool j1Fonts::Awake(pugi::xml_node& conf) openSansBold18 = Load("fonts/open_sans/OpenSans-Bold.ttf", 18); openSansBold36 = Load("fonts/open_sans/OpenSans-Bold.ttf", 36); + openSansSemiBold24 = Load("fonts/open_sans/OpenSans-Semibold.ttf", 24); shatterBoxx36 = Load("fonts/shatterboxx/shatterboxx.regular.ttf", 36); shatterBoxx48 = Load("fonts/shatterboxx/shatterboxx.regular.ttf", 48); diff --git a/Motor2D/j1Fonts.h b/Motor2D/j1Fonts.h index 24de914f..1d496cf1 100644 --- a/Motor2D/j1Fonts.h +++ b/Motor2D/j1Fonts.h @@ -46,6 +46,7 @@ class j1Fonts : public j1Module _TTF_Font* default; _TTF_Font* openSansBold18; _TTF_Font* openSansBold36; + _TTF_Font* openSansSemiBold24; // hitpoint labels _TTF_Font* shatterBoxx36; diff --git a/Motor2D/j1Gui.cpp b/Motor2D/j1Gui.cpp index 0060cee0..3e113f52 100644 --- a/Motor2D/j1Gui.cpp +++ b/Motor2D/j1Gui.cpp @@ -30,6 +30,7 @@ bool j1Gui::Awake(pugi::xml_node& conf) bool j1Gui::Start() { atlas = App->tex->Load(atlas_file_name.data()); + lootTexture = App->tex->Load("textures/loot/loot_items.png"); return true; } @@ -123,7 +124,7 @@ void j1Gui::ApplyTabBetweenSimilar(bool setClicked) { bool first = false; for (; item != ListItemUI.end(); ++item) { - if (((*item)->guiType == BAR || (*item)->guiType == CHECKBOX || (*item)->guiType == BUTTON) && (*item)->parent->enable) + if (((*item)->guiType == BAR || (*item)->guiType == CHECKBOX || (*item)->guiType == BUTTON || (*item)->tabbable) && (*item)->parent->enable) { if (!first) { @@ -429,9 +430,19 @@ bool j1Gui::CleanUp() { if (atlas != nullptr) App->tex->UnLoad(atlas); - // TODO: Remove items from list, not hitlabels (they are on their own list) + // TODO: Remove items from list, not hitlabels (they are on their own list) + for (std::list::iterator item = ListItemUI.begin(); item != ListItemUI.end(); ++item) + { + if ((*item) != nullptr) + { + delete *item; + *item = nullptr; + } + } ListItemUI.clear(); + + return true; } @@ -590,11 +601,44 @@ UiItem_CooldownClock * j1Gui::AddClock(iPoint position, SDL_Rect* section, std:: +UiItem_Description* j1Gui::AddDescriptionToEquipment(iPoint position, std::string itemName, const SDL_Rect* panelRect, const SDL_Rect* iconRect, float Value, EquipmentStatType variableType, UiItem*const parent) +{ + + UiItem* newUIItem = nullptr; + + newUIItem = new UiItem_Description(position, itemName, panelRect, iconRect, Value, variableType, parent); + + ListItemUI.push_back(newUIItem); + + + return (UiItem_Description*)newUIItem; + +} + +UiItem_Description* j1Gui::AddDescriptionToWeapon(iPoint position, std::string itemName, const SDL_Rect* panelRect, const SDL_Rect* iconRect, float Attack, float resistance, UiItem*const parent) { + + UiItem* newUIItem = nullptr; + + newUIItem = new UiItem_Description(position, itemName, panelRect, iconRect, Attack, resistance, parent); + + ListItemUI.push_back(newUIItem); + + + return (UiItem_Description*)newUIItem; + +} + + + + + SDL_Texture * j1Gui::GetAtlas() { return atlas; } + + void j1Gui::FadeToScene() { resetHoverSwapping = false; @@ -631,3 +675,12 @@ void j1Gui::GoBackToGame() App->pause = false; App->scene->pausePanel->enable = false; } + +void j1Gui::GoBackToStartMenu() +{ + resetHoverSwapping = false; + App->pause = false; + App->scene->pausePanel->enable = false; + App->scene->startMenu->enable = true; + App->scene->state = SceneState::STARTMENU; +} diff --git a/Motor2D/j1Gui.h b/Motor2D/j1Gui.h index 5d7684fa..321a1b5b 100644 --- a/Motor2D/j1Gui.h +++ b/Motor2D/j1Gui.h @@ -16,6 +16,7 @@ #include "UiItem_HealthBar.h" #include "UiItem_CooldownClock.h" #include "GUI_Definitions.h" +#include "UiItem_Description.h" struct labelInfo { @@ -108,6 +109,10 @@ class j1Gui : public j1Module UiItem_CooldownClock* AddClock(iPoint position, SDL_Rect* section, std::string type, std::string charName, UiItem*const parent = nullptr); + UiItem_Description* AddDescriptionToEquipment(iPoint position, std::string itemName, const SDL_Rect* panelRect, const SDL_Rect* iconRect, float Value, EquipmentStatType variableType, UiItem*const parent = nullptr); + UiItem_Description* AddDescriptionToWeapon(iPoint position, std::string itemName, const SDL_Rect* panelRect, const SDL_Rect* iconRect, float Attack, float reistance, UiItem*const parent = nullptr); + + SDL_Texture* GetAtlas(); void FadeToScene(); void ExitGame(); @@ -115,11 +120,13 @@ class j1Gui : public j1Module void GoBackToMenu(); void FpsCap(); void GoBackToGame(); + void GoBackToStartMenu(); UiItem_HealthBar* healthBar = nullptr; - + SDL_Texture * lootTexture; private: SDL_Texture * atlas; + std::string atlas_file_name; bool debug_ = false; UiItem* selected_object = nullptr; diff --git a/Motor2D/j1Scene.cpp b/Motor2D/j1Scene.cpp index 53d8746f..9dec9e44 100644 --- a/Motor2D/j1Scene.cpp +++ b/Motor2D/j1Scene.cpp @@ -74,7 +74,6 @@ bool j1Scene::Start() // create player for testing purposes here App->entityFactory->CreatePlayer({ 300,300 });//-980, 2440 }); - if (state == SceneState::GAME) { App->map->active = true; @@ -96,6 +95,7 @@ bool j1Scene::Start() LoadPlayerUi(sceneNode); LoadSettings(sceneNode); LoadPauseSettings(sceneNode); + LoadInventory(sceneNode); LoadedUi = true; } App->map->active = false; @@ -106,6 +106,7 @@ bool j1Scene::Start() settingPanel->enable = false; inGamePanel->enable = false; pausePanel->enable = false; + inventory->enable = false; } @@ -215,6 +216,7 @@ bool j1Scene::Update(float dt) result_volume = volume_bar->GetBarValue(); App->audio->SetVolume(result_volume); result_fx = fx_bar->GetBarValue(); + App->audio->SetFxVolume(result_fx); App->map->active = false; inGamePanel->enable = false; uiMarche->enable = false; @@ -264,6 +266,14 @@ bool j1Scene::Update(float dt) pausePanel->enable = false; } } + + if (App->input->GetControllerButton(SDL_CONTROLLER_BUTTON_BACK) == KEY_DOWN) + { + if (inventory->enable) + inventory->enable = false; + else + inventory->enable = true; + } } if (App->input->GetKey(SDL_SCANCODE_6) == KEY_DOWN) { @@ -278,6 +288,7 @@ bool j1Scene::Update(float dt) App->entityFactory->player->selectedCharacterEntity->life += 30; App->gui->healthBar->damageInform.damageValue = -30; } + /*if (App->input->GetKey(SDL_SCANCODE_F9) == KEY_DOWN) @@ -364,16 +375,26 @@ void j1Scene::LoadUiElement(UiItem*parent, pugi::xml_node node) int isPanel = uiNode.child("flag").attribute("isPanel").as_int(); std::string panelName = uiNode.child("flag").attribute("panelName").as_string(); - // PANELS - if (isPanel != 1) + std::string lootFlag = uiNode.child("flag").attribute("value").as_string(); + if ( lootFlag == "loot") { - App->gui->AddImage(position, §ion, parent, isPanel); // bug: an image is created as panel + + lootPanelRect = §ion; } else - { + { // this is useless now + if (isPanel != 1) + { + App->gui->AddImage(position, §ion, parent, isPanel); // bug: an image is created as panel + } + else + { + + } } + } @@ -540,7 +561,7 @@ bool j1Scene::LoadInGameUi(pugi::xml_node & nodeScene) pugi::xml_node inGameNode = nodeScene.child("InGameUi"); inGamePanel = App->gui->AddEmptyElement({ 0,0 }); LoadUiElement(inGamePanel, inGameNode); - coins_label = App->gui->AddLabel("x 0", { 255,255,255,255 }, App->font->openSansBold18, { 900,30 }, inGamePanel); + coins_label = App->gui->AddLabel("x 0", { 255,255,255,255 }, App->font->openSansSemiBold24, { 1090,26 }, inGamePanel); return true; } @@ -584,4 +605,12 @@ bool j1Scene::LoadPauseSettings(pugi::xml_node & nodeScene) pausePanel=App->gui->AddEmptyElement({ 0,0 }); LoadUiElement(pausePanel, settingPauseNode); return true; -} \ No newline at end of file +} + +bool j1Scene::LoadInventory(pugi::xml_node & nodeScene) +{ + pugi::xml_node inventoryNode = nodeScene.child("Inventory"); + inventory = App->gui->AddEmptyElement({ 0,0 }); + LoadUiElement(inventory, inventoryNode); + return true; +} diff --git a/Motor2D/j1Scene.h b/Motor2D/j1Scene.h index 08d2b7e4..d94f16d0 100644 --- a/Motor2D/j1Scene.h +++ b/Motor2D/j1Scene.h @@ -54,11 +54,14 @@ class j1Scene : public j1Module UiItem * startMenu = nullptr; UiItem * settingPanel = nullptr; UiItem * pausePanel = nullptr; + UiItem * inventory = nullptr; UiItem_Label * coins_label = nullptr; + SDL_Rect * lootPanelRect = nullptr; bool debug = false; bool exitGame = false; SceneState state = SceneState::STARTMENU; + private: SDL_Texture* debug_tex; @@ -76,6 +79,7 @@ class j1Scene : public j1Module bool LoadPlayerUi(pugi::xml_node& nodeScene); bool LoadSettings(pugi::xml_node& nodeScene); bool LoadPauseSettings(pugi::xml_node& nodeScene); + bool LoadInventory(pugi::xml_node& nodeScene); PlayerEntityManager* player_selected = nullptr; };