From 77426ad1d3ad976f86a647d80eeb586b122405c1 Mon Sep 17 00:00:00 2001 From: ryan <> Date: Wed, 4 Jun 2014 04:22:56 +0000 Subject: [PATCH] Some fixes to the last commit --- src/sbs/control.cpp | 29 ++++++++++++----------------- src/sbs/control.h | 2 +- src/sbs/trigger.cpp | 31 +++++++++++++------------------ src/sbs/trigger.h | 2 +- 4 files changed, 27 insertions(+), 37 deletions(-) diff --git a/src/sbs/control.cpp b/src/sbs/control.cpp index 1e6f2837..c3c429a3 100644 --- a/src/sbs/control.cpp +++ b/src/sbs/control.cpp @@ -358,7 +358,7 @@ int Control::FindNumericActionPosition() return 0; } -void Control::DoAction(bool &result, int &action_count) +bool Control::DoAction() { //perform object's action //result is true if at least one action in the list succeeded @@ -370,9 +370,8 @@ void Control::DoAction(bool &result, int &action_count) else actionlist.push_back(Actions[current_position - 1]); - result = false; - action_count = (int)actionlist.size(); - for (int i = 0; i < action_count; i++) + bool result = false; + for (int i = 0; i < (int)actionlist.size(); i++) { bool result2 = false; @@ -382,6 +381,7 @@ void Control::DoAction(bool &result, int &action_count) if (result2 == true) result = true; } + return result; } bool Control::Press() @@ -403,21 +403,16 @@ bool Control::Press() NextSelectPosition(); //run action - bool result = false; - int count = 0; - DoAction(result, count); + bool result = DoAction(); - //change back to original selection if a numeric action returns false - //(elevator is on the same floor, and doors are reopened) - //or if only one action was listed, and the result is false - if ((IsNumeric(name.c_str()) || count == 1) && result == false) - { - PreviousSelectPosition(); - return false; - } + //play sound if action succeeded + //or always if the name is numeric (elevator is on the same floor, and doors are reopened) + if (result == true || IsNumeric(name.c_str())) + PlaySound(); - //play sound - PlaySound(); + //change back to original selection if result is false + if (result == false) + PreviousSelectPosition(); return result; } diff --git a/src/sbs/control.h b/src/sbs/control.h index 627b4ea2..fc6bbb61 100644 --- a/src/sbs/control.h +++ b/src/sbs/control.h @@ -60,7 +60,7 @@ public: void SetTexture(int position, const char *texture); int FindActionPosition(const char *name); int FindNumericActionPosition(); - void DoAction(bool &result, int &action_count); + bool DoAction(); bool Press(); void ChangeFloorLight(int floor, bool value); void ChangeLight(bool value); diff --git a/src/sbs/trigger.cpp b/src/sbs/trigger.cpp index 9e384710..007fde71 100644 --- a/src/sbs/trigger.cpp +++ b/src/sbs/trigger.cpp @@ -246,17 +246,16 @@ int Trigger::FindActionPosition(const char *name) return 0; } -void Trigger::DoAction(bool &result, int &action_count) +bool Trigger::DoAction() { //perform trigger's action //result is true if at least one action in the list succeeded std::vector actionlist = sbs->GetAction(Actions[current_position - 1]); - result = false; - action_count = (int)actionlist.size(); + bool result = false; - for (int i = 0; i < action_count; i++) + for (int i = 0; i < (int)actionlist.size(); i++) { bool result2 = false; @@ -266,6 +265,7 @@ void Trigger::DoAction(bool &result, int &action_count) if (result2 == true) result = true; } + return result; } bool Trigger::Check() @@ -309,21 +309,16 @@ bool Trigger::Check() NextSelectPosition(); //perform selected action - bool result = false; - int count = 0; - DoAction(result, count); - - //change back to original selection if a numeric action returns false - //(elevator is on the same floor, and doors are reopened) - //or if only one action was listed, and the result is false - if ((IsNumeric(name.c_str()) || count == 1) && result == false) - { - PreviousSelectPosition(); - return false; - } + bool result = DoAction(); + + //play sound if action succeeded + //or always if the name is numeric (elevator is on the same floor, and doors are reopened) + if (result == true || IsNumeric(name.c_str())) + PlaySound(); - //play sound - PlaySound(); + //change back to original selection if result is false + if (result == false) + PreviousSelectPosition(); return result; } diff --git a/src/sbs/trigger.h b/src/sbs/trigger.h index de7d0631..79dc6004 100644 --- a/src/sbs/trigger.h +++ b/src/sbs/trigger.h @@ -57,7 +57,7 @@ public: int GetPositions(); void PlaySound(); int FindActionPosition(const char *name); - void DoAction(bool &result, int &action_count); + bool DoAction(); bool Check(); private: -- 2.11.0