summaryrefslogtreecommitdiff
path: root/sprite.h
diff options
context:
space:
mode:
authorpeter1138 <peter1138@openttd.org>2006-04-26 17:16:57 +0000
committerpeter1138 <peter1138@openttd.org>2006-04-26 17:16:57 +0000
commit2c5a6909a03e7c1900d910142258971add96f4b2 (patch)
tree62cccc7538927550dbf65c5232d52ea178bdc67f /sprite.h
parent8d622e04f8b98f530e030a6de3b282aebc4a49f5 (diff)
downloadopenttd-2c5a6909a03e7c1900d910142258971add96f4b2.tar.xz
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
Diffstat (limited to 'sprite.h')
-rw-r--r--sprite.h118
1 files changed, 2 insertions, 116 deletions
diff --git a/sprite.h b/sprite.h
index 1af416e1d..dccb9e090 100644
--- a/sprite.h
+++ b/sprite.h
@@ -41,124 +41,10 @@ typedef struct DrawBuildingsTileStruct {
#define foreach_draw_tile_seq(idx, list) for (idx = list; ((byte) idx->delta_x) != 0x80; idx++)
-/* This is for custom sprites: */
+// XXX Temporary include while juggling about
+#include "newgrf_spritegroup.h"
-typedef struct SpriteGroup SpriteGroup;
-
-typedef struct RealSpriteGroup {
- byte sprites_per_set; // means number of directions - 4 or 8
-
- // Loaded = in motion, loading = not moving
- // Each group contains several spritesets, for various loading stages
-
- // XXX: For stations the meaning is different - loaded is for stations
- // with small amount of cargo whilst loading is for stations with a lot
- // of da stuff.
-
- byte loaded_count; ///< Number of loaded groups
- SpriteGroup **loaded; ///< List of loaded groups (can be SpriteIDs or Callback results)
- byte loading_count; ///< Number of loading groups
- SpriteGroup **loading; ///< List of loading groups (can be SpriteIDs or Callback results)
-} RealSpriteGroup;
-
-/* Shared by deterministic and random groups. */
-typedef enum VarSpriteGroupScope {
- VSG_SCOPE_SELF,
- // Engine of consists for vehicles, city for stations.
- VSG_SCOPE_PARENT,
-} VarSpriteGroupScope;
-
-typedef struct DeterministicSpriteGroupRanges DeterministicSpriteGroupRanges;
-
-typedef enum DeterministicSpriteGroupOperation {
- DSG_OP_NONE,
- DSG_OP_DIV,
- DSG_OP_MOD,
-} DeterministicSpriteGroupOperation;
-
-typedef struct DeterministicSpriteGroupRange DeterministicSpriteGroupRange;
-
-typedef struct DeterministicSpriteGroup {
- // Take this variable:
- VarSpriteGroupScope var_scope;
- byte variable;
- byte parameter; ///< Used for variables between 0x60 and 0x7F inclusive.
-
- // Do this with it:
- byte shift_num;
- byte and_mask;
-
- // Then do this with it:
- DeterministicSpriteGroupOperation operation;
- byte add_val;
- byte divmod_val;
-
- // And apply it to this:
- byte num_ranges;
- DeterministicSpriteGroupRange *ranges; // Dynamically allocated
-
- // Dynamically allocated, this is the sole owner
- SpriteGroup *default_group;
-} DeterministicSpriteGroup;
-
-typedef enum RandomizedSpriteGroupCompareMode {
- RSG_CMP_ANY,
- RSG_CMP_ALL,
-} RandomizedSpriteGroupCompareMode;
-
-typedef struct RandomizedSpriteGroup {
- // Take this object:
- VarSpriteGroupScope var_scope;
-
- // Check for these triggers:
- RandomizedSpriteGroupCompareMode cmp_mode;
- byte triggers;
-
- // Look for this in the per-object randomized bitmask:
- byte lowest_randbit;
- byte num_groups; // must be power of 2
-
- // Take the group with appropriate index:
- SpriteGroup **groups;
-} RandomizedSpriteGroup;
-
-typedef struct CallbackResultSpriteGroup {
- uint16 result;
-} CallbackResultSpriteGroup;
-
-typedef struct ResultSpriteGroup {
- uint16 result;
- byte sprites;
-} ResultSpriteGroup;
-
-typedef enum SpriteGroupType {
- SGT_INVALID,
- SGT_REAL,
- SGT_DETERMINISTIC,
- SGT_RANDOMIZED,
- SGT_CALLBACK,
- SGT_RESULT,
-} SpriteGroupType;
-
-struct SpriteGroup {
- SpriteGroupType type;
-
- union {
- RealSpriteGroup real;
- DeterministicSpriteGroup determ;
- RandomizedSpriteGroup random;
- CallbackResultSpriteGroup callback;
- ResultSpriteGroup result;
- } g;
-};
-
-struct DeterministicSpriteGroupRange {
- SpriteGroup *group;
- byte low;
- byte high;
-};
-
/* This takes value (probably of the variable specified in the group) and
* chooses corresponding SpriteGroup accordingly to the given
* DeterministicSpriteGroup. */