diff options
Diffstat (limited to 'src/gamestate.cpp')
-rw-r--r-- | src/gamestate.cpp | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/src/gamestate.cpp b/src/gamestate.cpp index 57dbe2f..285c151 100644 --- a/src/gamestate.cpp +++ b/src/gamestate.cpp | |||
@@ -427,34 +427,28 @@ void GameState::parse( const AstBranch::NodeList &lCode ) | |||
427 | case AstNode::tPlusStore: | 427 | case AstNode::tPlusStore: |
428 | { | 428 | { |
429 | Variable y = popDeref(); | 429 | Variable y = popDeref(); |
430 | Variable x = pop(); | 430 | deref( lStack.peek(), true ) += y; |
431 | deref( x ) += y; | ||
432 | } | 431 | } |
433 | break; | 432 | break; |
434 | 433 | ||
435 | case AstNode::tMinusStore: | 434 | case AstNode::tMinusStore: |
436 | { | 435 | { |
437 | Variable y = popDeref(); | 436 | Variable y = popDeref(); |
438 | Variable x = pop(); | 437 | deref( lStack.peek(), true ) -= y; |
439 | deref( x ) -= y; | ||
440 | } | 438 | } |
441 | break; | 439 | break; |
442 | 440 | ||
443 | case AstNode::tDivideStore: | 441 | case AstNode::tDivideStore: |
444 | { | 442 | { |
445 | Variable y = popDeref(); | 443 | Variable y = popDeref(); |
446 | Variable x = pop(); | 444 | deref( lStack.peek(), true ) /= y; |
447 | VariableRef r = x.getVariableRef(); | ||
448 | setVariable( r.sName, getVariable( r.sName, r.sid ) / y, r.sid ); | ||
449 | } | 445 | } |
450 | break; | 446 | break; |
451 | 447 | ||
452 | case AstNode::tMultiplyStore: | 448 | case AstNode::tMultiplyStore: |
453 | { | 449 | { |
454 | Variable y = popDeref(); | 450 | Variable y = popDeref(); |
455 | Variable x = pop(); | 451 | deref( lStack.peek(), true ) *= y; |
456 | VariableRef r = x.getVariableRef(); | ||
457 | setVariable( r.sName, getVariable( r.sName, r.sid ) * y, r.sid ); | ||
458 | } | 452 | } |
459 | break; | 453 | break; |
460 | 454 | ||