From 585489611b6866fed0f08e818b23999732cfe3a2 Mon Sep 17 00:00:00 2001 From: Valentin Ochs Date: Thu, 12 Jan 2017 23:35:10 +0100 Subject: [PATCH] [foodholders] Foodholder changes - Add convenience functions toggleValid() and isValid() to wrap around the alpha/alphaMod members - Fix bug #37 that allows cooking with the third slot at all times --- Aquaria/Game.cpp | 32 +++++++++++++++++++------------- Aquaria/Game.h | 2 ++ 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/Aquaria/Game.cpp b/Aquaria/Game.cpp index 19ce959..dae84d0 100644 --- a/Aquaria/Game.cpp +++ b/Aquaria/Game.cpp @@ -212,6 +212,11 @@ bool FoodHolder::isEmpty() return (foodHolderIngredient == 0); } +bool FoodHolder::isValid() +{ + return this->alpha.x > 0 && this->alphaMod > 0; +} + IngredientData *FoodHolder::getIngredient() { return foodHolderIngredient; @@ -264,6 +269,10 @@ void FoodHolder::setIngredient(IngredientData *i, bool effects) } } +void FoodHolder::toggleValid(bool v) { + this->alpha = this->alphaMod = (float) v; +} + void Game::enqueuePreviewRecipe() { enqueuedPreviewRecipe = 1; @@ -477,7 +486,7 @@ void FoodSlot::moveRight() for (int i = foodHolders.size()-1; i >= 0; i--) { - if (foodHolders[i]->alpha.x > 0 && foodHolders[i]->alphaMod > 0 && foodHolders[i]->isEmpty() && !foodHolders[i]->isTrash()) + if (foodHolders[i]->isValid() && foodHolders[i]->isEmpty() && !foodHolders[i]->isTrash()) { foodHolders[i]->setIngredient(ingredient); inCookSlot = true; @@ -564,7 +573,7 @@ void FoodSlot::onUpdate(float dt) break; //return; } - else if (foodHolders[i]->isEmpty()) + else if (foodHolders[i]->isEmpty() && foodHolders[i]->isValid()) { foodHolders[i]->setIngredient(ingredient); inCookSlot = true; @@ -3746,7 +3755,7 @@ void Game::createInGameMenu() for (i = 0; i < foodHolders.size(); i++) { foodHolders[i] = new FoodHolder(i); - foodHolders[i]->alpha = 0; + foodHolders[i]->toggleValid(false); float angle = (float(holders)/float(foodHolders.size()))*PI*2; foodHolders[i]->position = rightCenter + Vector(sinf(angle), cosf(angle))*radius; @@ -3833,7 +3842,7 @@ void Game::createInGameMenu() foodHolders.resize(4); foodHolders[3] = new FoodHolder(-1, true); - foodHolders[3]->alpha = 0; + foodHolders[3]->toggleValid(false); foodHolders[3]->position = rightCenter + Vector(96, 150); menuBg->addChild(foodHolders[3], PM_POINTER); @@ -6079,7 +6088,7 @@ void Game::action(int id, int state) int trashIndex = -1; for (int i = 0; i < foodHolders.size(); i++) { - if (foodHolders[i]->alpha.x > 0 && foodHolders[i]->alphaMod > 0 && foodHolders[i]->isTrash()) + if (foodHolders[i]->isValid() && foodHolders[i]->isTrash()) { trashIndex = i; break; @@ -7394,7 +7403,7 @@ void Game::onCook() longAnim = false; for (int i = foodHolders.size()-1; i >= 0; i--) - if (foodHolders[i]->alpha.x > 0 && !foodHolders[i]->isEmpty() && !foodHolders[i]->isTrash()) + if (foodHolders[i]->isValid() && !foodHolders[i]->isEmpty() && !foodHolders[i]->isTrash()) foodHolders[i]->animateLid(true, longAnim); //dsq->main(0.2); @@ -7482,7 +7491,7 @@ void Game::onCook() dsq->sound->playSfx("Cook"); for (int i = 0; i < foodHolders.size(); i++) - if (foodHolders[i]->alpha.x > 0 && !foodHolders[i]->isTrash()) + if (foodHolders[i]->isValid() && !foodHolders[i]->isTrash()) foodHolders[i]->animateLid(false); dsq->spawnParticleEffect("cook-food", Vector(575,250), 0, 0, LR_HUD3, 1); @@ -9066,10 +9075,7 @@ void Game::toggleFoodMenu(bool f) for (int i = 0; i < foodHolders.size(); i++) { - if (f) - foodHolders[i]->alpha = 1; - else - foodHolders[i]->alpha = 0; + foodHolders[i]->toggleValid(f); } if (f) @@ -9082,11 +9088,11 @@ void Game::toggleFoodMenu(bool f) && p->isCoordinateInside(dsq->game->avatar->position))) { //cook->alpha = 1; - foodHolders[0]->alpha = 1; + foodHolders[0]->toggleValid(true); } else { - foodHolders[0]->alpha = 0; + foodHolders[0]->toggleValid(false); } } } diff --git a/Aquaria/Game.h b/Aquaria/Game.h index 526a1d8..e7c07e4 100644 --- a/Aquaria/Game.h +++ b/Aquaria/Game.h @@ -283,7 +283,9 @@ public: bool isEmpty(); bool isTrash(); + bool isValid(); void setIngredient(IngredientData *i, bool effects=true); + void toggleValid(bool v); void dropFood(); IngredientData *getIngredient(); void animateLid(bool down, bool longAnim=true);