summaryrefslogtreecommitdiff
path: root/src/newgrf_spritegroup.cpp
diff options
context:
space:
mode:
authormaedhros <maedhros@openttd.org>2007-01-12 11:20:34 +0000
committermaedhros <maedhros@openttd.org>2007-01-12 11:20:34 +0000
commit4ae861880bda8a0882db1a6bd1e82cff003248a6 (patch)
treeb908ffc45eacd441ee01360329e463991af50290 /src/newgrf_spritegroup.cpp
parent5afd50017de25527e0d3334e9515e82a0299fe31 (diff)
downloadopenttd-4ae861880bda8a0882db1a6bd1e82cff003248a6.tar.xz
(svn r8075) -Feature: Add support for variable 7E - subroutines. (peter1138)
Diffstat (limited to 'src/newgrf_spritegroup.cpp')
-rw-r--r--src/newgrf_spritegroup.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/newgrf_spritegroup.cpp b/src/newgrf_spritegroup.cpp
index e187ddd9f..97e0114e2 100644
--- a/src/newgrf_spritegroup.cpp
+++ b/src/newgrf_spritegroup.cpp
@@ -5,6 +5,7 @@
#include "variables.h"
#include "macros.h"
#include "oldpool.h"
+#include "newgrf_callbacks.h"
#include "newgrf_spritegroup.h"
#include "date.h"
@@ -142,7 +143,16 @@ static inline const SpriteGroup *ResolveVariable(const SpriteGroup *group, Resol
/* Try to get the variable. We shall assume it is available, unless told otherwise. */
bool available = true;
- value = GetVariable(object, adjust->variable, adjust->parameter, &available);
+ if (adjust->variable == 0x7E) {
+ const SpriteGroup *subgroup = Resolve(adjust->subroutine, object);
+ if (subgroup == NULL || subgroup->type != SGT_CALLBACK) {
+ value = CALLBACK_FAILED;
+ } else {
+ value = subgroup->g.callback.result;
+ }
+ } else {
+ value = GetVariable(object, adjust->variable, adjust->parameter, &available);
+ }
if (!available) {
/* Unsupported property: skip further processing and return either