summaryrefslogtreecommitdiff
path: root/players.c
diff options
context:
space:
mode:
authorpeter1138 <peter1138@openttd.org>2006-09-15 12:27:00 +0000
committerpeter1138 <peter1138@openttd.org>2006-09-15 12:27:00 +0000
commite47dd91c8b133e548aa8f19e26c78818eaa433c5 (patch)
tree6be6ff0e643324d0e4e0cab08f87ce515f7152ca /players.c
parentd1508bbd6cbcf991fffe03d41918f177a6cec330 (diff)
downloadopenttd-e47dd91c8b133e548aa8f19e26c78818eaa433c5.tar.xz
(svn r6455) - Feature: Add 2cc (two company colours) livery schemes. This replaces the original colour selection window and bumps the saveload version. Liveries are supported for all vehicles, not just those with 2cc support. Thanks to lakie for GUI inspiration.
Diffstat (limited to 'players.c')
-rw-r--r--players.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/players.c b/players.c
index 9e7aa8515..308eb71bd 100644
--- a/players.c
+++ b/players.c
@@ -481,6 +481,17 @@ static Player *AllocatePlayer(void)
return NULL;
}
+void ResetPlayerLivery(Player *p)
+{
+ LiveryScheme scheme;
+
+ for (scheme = 0; scheme < LS_END; scheme++) {
+ p->livery[scheme].in_use = false;
+ p->livery[scheme].colour1 = p->player_color;
+ p->livery[scheme].colour2 = p->player_color;
+ }
+}
+
Player *DoStartupNewPlayer(bool is_ai)
{
Player *p;
@@ -490,6 +501,7 @@ Player *DoStartupNewPlayer(bool is_ai)
// Make a color
p->player_color = GeneratePlayerColor();
+ ResetPlayerLivery(p);
_player_colors[p->index] = p->player_color;
p->name_1 = STR_SV_UNNAMED;
p->is_active = true;
@@ -1253,6 +1265,13 @@ static const SaveLoad _player_ai_build_rec_desc[] = {
SLE_END()
};
+static const SaveLoad _player_livery_desc[] = {
+ SLE_CONDVAR(Livery, in_use, SLE_BOOL, 34, SL_MAX_VERSION),
+ SLE_CONDVAR(Livery, colour1, SLE_UINT8, 34, SL_MAX_VERSION),
+ SLE_CONDVAR(Livery, colour2, SLE_UINT8, 34, SL_MAX_VERSION),
+ SLE_END()
+};
+
static void SaveLoad_PLYR(Player* p)
{
int i;
@@ -1274,6 +1293,11 @@ static void SaveLoad_PLYR(Player* p)
for (i = 0; i < p->num_valid_stat_ent; i++) {
SlObject(&p->old_economy[i], _player_economy_desc);
}
+
+ // Write each livery entry.
+ for (i = 0; i < LS_END; i++) {
+ SlObject(&p->livery[i], _player_livery_desc);
+ }
}
static void Save_PLYR(void)