summaryrefslogtreecommitdiff
path: root/src/object_cmd.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2010-08-28 18:28:34 +0000
committerrubidium <rubidium@openttd.org>2010-08-28 18:28:34 +0000
commite0ba6550d2885ccfade874679fa792648df416f5 (patch)
treebdb38086be6f15051871ce66bb6c325a4fba2d3f /src/object_cmd.cpp
parentb376f8ae15a053c3a8f54431517da0c235f45489 (diff)
downloadopenttd-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.cpp18
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);