author | rubidium |
Thu, 01 Feb 2007 15:49:12 +0000 | |
changeset 5893 | 7e431a4abebb |
parent 5617 | 07de31c05f46 |
child 6247 | 7d81e3a5d803 |
permissions | -rw-r--r-- |
3595
a0acdb23e662
(svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff
changeset
|
1 |
/* $Id$ */ |
a0acdb23e662
(svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff
changeset
|
2 |
|
a0acdb23e662
(svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff
changeset
|
3 |
#ifndef NEWGRF_SPRITEGROUP_H |
a0acdb23e662
(svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff
changeset
|
4 |
#define NEWGRF_SPRITEGROUP_H |
a0acdb23e662
(svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff
changeset
|
5 |
|
3664
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
6 |
|
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
7 |
typedef struct SpriteGroup SpriteGroup; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
8 |
|
3668
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
9 |
|
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
10 |
/* 'Real' sprite groups contain a list of other result or callback sprite |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
11 |
* groups. */ |
3664
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
12 |
typedef struct RealSpriteGroup { |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
13 |
// Loaded = in motion, loading = not moving |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
14 |
// Each group contains several spritesets, for various loading stages |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
15 |
|
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
16 |
// XXX: For stations the meaning is different - loaded is for stations |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
17 |
// with small amount of cargo whilst loading is for stations with a lot |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
18 |
// of da stuff. |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
19 |
|
3668
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
20 |
byte num_loaded; ///< Number of loaded groups |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
21 |
byte num_loading; ///< Number of loading groups |
4892
cafd96f10c1e
(svn r6836) - Codechange: constify SpriteGroup references. These used to be non-const when we kept a reference count, which we don't do anymore.
peter1138
parents:
4817
diff
changeset
|
22 |
const SpriteGroup **loaded; ///< List of loaded groups (can be SpriteIDs or Callback results) |
cafd96f10c1e
(svn r6836) - Codechange: constify SpriteGroup references. These used to be non-const when we kept a reference count, which we don't do anymore.
peter1138
parents:
4817
diff
changeset
|
23 |
const SpriteGroup **loading; ///< List of loading groups (can be SpriteIDs or Callback results) |
3664
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
24 |
} RealSpriteGroup; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
25 |
|
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
26 |
/* Shared by deterministic and random groups. */ |
3668
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
27 |
typedef enum VarSpriteGroupScopes { |
3664
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
28 |
VSG_SCOPE_SELF, |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
29 |
// Engine of consists for vehicles, city for stations. |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
30 |
VSG_SCOPE_PARENT, |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
31 |
} VarSpriteGroupScope; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
32 |
|
3668
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
33 |
typedef enum DeterministicSpriteGroupSizes { |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
34 |
DSG_SIZE_BYTE, |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
35 |
DSG_SIZE_WORD, |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
36 |
DSG_SIZE_DWORD, |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
37 |
} DeterministicSpriteGroupSize; |
3664
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
38 |
|
3668
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
39 |
typedef enum DeterministicSpriteGroupAdjustTypes { |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
40 |
DSGA_TYPE_NONE, |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
41 |
DSGA_TYPE_DIV, |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
42 |
DSGA_TYPE_MOD, |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
43 |
} DeterministicSpriteGroupAdjustType; |
3664
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
44 |
|
3668
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
45 |
typedef enum DeterministicSpriteGroupAdjustOperations { |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
46 |
DSGA_OP_ADD, // a + b |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
47 |
DSGA_OP_SUB, // a - b |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
48 |
DSGA_OP_SMIN, // (signed) min(a, b) |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
49 |
DSGA_OP_SMAX, // (signed) max(a, b) |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
50 |
DSGA_OP_UMIN, // (unsigned) min(a, b) |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
51 |
DSGA_OP_UMAX, // (unsigned) max(a, b) |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
52 |
DSGA_OP_SDIV, // (signed) a / b |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
53 |
DSGA_OP_SMOD, // (signed) a % b |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
54 |
DSGA_OP_UDIV, // (unsigned) a / b |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
55 |
DSGA_OP_UMOD, // (unsigned) a & b |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
56 |
DSGA_OP_MUL, // a * b |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
57 |
DSGA_OP_AND, // a & b |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
58 |
DSGA_OP_OR, // a | b |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
59 |
DSGA_OP_XOR, // a ^ b |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
60 |
} DeterministicSpriteGroupAdjustOperation; |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
61 |
|
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
62 |
|
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
63 |
typedef struct DeterministicSpriteGroupAdjust { |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
64 |
DeterministicSpriteGroupAdjustOperation operation; |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
65 |
DeterministicSpriteGroupAdjustType type; |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
66 |
byte variable; |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
67 |
byte parameter; ///< Used for variables between 0x60 and 0x7F inclusive. |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
68 |
byte shift_num; |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
69 |
uint32 and_mask; |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
70 |
uint32 add_val; |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
71 |
uint32 divmod_val; |
5617
07de31c05f46
(svn r8075) -Feature: Add support for variable 7E - subroutines. (peter1138)
maedhros
parents:
5475
diff
changeset
|
72 |
const SpriteGroup *subroutine; |
3668
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
73 |
} DeterministicSpriteGroupAdjust; |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
74 |
|
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
75 |
|
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
76 |
typedef struct DeterministicSpriteGroupRange { |
4892
cafd96f10c1e
(svn r6836) - Codechange: constify SpriteGroup references. These used to be non-const when we kept a reference count, which we don't do anymore.
peter1138
parents:
4817
diff
changeset
|
77 |
const SpriteGroup *group; |
3668
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
78 |
uint32 low; |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
79 |
uint32 high; |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
80 |
} DeterministicSpriteGroupRange; |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
81 |
|
3664
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
82 |
|
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
83 |
typedef struct DeterministicSpriteGroup { |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
84 |
VarSpriteGroupScope var_scope; |
3668
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
85 |
DeterministicSpriteGroupSize size; |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
86 |
byte num_adjusts; |
3664
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
87 |
byte num_ranges; |
3668
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
88 |
DeterministicSpriteGroupAdjust *adjusts; |
3664
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
89 |
DeterministicSpriteGroupRange *ranges; // Dynamically allocated |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
90 |
|
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
91 |
// Dynamically allocated, this is the sole owner |
4892
cafd96f10c1e
(svn r6836) - Codechange: constify SpriteGroup references. These used to be non-const when we kept a reference count, which we don't do anymore.
peter1138
parents:
4817
diff
changeset
|
92 |
const SpriteGroup *default_group; |
3664
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
93 |
} DeterministicSpriteGroup; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
94 |
|
3668
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
95 |
typedef enum RandomizedSpriteGroupCompareModes { |
3664
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
96 |
RSG_CMP_ANY, |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
97 |
RSG_CMP_ALL, |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
98 |
} RandomizedSpriteGroupCompareMode; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
99 |
|
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
100 |
typedef struct RandomizedSpriteGroup { |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
101 |
// Take this object: |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
102 |
VarSpriteGroupScope var_scope; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
103 |
|
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
104 |
// Check for these triggers: |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
105 |
RandomizedSpriteGroupCompareMode cmp_mode; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
106 |
byte triggers; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
107 |
|
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
108 |
// Look for this in the per-object randomized bitmask: |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
109 |
byte lowest_randbit; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
110 |
byte num_groups; // must be power of 2 |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
111 |
|
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
112 |
// Take the group with appropriate index: |
4892
cafd96f10c1e
(svn r6836) - Codechange: constify SpriteGroup references. These used to be non-const when we kept a reference count, which we don't do anymore.
peter1138
parents:
4817
diff
changeset
|
113 |
const SpriteGroup **groups; |
3664
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
114 |
} RandomizedSpriteGroup; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
115 |
|
3668
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
116 |
|
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
117 |
/* This contains a callback result. A failed callback has a value of |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
118 |
* CALLBACK_FAILED */ |
3664
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
119 |
typedef struct CallbackResultSpriteGroup { |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
120 |
uint16 result; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
121 |
} CallbackResultSpriteGroup; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
122 |
|
3668
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
123 |
|
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
124 |
/* A result sprite group returns the first SpriteID and the number of |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
125 |
* sprites in the set */ |
3664
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
126 |
typedef struct ResultSpriteGroup { |
3668
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
127 |
SpriteID sprite; |
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
128 |
byte num_sprites; |
3664
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
129 |
} ResultSpriteGroup; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
130 |
|
3668
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
131 |
/* List of different sprite group types */ |
3664
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
132 |
typedef enum SpriteGroupType { |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
133 |
SGT_INVALID, |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
134 |
SGT_REAL, |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
135 |
SGT_DETERMINISTIC, |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
136 |
SGT_RANDOMIZED, |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
137 |
SGT_CALLBACK, |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
138 |
SGT_RESULT, |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
139 |
} SpriteGroupType; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
140 |
|
3668
42325f12e7d8
(svn r4583) - NewGRF: Revamp sprite group loading to support advanced varadjusts and variable size. These are not yet processed, however.
peter1138
parents:
3664
diff
changeset
|
141 |
/* Common wrapper for all the different sprite group types */ |
3664
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
142 |
struct SpriteGroup { |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
143 |
SpriteGroupType type; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
144 |
|
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
145 |
union { |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
146 |
RealSpriteGroup real; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
147 |
DeterministicSpriteGroup determ; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
148 |
RandomizedSpriteGroup random; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
149 |
CallbackResultSpriteGroup callback; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
150 |
ResultSpriteGroup result; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
151 |
} g; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
152 |
}; |
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
153 |
|
4f810b1ea216
(svn r4579) - NewGRF: move sprite group struct to newgrf_spritegroup.h. Temporary include in sprite.h until new spritegroup code is in place.
peter1138
parents:
3595
diff
changeset
|
154 |
|
3595
a0acdb23e662
(svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff
changeset
|
155 |
SpriteGroup *AllocateSpriteGroup(void); |
a0acdb23e662
(svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff
changeset
|
156 |
void InitializeSpriteGroupPool(void); |
a0acdb23e662
(svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff
changeset
|
157 |
|
3677
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
158 |
|
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
159 |
typedef struct ResolverObject { |
3724
1b2d907fbd33
(svn r4697) - NewGRF: callback IDs can now be 16 bit values.
peter1138
parents:
3720
diff
changeset
|
160 |
uint16 callback; |
3677
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
161 |
uint32 callback_param1; |
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
162 |
uint32 callback_param2; |
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
163 |
|
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
164 |
byte trigger; |
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
165 |
uint32 last_value; |
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
166 |
uint32 reseed; |
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
167 |
VarSpriteGroupScope scope; |
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
168 |
|
4056
7899dc230a12
(svn r5336) - NewGRF: draw custom helicopter rotor sprites in vehicle info window, ensuring the correct direction is used (inspiration from mart3p)
peter1138
parents:
3893
diff
changeset
|
169 |
bool info_view; ///< Indicates if the item is being drawn in an info window |
7899dc230a12
(svn r5336) - NewGRF: draw custom helicopter rotor sprites in vehicle info window, ensuring the correct direction is used (inspiration from mart3p)
peter1138
parents:
3893
diff
changeset
|
170 |
|
3677
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
171 |
union { |
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
172 |
struct { |
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
173 |
const struct Vehicle *self; |
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
174 |
const struct Vehicle *parent; |
4057
863fce30596d
(svn r5337) - NewGRF: pass the engine type to the engine resolver, to allow support for variable 7F for unbuilt vehicles (mart3p)
peter1138
parents:
4056
diff
changeset
|
175 |
EngineID self_type; |
3677
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
176 |
} vehicle; |
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
177 |
struct { |
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
178 |
TileIndex tile; |
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
179 |
const struct Station *st; |
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
180 |
const struct StationSpec *statspec; |
4817
116374e1a5f1
(svn r6741) - Codechange: Simplify and unify resolving of station groups, and use the first available cargo type instead of only the default.
peter1138
parents:
4057
diff
changeset
|
181 |
CargoID cargo_type; |
3677
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
182 |
} station; |
3720
8a82d64ea485
(svn r4691) - Codechange: don't use unnamed unions as GCC 2.95.ancient won't compile it. Needed for our MorphOS user ;)
peter1138
parents:
3677
diff
changeset
|
183 |
} u; |
3677
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
184 |
|
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
185 |
uint32 (*GetRandomBits)(const struct ResolverObject*); |
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
186 |
uint32 (*GetTriggers)(const struct ResolverObject*); |
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
187 |
void (*SetTriggers)(const struct ResolverObject*, int); |
3893
ced26054ee00
(svn r4960) - NewGRF: explicitly handle unsupported variables, instead of returning -1.
peter1138
parents:
3734
diff
changeset
|
188 |
uint32 (*GetVariable)(const struct ResolverObject*, byte, byte, bool*); |
3734
5b331306e6fe
(svn r4714) - NewGRF: simplify evaluation of 'real' sprite groups.
peter1138
parents:
3724
diff
changeset
|
189 |
const SpriteGroup *(*ResolveReal)(const struct ResolverObject*, const SpriteGroup*); |
3677
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
190 |
} ResolverObject; |
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
191 |
|
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
192 |
|
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
193 |
/* Base sprite group resolver */ |
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
194 |
const SpriteGroup *Resolve(const SpriteGroup *group, ResolverObject *object); |
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
195 |
|
526d6243241a
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
196 |
|
3595
a0acdb23e662
(svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff
changeset
|
197 |
#endif /* NEWGRF_SPRITEGROUP_H */ |