diff options
author | rubidium <rubidium@openttd.org> | 2010-08-28 18:28:34 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2010-08-28 18:28:34 +0000 |
commit | e0ba6550d2885ccfade874679fa792648df416f5 (patch) | |
tree | bdb38086be6f15051871ce66bb6c325a4fba2d3f /src/object_cmd.cpp | |
parent | b376f8ae15a053c3a8f54431517da0c235f45489 (diff) | |
download | openttd-e0ba6550d2885ccfade874679fa792648df416f5.tar.xz |
(svn r20658) -Codechange: add the colour of an object to the object instance
Diffstat (limited to 'src/object_cmd.cpp')
-rw-r--r-- | src/object_cmd.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
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); |