From af2d6ceb65e9c209d3f102829521cb64543b559d Mon Sep 17 00:00:00 2001 From: sireus Date: Fri, 14 Sep 2012 21:36:28 +0000 Subject: [PATCH] div=, div=f git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@6876 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- docs/reference.xml | 177 ++++++++++++++++++++++++++++------------- source/src/command.cpp | 8 +- 2 files changed, 127 insertions(+), 58 deletions(-) diff --git a/docs/reference.xml b/docs/reference.xml index a45a966c..1952feab 100644 --- a/docs/reference.xml +++ b/docs/reference.xml @@ -219,6 +219,69 @@ + + Performs a subtraction. + + + + + + + + + Performs a multiplication. + + + + + + + + + Performs an integer division. + + + + + + + + + Subtracts two floating-point numbers. + + + + + + + + + Adds up two floating-point numbers. + + + + + + + + + Performs a floating point multiplication. + + + + + + + + + Performs a division with floating-point precision. + + + + + + + Adds a value to an alias. @@ -246,70 +309,81 @@ - Multiplies a value and an alias. + Multiplies an alias by a value. Example: *= foo 1337 - + - - Performs a subtraction. + + Divides an alias by a value. + + + Example: div= foo 1337 + + - - - - - - - - Subtracts two floating-point numbers. - - - - - - - - - Adds up two floating-point numbers. - - - - - - - - - Performs a multiplication. - - - - - - - - - Performs an integer division. - - + - - - Performs a division with floating-point precision. + + Adds a floating-point value to an alias. + + + Example: +=f foo 13.37 + + - - + + + + + + + Subtracts a floating-point value from an alias. + + + Example: -=f foo 13.37 + + + + + + + + + + Multiplies an alias by a floating-point value. + + + Example: *=f foo 13.37 + + + + + + + + + + Divides an alias by a floating-point value. + + + Example: div=f foo 13.37 + + + + + - @@ -428,15 +502,6 @@ - - Performs a floating point multiplication. - - - - - - - Random value diff --git a/source/src/command.cpp b/source/src/command.cpp index b941fcc0..31e002da 100644 --- a/source/src/command.cpp +++ b/source/src/command.cpp @@ -266,7 +266,7 @@ void modifyvar(const char *name, const char *arg, char op) case '+': val += argval; break; case '-': val -= argval; break; case '*': val *= argval; break; - case '/': val /= argval; break; + case '/': val = argval ? val/argval : 0; break; } switch(id->type) { @@ -303,7 +303,7 @@ void modifyfvar(const char *name, const char *arg, char op) case '+': val += argval; break; case '-': val -= argval; break; case '*': val *= argval; break; - case '/': val /= argval; break; + case '/': val = (argval == 0.0f) ? 0 : val/argval; break; } switch(id->type) { @@ -319,16 +319,20 @@ void modifyfvar(const char *name, const char *arg, char op) void addeq(char *name, char *arg) { modifyvar(name, arg, '+'); } void subeq(char *name, char *arg) { modifyvar(name, arg, '-'); } void muleq(char *name, char *arg) { modifyvar(name, arg, '*'); } +void diveq(char *name, char *arg) { modifyvar(name, arg, '/'); } void addeqf(char *name, char *arg) { modifyfvar(name, arg, '+'); } void subeqf(char *name, char *arg) { modifyfvar(name, arg, '-'); } void muleqf(char *name, char *arg) { modifyfvar(name, arg, '*'); } +void diveqf(char *name, char *arg) { modifyfvar(name, arg, '/'); } COMMANDN(+=, addeq, ARG_2STR); COMMANDN(-=, subeq, ARG_2STR); COMMANDN(*=, muleq, ARG_2STR); +COMMANDN(div=, diveq, ARG_2STR); COMMANDN(+=f, addeqf, ARG_2STR); COMMANDN(-=f, subeqf, ARG_2STR); COMMANDN(*=f, muleqf, ARG_2STR); +COMMANDN(div=f, diveqf, ARG_2STR); int getvar(const char *name) {