mirror of https://github.com/OpenTTD/OpenTTD
(svn r20661) -Codechange: implement the "decide colour" callback for objects
parent
852bde0bad
commit
ee8c37c3d9
|
@ -265,7 +265,7 @@ enum CallbackID {
|
||||||
CBID_OBJECT_ANIMATION_SPEED = 0x15A, // 8 bit callback, not implemented
|
CBID_OBJECT_ANIMATION_SPEED = 0x15A, // 8 bit callback, not implemented
|
||||||
|
|
||||||
/** Called to determine the colour of a town building. */
|
/** Called to determine the colour of a town building. */
|
||||||
CBID_OBJECT_COLOUR = 0x15B, // 15 bit callback, not implemented
|
CBID_OBJECT_COLOUR = 0x15B, // 15 bit callback
|
||||||
|
|
||||||
/** Called to determine more text in the fund object window */
|
/** Called to determine more text in the fund object window */
|
||||||
CBID_OBJECT_FUND_MORE_TEXT = 0x15C, // 15 bit callback, not implemented
|
CBID_OBJECT_FUND_MORE_TEXT = 0x15C, // 15 bit callback, not implemented
|
||||||
|
|
|
@ -75,6 +75,11 @@ void BuildObject(ObjectType type, TileIndex tile, CompanyID owner, Town *town)
|
||||||
/* If the object wants only one colour, then give it that colour. */
|
/* If the object wants only one colour, then give it that colour. */
|
||||||
if ((spec->flags & OBJECT_FLAG_2CC_COLOUR) == 0) o->colour &= 0xF;
|
if ((spec->flags & OBJECT_FLAG_2CC_COLOUR) == 0) o->colour &= 0xF;
|
||||||
|
|
||||||
|
if (HasBit(spec->callback_mask, CBM_OBJ_COLOUR)) {
|
||||||
|
uint16 res = GetObjectCallback(CBID_OBJECT_COLOUR, o->colour, 0, spec, o, tile);
|
||||||
|
if (res != CALLBACK_FAILED) o->colour = GB(res, 0, 8);
|
||||||
|
}
|
||||||
|
|
||||||
assert(o->town != NULL);
|
assert(o->town != NULL);
|
||||||
|
|
||||||
TILE_AREA_LOOP(t, ta) {
|
TILE_AREA_LOOP(t, ta) {
|
||||||
|
|
Loading…
Reference in New Issue