mirror of https://github.com/OpenTTD/OpenTTD
(svn r4733) - NewGRF: remove remnants of old resolver code.
parent
ac18c6063a
commit
c768bfbba5
1
Makefile
1
Makefile
|
@ -669,7 +669,6 @@ SRCS += ship_gui.c
|
||||||
SRCS += signs.c
|
SRCS += signs.c
|
||||||
SRCS += smallmap_gui.c
|
SRCS += smallmap_gui.c
|
||||||
SRCS += sound.c
|
SRCS += sound.c
|
||||||
SRCS += sprite.c
|
|
||||||
SRCS += spritecache.c
|
SRCS += spritecache.c
|
||||||
SRCS += station_cmd.c
|
SRCS += station_cmd.c
|
||||||
SRCS += station_gui.c
|
SRCS += station_gui.c
|
||||||
|
|
99
sprite.c
99
sprite.c
|
@ -1,99 +0,0 @@
|
||||||
/* $Id$ */
|
|
||||||
|
|
||||||
#include "stdafx.h"
|
|
||||||
#include "openttd.h"
|
|
||||||
#include "sprite.h"
|
|
||||||
#include "variables.h"
|
|
||||||
#include "debug.h"
|
|
||||||
|
|
||||||
|
|
||||||
SpriteGroup *EvalDeterministicSpriteGroup(const DeterministicSpriteGroup *dsg, int value)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
value >>= dsg->adjusts[0].shift_num; // This should bring us to the byte range.
|
|
||||||
value &= dsg->adjusts[0].and_mask;
|
|
||||||
|
|
||||||
if (dsg->adjusts[0].operation != DSGA_TYPE_NONE)
|
|
||||||
value += (signed char) dsg->adjusts[0].add_val;
|
|
||||||
|
|
||||||
switch (dsg->adjusts[0].type) {
|
|
||||||
case DSGA_TYPE_DIV:
|
|
||||||
value /= (signed char) dsg->adjusts[0].divmod_val;
|
|
||||||
break;
|
|
||||||
case DSGA_TYPE_MOD:
|
|
||||||
value %= (signed char) dsg->adjusts[0].divmod_val;
|
|
||||||
break;
|
|
||||||
case DSGA_TYPE_NONE:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < dsg->num_ranges; i++) {
|
|
||||||
DeterministicSpriteGroupRange *range = &dsg->ranges[i];
|
|
||||||
|
|
||||||
if (range->low <= (uint32)value && (uint32)value <= range->high)
|
|
||||||
return range->group;
|
|
||||||
}
|
|
||||||
|
|
||||||
return dsg->default_group;
|
|
||||||
}
|
|
||||||
|
|
||||||
int GetDeterministicSpriteValue(byte var)
|
|
||||||
{
|
|
||||||
switch (var) {
|
|
||||||
case 0x00:
|
|
||||||
return _date;
|
|
||||||
case 0x01:
|
|
||||||
return _cur_year;
|
|
||||||
case 0x02:
|
|
||||||
return _cur_month;
|
|
||||||
case 0x03:
|
|
||||||
return _opt.landscape;
|
|
||||||
case 0x09:
|
|
||||||
return _date_fract;
|
|
||||||
case 0x0A:
|
|
||||||
return _tick_counter;
|
|
||||||
case 0x0C:
|
|
||||||
/* If we got here, it means there was no callback or
|
|
||||||
* callbacks aren't supported on our callpath. */
|
|
||||||
return 0;
|
|
||||||
default:
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SpriteGroup *EvalRandomizedSpriteGroup(const RandomizedSpriteGroup *rsg, byte random_bits)
|
|
||||||
{
|
|
||||||
byte mask;
|
|
||||||
byte index;
|
|
||||||
|
|
||||||
/* Noone likes mangling with bits, but you don't get around it here.
|
|
||||||
* Sorry. --pasky */
|
|
||||||
// rsg->num_groups is always power of 2
|
|
||||||
mask = (rsg->num_groups - 1) << rsg->lowest_randbit;
|
|
||||||
index = (random_bits & mask) >> rsg->lowest_randbit;
|
|
||||||
assert(index < rsg->num_groups);
|
|
||||||
return rsg->groups[index];
|
|
||||||
}
|
|
||||||
|
|
||||||
byte RandomizedSpriteGroupTriggeredBits(const RandomizedSpriteGroup *rsg,
|
|
||||||
byte triggers, byte *waiting_triggers)
|
|
||||||
{
|
|
||||||
byte match = rsg->triggers & (*waiting_triggers | triggers);
|
|
||||||
bool res;
|
|
||||||
|
|
||||||
if (rsg->cmp_mode == RSG_CMP_ANY) {
|
|
||||||
res = (match != 0);
|
|
||||||
} else { /* RSG_CMP_ALL */
|
|
||||||
res = (match == rsg->triggers);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!res) {
|
|
||||||
*waiting_triggers |= triggers;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
*waiting_triggers &= ~match;
|
|
||||||
|
|
||||||
return (rsg->num_groups - 1) << rsg->lowest_randbit;
|
|
||||||
}
|
|
16
sprite.h
16
sprite.h
|
@ -45,20 +45,4 @@ typedef struct DrawBuildingsTileStruct {
|
||||||
#include "newgrf_spritegroup.h"
|
#include "newgrf_spritegroup.h"
|
||||||
|
|
||||||
|
|
||||||
/* This takes value (probably of the variable specified in the group) and
|
|
||||||
* chooses corresponding SpriteGroup accordingly to the given
|
|
||||||
* DeterministicSpriteGroup. */
|
|
||||||
SpriteGroup *EvalDeterministicSpriteGroup(const DeterministicSpriteGroup *dsg, int value);
|
|
||||||
/* Get value of a common deterministic SpriteGroup variable. */
|
|
||||||
int GetDeterministicSpriteValue(byte var);
|
|
||||||
|
|
||||||
/* This takes randomized bitmask (probably associated with
|
|
||||||
* vehicle/station/whatever) and chooses corresponding SpriteGroup
|
|
||||||
* accordingly to the given RandomizedSpriteGroup. */
|
|
||||||
SpriteGroup *EvalRandomizedSpriteGroup(const RandomizedSpriteGroup *rsg, byte random_bits);
|
|
||||||
/* Triggers given RandomizedSpriteGroup with given bitmask and returns and-mask
|
|
||||||
* of random bits to be reseeded, or zero if there were no triggers matched
|
|
||||||
* (then they are |ed to @waiting_triggers instead). */
|
|
||||||
byte RandomizedSpriteGroupTriggeredBits(const RandomizedSpriteGroup *rsg, byte triggers, byte *waiting_triggers);
|
|
||||||
|
|
||||||
#endif /* SPRITE_H */
|
#endif /* SPRITE_H */
|
||||||
|
|
Loading…
Reference in New Issue