author | Tero Marttila <terom@fixme.fi> |
Fri, 18 Jul 2008 21:28:42 +0300 | |
changeset 11175 | 020c61e39c94 |
parent 10429 | 1b99254f9607 |
permissions | -rw-r--r-- |
3595
20621831cd46
(svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff
changeset
|
1 |
/* $Id$ */ |
20621831cd46
(svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff
changeset
|
2 |
|
10429
1b99254f9607
(svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium
parents:
9283
diff
changeset
|
3 |
/** @file newgrf_spritegroup.h Action 2 handling. */ |
6674
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
4 |
|
3595
20621831cd46
(svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff
changeset
|
5 |
#ifndef NEWGRF_SPRITEGROUP_H |
20621831cd46
(svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff
changeset
|
6 |
#define NEWGRF_SPRITEGROUP_H |
20621831cd46
(svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff
changeset
|
7 |
|
8709
4187ad809fe7
(svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
8627
diff
changeset
|
8 |
#include "town_type.h" |
4187ad809fe7
(svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
8627
diff
changeset
|
9 |
#include "industry_type.h" |
8627
448ebf3a8291
(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:
8164
diff
changeset
|
10 |
#include "core/bitmath_func.hpp" |
448ebf3a8291
(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:
8164
diff
changeset
|
11 |
#include "gfx_type.h" |
9283
624272490f5a
(svn r12495) -Codechange: reduce the dependency on newgrf_station.h (especially because newgrf_station.h includes a lot of stuff).
rubidium
parents:
9252
diff
changeset
|
12 |
#include "engine_type.h" |
624272490f5a
(svn r12495) -Codechange: reduce the dependency on newgrf_station.h (especially because newgrf_station.h includes a lot of stuff).
rubidium
parents:
9252
diff
changeset
|
13 |
#include "tile_type.h" |
624272490f5a
(svn r12495) -Codechange: reduce the dependency on newgrf_station.h (especially because newgrf_station.h includes a lot of stuff).
rubidium
parents:
9252
diff
changeset
|
14 |
|
624272490f5a
(svn r12495) -Codechange: reduce the dependency on newgrf_station.h (especially because newgrf_station.h includes a lot of stuff).
rubidium
parents:
9252
diff
changeset
|
15 |
#include "newgrf_cargo.h" |
624272490f5a
(svn r12495) -Codechange: reduce the dependency on newgrf_station.h (especially because newgrf_station.h includes a lot of stuff).
rubidium
parents:
9252
diff
changeset
|
16 |
#include "newgrf_callbacks.h" |
9040
7d9d63315d91
(svn r12122) -Codechange: Add framework for generic feature callbacks, along with some parts for AI use.
peter1138
parents:
8729
diff
changeset
|
17 |
#include "newgrf_generic.h" |
9283
624272490f5a
(svn r12495) -Codechange: reduce the dependency on newgrf_station.h (especially because newgrf_station.h includes a lot of stuff).
rubidium
parents:
9252
diff
changeset
|
18 |
#include "newgrf_storage.h" |
3664
2b25d7014099
(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 |
|
7664
81c35390400e
(svn r10442) -Codechange: implement the industry production callback.
rubidium
parents:
7380
diff
changeset
|
20 |
/** |
81c35390400e
(svn r10442) -Codechange: implement the industry production callback.
rubidium
parents:
7380
diff
changeset
|
21 |
* Gets the value of a so-called newgrf "register". |
81c35390400e
(svn r10442) -Codechange: implement the industry production callback.
rubidium
parents:
7380
diff
changeset
|
22 |
* @param i index of the register |
81c35390400e
(svn r10442) -Codechange: implement the industry production callback.
rubidium
parents:
7380
diff
changeset
|
23 |
* @pre i < 0x110 |
81c35390400e
(svn r10442) -Codechange: implement the industry production callback.
rubidium
parents:
7380
diff
changeset
|
24 |
* @return the value of the register |
81c35390400e
(svn r10442) -Codechange: implement the industry production callback.
rubidium
parents:
7380
diff
changeset
|
25 |
*/ |
81c35390400e
(svn r10442) -Codechange: implement the industry production callback.
rubidium
parents:
7380
diff
changeset
|
26 |
static inline uint32 GetRegister(uint i) |
81c35390400e
(svn r10442) -Codechange: implement the industry production callback.
rubidium
parents:
7380
diff
changeset
|
27 |
{ |
8112
f432a920f3b7
(svn r11145) -Codechange: add support for "decoding" TTDPs string codes wrt to registers 0x100 to 0x10F.
rubidium
parents:
8108
diff
changeset
|
28 |
extern TemporaryStorageArray<uint32, 0x110> _temp_store; |
8105
8f7fcf4d2b7e
(svn r11138) -Codechange: prepare some subsystems for persistent storage for NewGRFs.
rubidium
parents:
8090
diff
changeset
|
29 |
return _temp_store.Get(i); |
7664
81c35390400e
(svn r10442) -Codechange: implement the industry production callback.
rubidium
parents:
7380
diff
changeset
|
30 |
} |
81c35390400e
(svn r10442) -Codechange: implement the industry production callback.
rubidium
parents:
7380
diff
changeset
|
31 |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
32 |
struct SpriteGroup; |
3664
2b25d7014099
(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
|
33 |
|
3668
d7ed0a867b49
(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 |
|
d7ed0a867b49
(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 |
/* 'Real' sprite groups contain a list of other result or callback sprite |
d7ed0a867b49
(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 |
* groups. */ |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
37 |
struct RealSpriteGroup { |
6674
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
38 |
/* Loaded = in motion, loading = not moving |
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
39 |
* Each group contains several spritesets, for various loading stages */ |
3664
2b25d7014099
(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
|
40 |
|
6674
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
41 |
/* XXX: For stations the meaning is different - loaded is for stations |
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
42 |
* with small amount of cargo whilst loading is for stations with a lot |
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
43 |
* of da stuff. */ |
3664
2b25d7014099
(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
d7ed0a867b49
(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 |
byte num_loaded; ///< Number of loaded groups |
d7ed0a867b49
(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 |
byte num_loading; ///< Number of loading groups |
4892
6a1308a07117
(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
|
47 |
const SpriteGroup **loaded; ///< List of loaded groups (can be SpriteIDs or Callback results) |
6a1308a07117
(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
|
48 |
const SpriteGroup **loading; ///< List of loading groups (can be SpriteIDs or Callback results) |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
49 |
}; |
3664
2b25d7014099
(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
|
50 |
|
2b25d7014099
(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 |
/* Shared by deterministic and random groups. */ |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
52 |
enum VarSpriteGroupScope { |
3664
2b25d7014099
(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
|
53 |
VSG_SCOPE_SELF, |
6674
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
54 |
/* Engine of consists for vehicles, city for stations. */ |
3664
2b25d7014099
(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
|
55 |
VSG_SCOPE_PARENT, |
9252
92e05c28a994
(svn r12452) -Feature: [NewGRF] Add random action 2 type 84. For vehicles only.
glx
parents:
9181
diff
changeset
|
56 |
/* Any vehicle in the consist (vehicles only) */ |
92e05c28a994
(svn r12452) -Feature: [NewGRF] Add random action 2 type 84. For vehicles only.
glx
parents:
9181
diff
changeset
|
57 |
VSG_SCOPE_RELATIVE, |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
58 |
}; |
3664
2b25d7014099
(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
|
59 |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
60 |
enum DeterministicSpriteGroupSize { |
3668
d7ed0a867b49
(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 |
DSG_SIZE_BYTE, |
d7ed0a867b49
(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 |
DSG_SIZE_WORD, |
d7ed0a867b49
(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 |
DSG_SIZE_DWORD, |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
64 |
}; |
3664
2b25d7014099
(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
|
65 |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
66 |
enum DeterministicSpriteGroupAdjustType { |
3668
d7ed0a867b49
(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 |
DSGA_TYPE_NONE, |
d7ed0a867b49
(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 |
DSGA_TYPE_DIV, |
d7ed0a867b49
(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 |
DSGA_TYPE_MOD, |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
70 |
}; |
3664
2b25d7014099
(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
|
71 |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
72 |
enum DeterministicSpriteGroupAdjustOperation { |
6674
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
73 |
DSGA_OP_ADD, ///< a + b |
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
74 |
DSGA_OP_SUB, ///< a - b |
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
75 |
DSGA_OP_SMIN, ///< (signed) min(a, b) |
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
76 |
DSGA_OP_SMAX, ///< (signed) max(a, b) |
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
77 |
DSGA_OP_UMIN, ///< (unsigned) min(a, b) |
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
78 |
DSGA_OP_UMAX, ///< (unsigned) max(a, b) |
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
79 |
DSGA_OP_SDIV, ///< (signed) a / b |
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
80 |
DSGA_OP_SMOD, ///< (signed) a % b |
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
81 |
DSGA_OP_UDIV, ///< (unsigned) a / b |
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
82 |
DSGA_OP_UMOD, ///< (unsigned) a & b |
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
83 |
DSGA_OP_MUL, ///< a * b |
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
84 |
DSGA_OP_AND, ///< a & b |
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
85 |
DSGA_OP_OR, ///< a | b |
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
86 |
DSGA_OP_XOR, ///< a ^ b |
7017
59a26efc3832
(svn r9707) -Codechange: Add some support for NewGRF var 7D, temporary storage array.
peter1138
parents:
6691
diff
changeset
|
87 |
DSGA_OP_STO, ///< store a into temporary storage, indexed by b. return a |
59a26efc3832
(svn r9707) -Codechange: Add some support for NewGRF var 7D, temporary storage array.
peter1138
parents:
6691
diff
changeset
|
88 |
DSGA_OP_RST, ///< return b |
8106
9f527cc360cf
(svn r11139) -Codechange: add support for persistent storage for NewGRFs.
rubidium
parents:
8105
diff
changeset
|
89 |
DSGA_OP_STOP, ///< store a into persistent storage, indexed by b, return a |
8108
683c1e1960ae
(svn r11141) -Codechange: add support for NewGRF's varaction2 operators 11, 12 and 13.
rubidium
parents:
8106
diff
changeset
|
90 |
DSGA_OP_ROR, ///< rotate a b positions to the right |
683c1e1960ae
(svn r11141) -Codechange: add support for NewGRF's varaction2 operators 11, 12 and 13.
rubidium
parents:
8106
diff
changeset
|
91 |
DSGA_OP_SCMP, ///< (signed) comparision (a < b -> 0, a == b = 1, a > b = 2) |
683c1e1960ae
(svn r11141) -Codechange: add support for NewGRF's varaction2 operators 11, 12 and 13.
rubidium
parents:
8106
diff
changeset
|
92 |
DSGA_OP_UCMP, ///< (unsigned) comparision (a < b -> 0, a == b = 1, a > b = 2) |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
93 |
}; |
3668
d7ed0a867b49
(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 |
|
d7ed0a867b49
(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 |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
96 |
struct DeterministicSpriteGroupAdjust { |
3668
d7ed0a867b49
(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
|
97 |
DeterministicSpriteGroupAdjustOperation operation; |
d7ed0a867b49
(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
|
98 |
DeterministicSpriteGroupAdjustType type; |
d7ed0a867b49
(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 |
byte variable; |
d7ed0a867b49
(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 |
byte parameter; ///< Used for variables between 0x60 and 0x7F inclusive. |
d7ed0a867b49
(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
|
101 |
byte shift_num; |
d7ed0a867b49
(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
|
102 |
uint32 and_mask; |
d7ed0a867b49
(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 add_val; |
d7ed0a867b49
(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 divmod_val; |
5868
baa704b6dc4f
(svn r8075) -Feature: Add support for variable 7E - subroutines. (peter1138)
maedhros
parents:
5726
diff
changeset
|
105 |
const SpriteGroup *subroutine; |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
106 |
}; |
3668
d7ed0a867b49
(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
|
107 |
|
d7ed0a867b49
(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
|
108 |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
109 |
struct DeterministicSpriteGroupRange { |
4892
6a1308a07117
(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
|
110 |
const SpriteGroup *group; |
3668
d7ed0a867b49
(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 |
uint32 low; |
d7ed0a867b49
(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
|
112 |
uint32 high; |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
113 |
}; |
3668
d7ed0a867b49
(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
|
114 |
|
3664
2b25d7014099
(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 |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
116 |
struct DeterministicSpriteGroup { |
3664
2b25d7014099
(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
|
117 |
VarSpriteGroupScope var_scope; |
3668
d7ed0a867b49
(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 |
DeterministicSpriteGroupSize size; |
d7ed0a867b49
(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
|
119 |
byte num_adjusts; |
3664
2b25d7014099
(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 |
byte num_ranges; |
3668
d7ed0a867b49
(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
|
121 |
DeterministicSpriteGroupAdjust *adjusts; |
3664
2b25d7014099
(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 |
DeterministicSpriteGroupRange *ranges; // Dynamically allocated |
2b25d7014099
(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
|
123 |
|
6674
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
124 |
/* Dynamically allocated, this is the sole owner */ |
4892
6a1308a07117
(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
|
125 |
const SpriteGroup *default_group; |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
126 |
}; |
3664
2b25d7014099
(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 |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
128 |
enum RandomizedSpriteGroupCompareMode { |
3664
2b25d7014099
(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 |
RSG_CMP_ANY, |
2b25d7014099
(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 |
RSG_CMP_ALL, |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
131 |
}; |
3664
2b25d7014099
(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 |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
133 |
struct RandomizedSpriteGroup { |
6674
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
134 |
VarSpriteGroupScope var_scope; ///< Take this object: |
3664
2b25d7014099
(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 |
|
6674
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
136 |
RandomizedSpriteGroupCompareMode cmp_mode; ///< Check for these triggers: |
3664
2b25d7014099
(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 |
byte triggers; |
9252
92e05c28a994
(svn r12452) -Feature: [NewGRF] Add random action 2 type 84. For vehicles only.
glx
parents:
9181
diff
changeset
|
138 |
byte count; |
3664
2b25d7014099
(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 |
|
6674
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
140 |
byte lowest_randbit; ///< Look for this in the per-object randomized bitmask: |
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
141 |
byte num_groups; ///< must be power of 2 |
3664
2b25d7014099
(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 |
|
6674
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
143 |
const SpriteGroup **groups; ///< Take the group with appropriate index: |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
144 |
}; |
3664
2b25d7014099
(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 |
|
3668
d7ed0a867b49
(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 |
|
d7ed0a867b49
(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
|
147 |
/* This contains a callback result. A failed callback has a value of |
d7ed0a867b49
(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 |
* CALLBACK_FAILED */ |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
149 |
struct CallbackResultSpriteGroup { |
3664
2b25d7014099
(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 |
uint16 result; |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
151 |
}; |
3664
2b25d7014099
(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 |
|
3668
d7ed0a867b49
(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
|
153 |
|
d7ed0a867b49
(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
|
154 |
/* A result sprite group returns the first SpriteID and the number of |
d7ed0a867b49
(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
|
155 |
* sprites in the set */ |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
156 |
struct ResultSpriteGroup { |
3668
d7ed0a867b49
(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
|
157 |
SpriteID sprite; |
d7ed0a867b49
(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
|
158 |
byte num_sprites; |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
159 |
}; |
3664
2b25d7014099
(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
|
160 |
|
6658
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6574
diff
changeset
|
161 |
struct TileLayoutSpriteGroup { |
6674
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6658
diff
changeset
|
162 |
byte num_sprites; ///< Number of sprites in the spriteset, used for loading stages |
6658
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6574
diff
changeset
|
163 |
struct DrawTileSprites *dts; |
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6574
diff
changeset
|
164 |
}; |
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6574
diff
changeset
|
165 |
|
7664
81c35390400e
(svn r10442) -Codechange: implement the industry production callback.
rubidium
parents:
7380
diff
changeset
|
166 |
struct IndustryProductionSpriteGroup { |
81c35390400e
(svn r10442) -Codechange: implement the industry production callback.
rubidium
parents:
7380
diff
changeset
|
167 |
uint8 version; |
81c35390400e
(svn r10442) -Codechange: implement the industry production callback.
rubidium
parents:
7380
diff
changeset
|
168 |
uint16 substract_input[3]; |
81c35390400e
(svn r10442) -Codechange: implement the industry production callback.
rubidium
parents:
7380
diff
changeset
|
169 |
uint16 add_output[2]; |
81c35390400e
(svn r10442) -Codechange: implement the industry production callback.
rubidium
parents:
7380
diff
changeset
|
170 |
uint8 again; |
81c35390400e
(svn r10442) -Codechange: implement the industry production callback.
rubidium
parents:
7380
diff
changeset
|
171 |
}; |
81c35390400e
(svn r10442) -Codechange: implement the industry production callback.
rubidium
parents:
7380
diff
changeset
|
172 |
|
3668
d7ed0a867b49
(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
|
173 |
/* List of different sprite group types */ |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
174 |
enum SpriteGroupType { |
3664
2b25d7014099
(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 |
SGT_INVALID, |
2b25d7014099
(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
|
176 |
SGT_REAL, |
2b25d7014099
(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 |
SGT_DETERMINISTIC, |
2b25d7014099
(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 |
SGT_RANDOMIZED, |
2b25d7014099
(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 |
SGT_CALLBACK, |
2b25d7014099
(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 |
SGT_RESULT, |
6658
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6574
diff
changeset
|
181 |
SGT_TILELAYOUT, |
7664
81c35390400e
(svn r10442) -Codechange: implement the industry production callback.
rubidium
parents:
7380
diff
changeset
|
182 |
SGT_INDUSTRY_PRODUCTION, |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
183 |
}; |
3664
2b25d7014099
(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 |
|
3668
d7ed0a867b49
(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
|
185 |
/* Common wrapper for all the different sprite group types */ |
3664
2b25d7014099
(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
|
186 |
struct SpriteGroup { |
2b25d7014099
(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
|
187 |
SpriteGroupType type; |
2b25d7014099
(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 |
|
2b25d7014099
(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 |
union { |
2b25d7014099
(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 |
RealSpriteGroup real; |
2b25d7014099
(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 |
DeterministicSpriteGroup determ; |
2b25d7014099
(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
|
192 |
RandomizedSpriteGroup random; |
2b25d7014099
(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
|
193 |
CallbackResultSpriteGroup callback; |
2b25d7014099
(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
|
194 |
ResultSpriteGroup result; |
6658
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6574
diff
changeset
|
195 |
TileLayoutSpriteGroup layout; |
7664
81c35390400e
(svn r10442) -Codechange: implement the industry production callback.
rubidium
parents:
7380
diff
changeset
|
196 |
IndustryProductionSpriteGroup indprod; |
3664
2b25d7014099
(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
|
197 |
} g; |
2b25d7014099
(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
|
198 |
}; |
2b25d7014099
(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
|
199 |
|
2b25d7014099
(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
|
200 |
|
6573 | 201 |
SpriteGroup *AllocateSpriteGroup(); |
202 |
void InitializeSpriteGroupPool(); |
|
3595
20621831cd46
(svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff
changeset
|
203 |
|
3677
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
204 |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
205 |
struct ResolverObject { |
7823
cad4dec2b899
(svn r10690) -Codechange: use the enum that describes all callback IDs in favor of "just" using an untyped integer.
rubidium
parents:
7703
diff
changeset
|
206 |
CallbackID callback; |
3677
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
207 |
uint32 callback_param1; |
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
208 |
uint32 callback_param2; |
9181
b65dd02939dd
(svn r12352) -Fix: Some callback-results were treated as 8 bit, when they were 15 bit, and vice versa.
frosch
parents:
9040
diff
changeset
|
209 |
bool procedure_call; ///< true if we are currently resolving a var 0x7E procedure result. |
3677
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
210 |
|
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
211 |
byte trigger; |
9252
92e05c28a994
(svn r12452) -Feature: [NewGRF] Add random action 2 type 84. For vehicles only.
glx
parents:
9181
diff
changeset
|
212 |
byte count; |
3677
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
213 |
uint32 last_value; |
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
214 |
uint32 reseed; |
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
215 |
VarSpriteGroupScope scope; |
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
216 |
|
4056
30ceffc75059
(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
|
217 |
bool info_view; ///< Indicates if the item is being drawn in an info window |
30ceffc75059
(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
|
218 |
|
8106
9f527cc360cf
(svn r11139) -Codechange: add support for persistent storage for NewGRFs.
rubidium
parents:
8105
diff
changeset
|
219 |
BaseStorageArray *psa; ///< The persistent storage array of this resolved object. |
9f527cc360cf
(svn r11139) -Codechange: add support for persistent storage for NewGRFs.
rubidium
parents:
8105
diff
changeset
|
220 |
|
3677
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
221 |
union { |
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
222 |
struct { |
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
223 |
const struct Vehicle *self; |
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
224 |
const struct Vehicle *parent; |
4057
36ceb8e7cbd2
(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
|
225 |
EngineID self_type; |
3677
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
226 |
} vehicle; |
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
227 |
struct { |
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
228 |
TileIndex tile; |
7079
35743c461482
(svn r9797) -Feature: [NewGRF] Add action 1, 2 and 3 support for canals.
peter1138
parents:
7017
diff
changeset
|
229 |
} canal; |
35743c461482
(svn r9797) -Feature: [NewGRF] Add action 1, 2 and 3 support for canals.
peter1138
parents:
7017
diff
changeset
|
230 |
struct { |
35743c461482
(svn r9797) -Feature: [NewGRF] Add action 1, 2 and 3 support for canals.
peter1138
parents:
7017
diff
changeset
|
231 |
TileIndex tile; |
3677
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
232 |
const struct Station *st; |
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
233 |
const struct StationSpec *statspec; |
4817
413372173231
(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
|
234 |
CargoID cargo_type; |
3677
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
235 |
} station; |
6658
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6574
diff
changeset
|
236 |
struct { |
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6574
diff
changeset
|
237 |
TileIndex tile; |
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6574
diff
changeset
|
238 |
Town *town; |
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6574
diff
changeset
|
239 |
HouseID house_id; |
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6574
diff
changeset
|
240 |
} house; |
6691
e8c27a509894
(svn r9418) -Codechange: Implement actions 1/2/3 for cargos, callback handler and custom icon sprites
peter1138
parents:
6674
diff
changeset
|
241 |
struct { |
7331
0a7f00fed4e6
(svn r10074) -Add: Addition of IndustryOverrideManager as well as the basic (and unfinished) support for callbacks for industries
belugas
parents:
7079
diff
changeset
|
242 |
TileIndex tile; |
0a7f00fed4e6
(svn r10074) -Add: Addition of IndustryOverrideManager as well as the basic (and unfinished) support for callbacks for industries
belugas
parents:
7079
diff
changeset
|
243 |
Industry *ind; |
7380
a9d0047b015c
(svn r10127) -Add: Addition of basic structure for industry tiles callbacks (unfinished).
belugas
parents:
7331
diff
changeset
|
244 |
IndustryGfx gfx; |
8729
395e46c2109b
(svn r11797) -Fix: Add protection against not already created industry while doing industry callback.
belugas
parents:
8709
diff
changeset
|
245 |
IndustryType type; |
7331
0a7f00fed4e6
(svn r10074) -Add: Addition of IndustryOverrideManager as well as the basic (and unfinished) support for callbacks for industries
belugas
parents:
7079
diff
changeset
|
246 |
} industry; |
0a7f00fed4e6
(svn r10074) -Add: Addition of IndustryOverrideManager as well as the basic (and unfinished) support for callbacks for industries
belugas
parents:
7079
diff
changeset
|
247 |
struct { |
6691
e8c27a509894
(svn r9418) -Codechange: Implement actions 1/2/3 for cargos, callback handler and custom icon sprites
peter1138
parents:
6674
diff
changeset
|
248 |
const struct CargoSpec *cs; |
e8c27a509894
(svn r9418) -Codechange: Implement actions 1/2/3 for cargos, callback handler and custom icon sprites
peter1138
parents:
6674
diff
changeset
|
249 |
} cargo; |
9040
7d9d63315d91
(svn r12122) -Codechange: Add framework for generic feature callbacks, along with some parts for AI use.
peter1138
parents:
8729
diff
changeset
|
250 |
struct { |
7d9d63315d91
(svn r12122) -Codechange: Add framework for generic feature callbacks, along with some parts for AI use.
peter1138
parents:
8729
diff
changeset
|
251 |
CargoID cargo_type; |
7d9d63315d91
(svn r12122) -Codechange: Add framework for generic feature callbacks, along with some parts for AI use.
peter1138
parents:
8729
diff
changeset
|
252 |
uint8 default_selection; |
7d9d63315d91
(svn r12122) -Codechange: Add framework for generic feature callbacks, along with some parts for AI use.
peter1138
parents:
8729
diff
changeset
|
253 |
IndustryType src_industry; |
7d9d63315d91
(svn r12122) -Codechange: Add framework for generic feature callbacks, along with some parts for AI use.
peter1138
parents:
8729
diff
changeset
|
254 |
IndustryType dst_industry; |
7d9d63315d91
(svn r12122) -Codechange: Add framework for generic feature callbacks, along with some parts for AI use.
peter1138
parents:
8729
diff
changeset
|
255 |
uint8 distance; |
7d9d63315d91
(svn r12122) -Codechange: Add framework for generic feature callbacks, along with some parts for AI use.
peter1138
parents:
8729
diff
changeset
|
256 |
AIConstructionEvent event; |
7d9d63315d91
(svn r12122) -Codechange: Add framework for generic feature callbacks, along with some parts for AI use.
peter1138
parents:
8729
diff
changeset
|
257 |
uint8 count; |
7d9d63315d91
(svn r12122) -Codechange: Add framework for generic feature callbacks, along with some parts for AI use.
peter1138
parents:
8729
diff
changeset
|
258 |
uint8 station_size; |
7d9d63315d91
(svn r12122) -Codechange: Add framework for generic feature callbacks, along with some parts for AI use.
peter1138
parents:
8729
diff
changeset
|
259 |
} generic; |
3720
755978f398d9
(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
|
260 |
} u; |
3677
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
261 |
|
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
262 |
uint32 (*GetRandomBits)(const struct ResolverObject*); |
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
263 |
uint32 (*GetTriggers)(const struct ResolverObject*); |
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
264 |
void (*SetTriggers)(const struct ResolverObject*, int); |
3893
46169364701b
(svn r4960) - NewGRF: explicitly handle unsupported variables, instead of returning -1.
peter1138
parents:
3734
diff
changeset
|
265 |
uint32 (*GetVariable)(const struct ResolverObject*, byte, byte, bool*); |
3734
f929883c5ae0
(svn r4714) - NewGRF: simplify evaluation of 'real' sprite groups.
peter1138
parents:
3724
diff
changeset
|
266 |
const SpriteGroup *(*ResolveReal)(const struct ResolverObject*, const SpriteGroup*); |
9181
b65dd02939dd
(svn r12352) -Fix: Some callback-results were treated as 8 bit, when they were 15 bit, and vice versa.
frosch
parents:
9040
diff
changeset
|
267 |
|
b65dd02939dd
(svn r12352) -Fix: Some callback-results were treated as 8 bit, when they were 15 bit, and vice versa.
frosch
parents:
9040
diff
changeset
|
268 |
ResolverObject() : procedure_call(false) { } |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
269 |
}; |
3677
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
270 |
|
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
271 |
|
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
272 |
/* Base sprite group resolver */ |
8105
8f7fcf4d2b7e
(svn r11138) -Codechange: prepare some subsystems for persistent storage for NewGRFs.
rubidium
parents:
8090
diff
changeset
|
273 |
const SpriteGroup *Resolve(const SpriteGroup *group, ResolverObject *object); |
3677
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
274 |
|
cb6659a684b5
(svn r4594) - NewGRF: introduce the basic sprite group resolver. This code isn't used yet.
peter1138
parents:
3668
diff
changeset
|
275 |
|
3595
20621831cd46
(svn r4486) - NewGRF: Create and use a memory pool to manage sprite groups. This
peter1138
parents:
diff
changeset
|
276 |
#endif /* NEWGRF_SPRITEGROUP_H */ |