Skip to content

Commit

Permalink
Implements "Give Credits" trigger action.
Browse files Browse the repository at this point in the history
  • Loading branch information
CCHyper committed Jun 12, 2021
1 parent 5d0a2db commit 1efffb6
Show file tree
Hide file tree
Showing 4 changed files with 131 additions and 0 deletions.
69 changes: 69 additions & 0 deletions src/extensions/taction/tactionext_functions.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/*******************************************************************************
/* O P E N S O U R C E -- V I N I F E R A **
/*******************************************************************************
*
* @project Vinifera
*
* @file TACTIONEXT_FUNCTIONS.CPP
*
* @author CCHyper
*
* @brief Contains the supporting functions for the extended TActionClass.
*
* @license Vinifera is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version
* 3 of the License, or (at your option) any later version.
*
* Vinifera is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program.
* If not, see <http://www.gnu.org/licenses/>.
*
******************************************************************************/
#include "tactionext_functions.h"
#include "vinifera_defines.h"
#include "taction.h"
#include "house.h"
#include "housetype.h"
#include "object.h"
#include "objecttype.h"
#include "trigger.h"
#include "triggertype.h"
#include "debughandler.h"
#include "asserthandler.h"


/**
* #issue-158
*
* Gives credits to the owner of the trigger.
*
* @author: CCHyper
*/
bool TAction_Give_Credits(TActionClass *taction, HouseClass *house, ObjectClass *object, TriggerClass *trigger, Cell *cell)
{
if (!taction || !house) {
return false;
}

int amount = taction->Data.Value;

/**
* If positive, grant the cash bonus.
* If negative, take money from the house.
*/
if (amount != 0) {
if (amount < 0) {
house->Spend_Money(std::abs(amount));
} else {
house->Refund_Money(amount);
}
}

return true;
}
40 changes: 40 additions & 0 deletions src/extensions/taction/tactionext_functions.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/*******************************************************************************
/* O P E N S O U R C E -- V I N I F E R A **
/*******************************************************************************
*
* @project Vinifera
*
* @file TACTIONEXT_FUNCTIONS.H
*
* @author CCHyper
*
* @brief Contains the supporting functions for the extended TActionClass.
*
* @license Vinifera is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version
* 3 of the License, or (at your option) any later version.
*
* Vinifera is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program.
* If not, see <http://www.gnu.org/licenses/>.
*
******************************************************************************/
#pragma once

#include "always.h"
#include "tibsun_defines.h"


class TActionClass;
class HouseClass;
class ObjectClass;
class TriggerClass;


bool TAction_Give_Credits(TActionClass *taction, HouseClass *house, ObjectClass *object, TriggerClass *trigger, Cell *cell);
20 changes: 20 additions & 0 deletions src/extensions/taction/tactionext_hooks.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
*
******************************************************************************/
#include "tactionext_hooks.h"
#include "tactionext_functions.h"
#include "taction.h"
#include "vinifera_defines.h"
#include "house.h"
Expand Down Expand Up @@ -54,6 +55,10 @@ static const char *TActionClass_New_Action_Name(int action)
}

switch (action) {

case TACTION_CREDITS:
return "Give credits...";

default:
return "<invalid>";
}
Expand All @@ -72,6 +77,10 @@ static const char *TActionClass_New_Action_Description(int action)
}

switch (action) {

case TACTION_CREDITS:
return "Gives credits to the owner of the trigger.";

default:
return "<invalid>";
}
Expand Down Expand Up @@ -131,6 +140,17 @@ DECLARE_PATCH(_TAction_Operator_Extend_Switch_Patch)

switch (this_ptr->Action) {

/**
* #issue-158
*
* Gives credits to the owner of the trigger.
*
* @author: CCHyper
*/
case TACTION_CREDITS:
success = TAction_Give_Credits(this_ptr, house, object, trigger, cell);
break;

/**
* Unexpected TActionType.
*/
Expand Down
2 changes: 2 additions & 0 deletions src/vinifera_defines.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ typedef enum NewTActionType
* Add new TActionTypes from here, do not reorder these!
*/

TACTION_CREDITS, // Gives credits to the owner of the trigger.

/**
* The new total TActionType count.
*/
Expand Down

0 comments on commit 1efffb6

Please sign in to comment.