src/newgrf_spritegroup.h
author peter1138
Tue, 22 Jan 2008 07:27:06 +0000
changeset 8374 7a1b6c89cb89
parent 8233 560ddd54f068
child 8544 47b99dc2da26
permissions -rw-r--r--
(svn r11940) -Codechange: Store short filename once per open file instead of once per sprite cache entry. Not all file types need this, but most of the time no sprite cache entry needed it either.
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
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
     3
/** @file newgrf_spritegroup.h */
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
     4
3595
a0acdb23e662 (svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff changeset
     5
#ifndef NEWGRF_SPRITEGROUP_H
a0acdb23e662 (svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff changeset
     6
#define NEWGRF_SPRITEGROUP_H
a0acdb23e662 (svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff changeset
     7
8213
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents: 8131
diff changeset
     8
#include "town_type.h"
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents: 8131
diff changeset
     9
#include "industry_type.h"
7609
b70ffc13652a (svn r11138) -Codechange: prepare some subsystems for persistent storage for NewGRFs.
rubidium
parents: 7594
diff changeset
    10
#include "newgrf_storage.h"
8131
160939e24ed3 (svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium
parents: 7668
diff changeset
    11
#include "core/bitmath_func.hpp"
160939e24ed3 (svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium
parents: 7668
diff changeset
    12
#include "gfx_type.h"
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
    13
7168
25e07ccb4a3d (svn r10442) -Codechange: implement the industry production callback.
rubidium
parents: 6884
diff changeset
    14
/**
25e07ccb4a3d (svn r10442) -Codechange: implement the industry production callback.
rubidium
parents: 6884
diff changeset
    15
 * Gets the value of a so-called newgrf "register".
25e07ccb4a3d (svn r10442) -Codechange: implement the industry production callback.
rubidium
parents: 6884
diff changeset
    16
 * @param i index of the register
25e07ccb4a3d (svn r10442) -Codechange: implement the industry production callback.
rubidium
parents: 6884
diff changeset
    17
 * @pre i < 0x110
25e07ccb4a3d (svn r10442) -Codechange: implement the industry production callback.
rubidium
parents: 6884
diff changeset
    18
 * @return the value of the register
25e07ccb4a3d (svn r10442) -Codechange: implement the industry production callback.
rubidium
parents: 6884
diff changeset
    19
 */
25e07ccb4a3d (svn r10442) -Codechange: implement the industry production callback.
rubidium
parents: 6884
diff changeset
    20
static inline uint32 GetRegister(uint i)
25e07ccb4a3d (svn r10442) -Codechange: implement the industry production callback.
rubidium
parents: 6884
diff changeset
    21
{
7616
ebf15b08ac38 (svn r11145) -Codechange: add support for "decoding" TTDPs string codes wrt to registers 0x100 to 0x10F.
rubidium
parents: 7612
diff changeset
    22
	extern TemporaryStorageArray<uint32, 0x110> _temp_store;
7609
b70ffc13652a (svn r11138) -Codechange: prepare some subsystems for persistent storage for NewGRFs.
rubidium
parents: 7594
diff changeset
    23
	return _temp_store.Get(i);
7168
25e07ccb4a3d (svn r10442) -Codechange: implement the industry production callback.
rubidium
parents: 6884
diff changeset
    24
}
25e07ccb4a3d (svn r10442) -Codechange: implement the industry production callback.
rubidium
parents: 6884
diff changeset
    25
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
    26
struct SpriteGroup;
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
    27
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
    28
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
    29
/* '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
    30
 * groups. */
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
    31
struct RealSpriteGroup {
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    32
	/* Loaded = in motion, loading = not moving
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    33
	 * Each group contains several spritesets, for various loading stages */
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
    34
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    35
	/* XXX: For stations the meaning is different - loaded is for stations
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    36
	 * with small amount of cargo whilst loading is for stations with a lot
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    37
	 * of da stuff. */
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
	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
    40
	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
    41
	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
    42
	const SpriteGroup **loading; ///< List of loading groups (can be SpriteIDs or Callback results)
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
    43
};
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
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
    45
/* Shared by deterministic and random groups. */
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
    46
enum VarSpriteGroupScope {
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
    47
	VSG_SCOPE_SELF,
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    48
	/* Engine of consists for vehicles, city for stations. */
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
    49
	VSG_SCOPE_PARENT,
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
    50
};
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
    51
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
    52
enum DeterministicSpriteGroupSize {
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
    53
	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
    54
	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
    55
	DSG_SIZE_DWORD,
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
    56
};
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
    57
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
    58
enum DeterministicSpriteGroupAdjustType {
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
    59
	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
    60
	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
    61
	DSGA_TYPE_MOD,
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
    62
};
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
    63
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
    64
enum DeterministicSpriteGroupAdjustOperation {
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    65
	DSGA_OP_ADD,  ///< a + b
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    66
	DSGA_OP_SUB,  ///< a - b
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    67
	DSGA_OP_SMIN, ///< (signed) min(a, b)
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    68
	DSGA_OP_SMAX, ///< (signed) max(a, b)
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    69
	DSGA_OP_UMIN, ///< (unsigned) min(a, b)
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    70
	DSGA_OP_UMAX, ///< (unsigned) max(a, b)
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    71
	DSGA_OP_SDIV, ///< (signed) a / b
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    72
	DSGA_OP_SMOD, ///< (signed) a % b
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    73
	DSGA_OP_UDIV, ///< (unsigned) a / b
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    74
	DSGA_OP_UMOD, ///< (unsigned) a & b
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    75
	DSGA_OP_MUL,  ///< a * b
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    76
	DSGA_OP_AND,  ///< a & b
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    77
	DSGA_OP_OR,   ///< a | b
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
    78
	DSGA_OP_XOR,  ///< a ^ b
6521
d4d0e886f4bd (svn r9707) -Codechange: Add some support for NewGRF var 7D, temporary storage array.
peter1138
parents: 6365
diff changeset
    79
	DSGA_OP_STO,  ///< store a into temporary storage, indexed by b. return a
d4d0e886f4bd (svn r9707) -Codechange: Add some support for NewGRF var 7D, temporary storage array.
peter1138
parents: 6365
diff changeset
    80
	DSGA_OP_RST,  ///< return b
7610
13b7d9e247d2 (svn r11139) -Codechange: add support for persistent storage for NewGRFs.
rubidium
parents: 7609
diff changeset
    81
	DSGA_OP_STOP, ///< store a into persistent storage, indexed by b, return a
7612
798324cb4f0d (svn r11141) -Codechange: add support for NewGRF's varaction2 operators 11, 12 and 13.
rubidium
parents: 7610
diff changeset
    82
	DSGA_OP_ROR,  ///< rotate a b positions to the right
798324cb4f0d (svn r11141) -Codechange: add support for NewGRF's varaction2 operators 11, 12 and 13.
rubidium
parents: 7610
diff changeset
    83
	DSGA_OP_SCMP, ///< (signed) comparision (a < b -> 0, a == b = 1, a > b = 2)
798324cb4f0d (svn r11141) -Codechange: add support for NewGRF's varaction2 operators 11, 12 and 13.
rubidium
parents: 7610
diff changeset
    84
	DSGA_OP_UCMP, ///< (unsigned) comparision (a < b -> 0, a == b = 1, a > b = 2)
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
    85
};
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
    86
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
    87
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
    88
struct DeterministicSpriteGroupAdjust {
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
    89
	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
    90
	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
    91
	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
    92
	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
    93
	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
    94
	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
    95
	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
    96
	uint32 divmod_val;
5617
07de31c05f46 (svn r8075) -Feature: Add support for variable 7E - subroutines. (peter1138)
maedhros
parents: 5475
diff changeset
    97
	const SpriteGroup *subroutine;
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
    98
};
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
    99
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
   100
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   101
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
   102
	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
   103
	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
   104
	uint32 high;
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   105
};
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
   106
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
   107
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   108
struct DeterministicSpriteGroup {
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
   109
	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
   110
	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
   111
	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
   112
	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
   113
	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
   114
	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
   115
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
   116
	/* 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
   117
	const SpriteGroup *default_group;
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   118
};
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
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   120
enum RandomizedSpriteGroupCompareMode {
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
   121
	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
   122
	RSG_CMP_ALL,
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   123
};
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
   124
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   125
struct RandomizedSpriteGroup {
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
   126
	VarSpriteGroupScope var_scope;  ///< Take this object:
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
   127
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
   128
	RandomizedSpriteGroupCompareMode cmp_mode; ///< Check for these triggers:
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
	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
   130
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
   131
	byte lowest_randbit; ///< Look for this in the per-object randomized bitmask:
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
   132
	byte num_groups; ///< must be power of 2
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
   133
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
   134
	const SpriteGroup **groups; ///< Take the group with appropriate index:
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   135
};
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
   136
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
   137
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
   138
/* 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
   139
 * CALLBACK_FAILED */
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   140
struct CallbackResultSpriteGroup {
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
   141
	uint16 result;
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   142
};
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
   143
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
   144
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
   145
/* 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
   146
 * sprites in the set */
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   147
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
   148
	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
   149
	byte num_sprites;
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   150
};
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
   151
6332
f3f436dcd7d0 (svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents: 6248
diff changeset
   152
struct TileLayoutSpriteGroup {
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 6332
diff changeset
   153
	byte num_sprites; ///< Number of sprites in the spriteset, used for loading stages
6332
f3f436dcd7d0 (svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents: 6248
diff changeset
   154
	struct DrawTileSprites *dts;
f3f436dcd7d0 (svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents: 6248
diff changeset
   155
};
f3f436dcd7d0 (svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents: 6248
diff changeset
   156
7168
25e07ccb4a3d (svn r10442) -Codechange: implement the industry production callback.
rubidium
parents: 6884
diff changeset
   157
struct IndustryProductionSpriteGroup {
25e07ccb4a3d (svn r10442) -Codechange: implement the industry production callback.
rubidium
parents: 6884
diff changeset
   158
	uint8 version;
25e07ccb4a3d (svn r10442) -Codechange: implement the industry production callback.
rubidium
parents: 6884
diff changeset
   159
	uint16 substract_input[3];
25e07ccb4a3d (svn r10442) -Codechange: implement the industry production callback.
rubidium
parents: 6884
diff changeset
   160
	uint16 add_output[2];
25e07ccb4a3d (svn r10442) -Codechange: implement the industry production callback.
rubidium
parents: 6884
diff changeset
   161
	uint8 again;
25e07ccb4a3d (svn r10442) -Codechange: implement the industry production callback.
rubidium
parents: 6884
diff changeset
   162
};
25e07ccb4a3d (svn r10442) -Codechange: implement the industry production callback.
rubidium
parents: 6884
diff changeset
   163
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
   164
/* List of different sprite group types */
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   165
enum SpriteGroupType {
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
   166
	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
   167
	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
   168
	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
   169
	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
   170
	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
   171
	SGT_RESULT,
6332
f3f436dcd7d0 (svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents: 6248
diff changeset
   172
	SGT_TILELAYOUT,
7168
25e07ccb4a3d (svn r10442) -Codechange: implement the industry production callback.
rubidium
parents: 6884
diff changeset
   173
	SGT_INDUSTRY_PRODUCTION,
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   174
};
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
   175
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
   176
/* 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
   177
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
   178
	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
   179
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
   180
	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
   181
		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
   182
		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
   183
		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
   184
		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
   185
		ResultSpriteGroup result;
6332
f3f436dcd7d0 (svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents: 6248
diff changeset
   186
		TileLayoutSpriteGroup layout;
7168
25e07ccb4a3d (svn r10442) -Codechange: implement the industry production callback.
rubidium
parents: 6884
diff changeset
   187
		IndustryProductionSpriteGroup indprod;
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
   188
	} 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
   189
};
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
   190
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
   191
6247
7d81e3a5d803 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 5617
diff changeset
   192
SpriteGroup *AllocateSpriteGroup();
7d81e3a5d803 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 5617
diff changeset
   193
void InitializeSpriteGroupPool();
3595
a0acdb23e662 (svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff changeset
   194
3677
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   195
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   196
struct ResolverObject {
7327
d810677fb909 (svn r10690) -Codechange: use the enum that describes all callback IDs in favor of "just" using an untyped integer.
rubidium
parents: 7207
diff changeset
   197
	CallbackID callback;
3677
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   198
	uint32 callback_param1;
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   199
	uint32 callback_param2;
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   200
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   201
	byte trigger;
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   202
	uint32 last_value;
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   203
	uint32 reseed;
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   204
	VarSpriteGroupScope scope;
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   205
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
   206
	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
   207
7610
13b7d9e247d2 (svn r11139) -Codechange: add support for persistent storage for NewGRFs.
rubidium
parents: 7609
diff changeset
   208
	BaseStorageArray *psa; ///< The persistent storage array of this resolved object.
13b7d9e247d2 (svn r11139) -Codechange: add support for persistent storage for NewGRFs.
rubidium
parents: 7609
diff changeset
   209
3677
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   210
	union {
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   211
		struct {
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   212
			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
   213
			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
   214
			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
   215
		} vehicle;
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   216
		struct {
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   217
			TileIndex tile;
6583
71d62b85d3ad (svn r9797) -Feature: [NewGRF] Add action 1, 2 and 3 support for canals.
peter1138
parents: 6521
diff changeset
   218
		} canal;
71d62b85d3ad (svn r9797) -Feature: [NewGRF] Add action 1, 2 and 3 support for canals.
peter1138
parents: 6521
diff changeset
   219
		struct {
71d62b85d3ad (svn r9797) -Feature: [NewGRF] Add action 1, 2 and 3 support for canals.
peter1138
parents: 6521
diff changeset
   220
			TileIndex tile;
3677
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   221
			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
   222
			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
   223
			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
   224
		} station;
6332
f3f436dcd7d0 (svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents: 6248
diff changeset
   225
		struct {
f3f436dcd7d0 (svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents: 6248
diff changeset
   226
			TileIndex tile;
f3f436dcd7d0 (svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents: 6248
diff changeset
   227
			Town *town;
f3f436dcd7d0 (svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents: 6248
diff changeset
   228
			HouseID house_id;
f3f436dcd7d0 (svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents: 6248
diff changeset
   229
		} house;
6365
b52bd4ca10b6 (svn r9418) -Codechange: Implement actions 1/2/3 for cargos, callback handler and custom icon sprites
peter1138
parents: 6348
diff changeset
   230
		struct {
6835
31c89aab2d61 (svn r10074) -Add: Addition of IndustryOverrideManager as well as the basic (and unfinished) support for callbacks for industries
belugas
parents: 6583
diff changeset
   231
			TileIndex tile;
31c89aab2d61 (svn r10074) -Add: Addition of IndustryOverrideManager as well as the basic (and unfinished) support for callbacks for industries
belugas
parents: 6583
diff changeset
   232
			Industry *ind;
6884
a931841e9df4 (svn r10127) -Add: Addition of basic structure for industry tiles callbacks (unfinished).
belugas
parents: 6835
diff changeset
   233
			IndustryGfx gfx;
8233
560ddd54f068 (svn r11797) -Fix: Add protection against not already created industry while doing industry callback.
belugas
parents: 8213
diff changeset
   234
			IndustryType type;
6835
31c89aab2d61 (svn r10074) -Add: Addition of IndustryOverrideManager as well as the basic (and unfinished) support for callbacks for industries
belugas
parents: 6583
diff changeset
   235
		} industry;
31c89aab2d61 (svn r10074) -Add: Addition of IndustryOverrideManager as well as the basic (and unfinished) support for callbacks for industries
belugas
parents: 6583
diff changeset
   236
		struct {
6365
b52bd4ca10b6 (svn r9418) -Codechange: Implement actions 1/2/3 for cargos, callback handler and custom icon sprites
peter1138
parents: 6348
diff changeset
   237
			const struct CargoSpec *cs;
b52bd4ca10b6 (svn r9418) -Codechange: Implement actions 1/2/3 for cargos, callback handler and custom icon sprites
peter1138
parents: 6348
diff changeset
   238
		} cargo;
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
   239
	} u;
3677
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   240
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   241
	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
   242
	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
   243
	void (*SetTriggers)(const struct ResolverObject*, int);
3893
ced26054ee00 (svn r4960) - NewGRF: explicitly handle unsupported variables, instead of returning -1.
peter1138
parents: 3734
diff changeset
   244
	uint32 (*GetVariable)(const struct ResolverObject*, byte, byte, bool*);
3734
5b331306e6fe (svn r4714) - NewGRF: simplify evaluation of 'real' sprite groups.
peter1138
parents: 3724
diff changeset
   245
	const SpriteGroup *(*ResolveReal)(const struct ResolverObject*, const SpriteGroup*);
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   246
};
3677
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   247
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   248
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   249
/* Base sprite group resolver */
7609
b70ffc13652a (svn r11138) -Codechange: prepare some subsystems for persistent storage for NewGRFs.
rubidium
parents: 7594
diff changeset
   250
const SpriteGroup *Resolve(const SpriteGroup *group, ResolverObject *object);
3677
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   251
526d6243241a (svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents: 3668
diff changeset
   252
3595
a0acdb23e662 (svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff changeset
   253
#endif /* NEWGRF_SPRITEGROUP_H */