OpenTTD
Data Structures | Typedefs | Enumerations | Functions | Variables
newgrf_spritegroup.h File Reference

Action 2 handling. More...

#include "town_type.h"
#include "engine_type.h"
#include "house_type.h"
#include "newgrf_callbacks.h"
#include "newgrf_generic.h"
#include "newgrf_storage.h"
#include "newgrf_commons.h"

Go to the source code of this file.

Data Structures

struct  SpriteGroup
 
struct  RealSpriteGroup
 
struct  DeterministicSpriteGroupAdjust
 
struct  DeterministicSpriteGroupRange
 
struct  DeterministicSpriteGroup
 
struct  RandomizedSpriteGroup
 
struct  CallbackResultSpriteGroup
 
struct  ResultSpriteGroup
 
struct  TileLayoutSpriteGroup
 Action 2 sprite layout for houses, industry tiles, objects and airport tiles. More...
 
struct  IndustryProductionSpriteGroup
 
struct  ScopeResolver
 Interface to query and set values specific to a single VarSpriteGroupScope (action 2 scope). More...
 
struct  ResolverObject
 Interface for SpriteGroup-s to access the gamestate. More...
 

Typedefs

typedef uint32 SpriteGroupID
 
typedef Pool< SpriteGroup, SpriteGroupID, 1024, 1<< 30, PT_DATASpriteGroupPool
 

Enumerations

enum  SpriteGroupType {
  SGT_REAL, SGT_DETERMINISTIC, SGT_RANDOMIZED, SGT_CALLBACK,
  SGT_RESULT, SGT_TILELAYOUT, SGT_INDUSTRY_PRODUCTION
}
 
enum  VarSpriteGroupScope {
  VSG_BEGIN, VSG_SCOPE_SELF = VSG_BEGIN, VSG_SCOPE_PARENT, VSG_SCOPE_RELATIVE,
  VSG_END
}
 
enum  DeterministicSpriteGroupSize { DSG_SIZE_BYTE, DSG_SIZE_WORD, DSG_SIZE_DWORD }
 
enum  DeterministicSpriteGroupAdjustType { DSGA_TYPE_NONE, DSGA_TYPE_DIV, DSGA_TYPE_MOD }
 
enum  DeterministicSpriteGroupAdjustOperation {
  DSGA_OP_ADD, DSGA_OP_SUB, DSGA_OP_SMIN, DSGA_OP_SMAX,
  DSGA_OP_UMIN, DSGA_OP_UMAX, DSGA_OP_SDIV, DSGA_OP_SMOD,
  DSGA_OP_UDIV, DSGA_OP_UMOD, DSGA_OP_MUL, DSGA_OP_AND,
  DSGA_OP_OR, DSGA_OP_XOR, DSGA_OP_STO, DSGA_OP_RST,
  DSGA_OP_STOP, DSGA_OP_ROR, DSGA_OP_SCMP, DSGA_OP_UCMP,
  DSGA_OP_SHL, DSGA_OP_SHR, DSGA_OP_SAR
}
 
enum  RandomizedSpriteGroupCompareMode { RSG_CMP_ANY, RSG_CMP_ALL }
 

Functions

static uint32 GetRegister (uint i)
 Gets the value of a so-called newgrf "register". More...
 

Variables

SpriteGroupPool _spritegroup_pool
 

Detailed Description

Action 2 handling.

Definition in file newgrf_spritegroup.h.

Enumeration Type Documentation

◆ DeterministicSpriteGroupAdjustOperation

Enumerator
DSGA_OP_ADD 

a + b

DSGA_OP_SUB 

a - b

DSGA_OP_SMIN 

(signed) min(a, b)

DSGA_OP_SMAX 

(signed) max(a, b)

DSGA_OP_UMIN 

(unsigned) min(a, b)

DSGA_OP_UMAX 

(unsigned) max(a, b)

DSGA_OP_SDIV 

(signed) a / b

DSGA_OP_SMOD 

(signed) a % b

DSGA_OP_UDIV 

(unsigned) a / b

DSGA_OP_UMOD 

(unsigned) a & b

DSGA_OP_MUL 

a * b

DSGA_OP_AND 

a & b

DSGA_OP_OR 

a | b

DSGA_OP_XOR 

a ^ b

DSGA_OP_STO 

store a into temporary storage, indexed by b. return a

DSGA_OP_RST 

return b

DSGA_OP_STOP 

store a into persistent storage, indexed by b, return a

DSGA_OP_ROR 

rotate a b positions to the right

DSGA_OP_SCMP 

(signed) comparison (a < b -> 0, a == b = 1, a > b = 2)

DSGA_OP_UCMP 

(unsigned) comparison (a < b -> 0, a == b = 1, a > b = 2)

DSGA_OP_SHL 

a << b

DSGA_OP_SHR 

(unsigned) a >> b

DSGA_OP_SAR 

(signed) a >> b

Definition at line 123 of file newgrf_spritegroup.h.

◆ VarSpriteGroupScope

Enumerator
VSG_SCOPE_SELF 

Resolved object itself.

VSG_SCOPE_PARENT 

Related object of the resolved one.

VSG_SCOPE_RELATIVE 

Relative position (vehicles only)

Definition at line 100 of file newgrf_spritegroup.h.

Function Documentation

◆ GetRegister()

static uint32 GetRegister ( uint  i)
inlinestatic

Gets the value of a so-called newgrf "register".

Parameters
iindex of the register
Precondition
i < 0x110
Returns
the value of the register

Definition at line 30 of file newgrf_spritegroup.h.

Referenced by GetCountAndDistanceOfClosestInstance(), VehicleResolverObject::GetScope(), and TownScopeResolver::GetVariable().