From e0ba6550d2885ccfade874679fa792648df416f5 Mon Sep 17 00:00:00 2001 From: rubidium Date: Sat, 28 Aug 2010 18:28:34 +0000 Subject: (svn r20658) -Codechange: add the colour of an object to the object instance --- src/object_cmd.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'src/object_cmd.cpp') diff --git a/src/object_cmd.cpp b/src/object_cmd.cpp index 87d5f7369..29564f8fe 100644 --- a/src/object_cmd.cpp +++ b/src/object_cmd.cpp @@ -59,9 +59,21 @@ void BuildObject(ObjectType type, TileIndex tile, CompanyID owner, Town *town) TileArea ta(tile, GB(spec->size, 0, 4), GB(spec->size, 4, 4)); Object *o = new Object(); - o->location = ta; - o->town = town == NULL ? CalcClosestTownFromTile(tile) : town; - o->build_date = _date; + o->location = ta; + o->town = town == NULL ? CalcClosestTownFromTile(tile) : town; + o->build_date = _date; + + /* If nothing owns the object, the colour will be random. Otherwise + * get the colour from the company's livery settings. */ + if (owner == OWNER_NONE) { + o->colour = Random(); + } else { + const Livery *l = Company::Get(owner)->livery; + o->colour = l->colour1 + l->colour2 * 16; + } + + /* If the object wants only one colour, then give it that colour. */ + if ((spec->flags & OBJECT_FLAG_2CC_COLOUR) == 0) o->colour &= 0xF; assert(o->town != NULL); -- cgit v1.2.3-54-g00ecf