From 5d2e73ae25e6b74efdd2e0fe6eaeb6d4664ae7f3 Mon Sep 17 00:00:00 2001 From: hexdec Date: Wed, 13 Aug 2014 02:16:28 +0200 Subject: [PATCH 01/28] Initial work on 0x006BEF1B. --- src/window_peep.c | 63 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/src/window_peep.c b/src/window_peep.c index 049a36142b..838f3e6de4 100644 --- a/src/window_peep.c +++ b/src/window_peep.c @@ -174,6 +174,64 @@ void window_peep_open(rct_peep* peep){ RCT2_CALLPROC_X(0x0069883C, 0, 0, 0, 0, (int)window, 0, 0); } +rct_window* sub_6BEF1B(int eax, int ecx, int edx, rct_peep* peep) +{ + int v3 = eax; // push eax + + ecx = 262167; // mov ecx, 40017h + int ebx = 0xB400BE; // mov ebx, offset unk_B400BE + edx = 0x992AEC; // mov edx, offset off_992AEC + + int esi, edi; + RCT2_CALLFUNC_X(0x6EA9B1, &eax, &ebx, &ecx, &edx, &esi, &edi, (int*)peep); // sub_6EA9B1(262167, off_992AEC); + + rct_window* w = (rct_window*)esi; + + w->widgets = RCT2_GLOBAL(0x9AF81C, rct_widget*); + w->enabled_widgets = RCT2_GLOBAL(0x9929B0, uint32); + w->number = v3; + w->page = 0; + w->var_482 = 0; + w->frame_no = 0; + + RCT2_GLOBAL(esi + 1174, sint16) = 0; // ?? + + //RCT2_GLOBAL(esi + 40, uint32) = 0x9AF81C; + //RCT2_GLOBAL(esi + 8, uint32) = RCT2_GLOBAL(0x9929B0, uint32); + //RCT2_GLOBAL(esi + 60, uint16) = v3; + //RCT2_GLOBAL(esi + 1162, sint16) = 0; // page + //RCT2_GLOBAL(esi + 1154, sint16) = 0; + //RCT2_GLOBAL(esi + 1166, sint16) = 0; // frame_no + + + eax = v3; // pop eax + + RCT2_CALLFUNC_X(0x6BED21, &eax, &ebx, &ecx, &edx, &esi, &edi, (int*)peep); // sub_6BED21(); + + w->min_width = 190; + w->min_height = 180; + w->max_width = 500; + w->max_height = 450; + + // RCT2_GLOBAL(esi + 52, sint16) = 190; // mix_width + // RCT2_GLOBAL(esi + 56, sint16) = 180; // min_height + // RCT2_GLOBAL(esi + 54, sint16) = 500; // max_width + // RCT2_GLOBAL(esi + 58, sint16) = 450; // max_height + + RCT2_GLOBAL(esi + 62, uint16) = RCT2_GLOBAL(esi + 62, uint16) | 8; // flags???? + + w->colours[0] = 1; + w->colours[1] = 4; + w->colours[2] = 4; + + // Colours + // RCT2_GLOBAL(esi + 1210, uint8) = 1; + // RCT2_GLOBAL(esi + 1211, uint8) = 4; + // RCT2_GLOBAL(esi + 1212, uint8) = 4; + + return w; +} + /** * * rct2: 0x006BEE98 @@ -188,8 +246,9 @@ void window_staff_peep_open(rct_peep* peep) ecx = WC_PEEP; edx = peep->sprite_index; - RCT2_CALLFUNC_X(0x006BEF1B, &eax, &ebx, &ecx, &edx, &esi, &edi, (int*)peep); - w = (rct_window*)esi; + //RCT2_CALLFUNC_X(0x006BEF1B, &eax, &ebx, &ecx, &edx, &esi, &edi, (int*)peep); + w = sub_6BEF1B(eax, ecx, edx, peep); + //w = (rct_window*)esi; } int PEEP_BACKGROUND_IDX = 0; From 67e0afca70a724b3e936c74eabb2deca13f7495b Mon Sep 17 00:00:00 2001 From: hexdec Date: Wed, 13 Aug 2014 02:23:59 +0200 Subject: [PATCH 02/28] Removed comments, removed v3 variable. --- src/window_peep.c | 46 ++++++++++++++++------------------------------ 1 file changed, 16 insertions(+), 30 deletions(-) diff --git a/src/window_peep.c b/src/window_peep.c index 838f3e6de4..c60d1b89f4 100644 --- a/src/window_peep.c +++ b/src/window_peep.c @@ -174,61 +174,46 @@ void window_peep_open(rct_peep* peep){ RCT2_CALLPROC_X(0x0069883C, 0, 0, 0, 0, (int)window, 0, 0); } +/** + * Create the window for a specific peep. + * + * rct2: 0x006BEF1B + */ rct_window* sub_6BEF1B(int eax, int ecx, int edx, rct_peep* peep) { - int v3 = eax; // push eax - - ecx = 262167; // mov ecx, 40017h - int ebx = 0xB400BE; // mov ebx, offset unk_B400BE - edx = 0x992AEC; // mov edx, offset off_992AEC + ecx = 262167; + int ebx = 0xB400BE; + edx = 0x992AEC; - int esi, edi; - RCT2_CALLFUNC_X(0x6EA9B1, &eax, &ebx, &ecx, &edx, &esi, &edi, (int*)peep); // sub_6EA9B1(262167, off_992AEC); + // Get ESI. + int _eax = eax, esi, edi; + RCT2_CALLFUNC_X(0x6EA9B1, &_eax, &ebx, &ecx, &edx, &esi, &edi, (int*)peep); + // Create the window from the ESI. rct_window* w = (rct_window*)esi; w->widgets = RCT2_GLOBAL(0x9AF81C, rct_widget*); w->enabled_widgets = RCT2_GLOBAL(0x9929B0, uint32); - w->number = v3; + w->number = eax; w->page = 0; w->var_482 = 0; w->frame_no = 0; RCT2_GLOBAL(esi + 1174, sint16) = 0; // ?? - - //RCT2_GLOBAL(esi + 40, uint32) = 0x9AF81C; - //RCT2_GLOBAL(esi + 8, uint32) = RCT2_GLOBAL(0x9929B0, uint32); - //RCT2_GLOBAL(esi + 60, uint16) = v3; - //RCT2_GLOBAL(esi + 1162, sint16) = 0; // page - //RCT2_GLOBAL(esi + 1154, sint16) = 0; - //RCT2_GLOBAL(esi + 1166, sint16) = 0; // frame_no - - eax = v3; // pop eax - - RCT2_CALLFUNC_X(0x6BED21, &eax, &ebx, &ecx, &edx, &esi, &edi, (int*)peep); // sub_6BED21(); + RCT2_CALLFUNC_X(0x6BED21, &eax, &ebx, &ecx, &edx, &esi, &edi, (int*)peep); w->min_width = 190; w->min_height = 180; w->max_width = 500; w->max_height = 450; - // RCT2_GLOBAL(esi + 52, sint16) = 190; // mix_width - // RCT2_GLOBAL(esi + 56, sint16) = 180; // min_height - // RCT2_GLOBAL(esi + 54, sint16) = 500; // max_width - // RCT2_GLOBAL(esi + 58, sint16) = 450; // max_height - RCT2_GLOBAL(esi + 62, uint16) = RCT2_GLOBAL(esi + 62, uint16) | 8; // flags???? w->colours[0] = 1; w->colours[1] = 4; w->colours[2] = 4; - // Colours - // RCT2_GLOBAL(esi + 1210, uint8) = 1; - // RCT2_GLOBAL(esi + 1211, uint8) = 4; - // RCT2_GLOBAL(esi + 1212, uint8) = 4; - return w; } @@ -247,8 +232,9 @@ void window_staff_peep_open(rct_peep* peep) edx = peep->sprite_index; //RCT2_CALLFUNC_X(0x006BEF1B, &eax, &ebx, &ecx, &edx, &esi, &edi, (int*)peep); - w = sub_6BEF1B(eax, ecx, edx, peep); //w = (rct_window*)esi; + + w = sub_6BEF1B(eax, ecx, edx, peep); } int PEEP_BACKGROUND_IDX = 0; From 3f10c76344b5895a95acfbbd42372281fd78db60 Mon Sep 17 00:00:00 2001 From: hexdec Date: Wed, 13 Aug 2014 21:22:59 +0200 Subject: [PATCH 03/28] Cleaned up more code in sub_6BEF1B. --- src/window_peep.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/window_peep.c b/src/window_peep.c index c60d1b89f4..cbf2b791c6 100644 --- a/src/window_peep.c +++ b/src/window_peep.c @@ -182,15 +182,16 @@ void window_peep_open(rct_peep* peep){ rct_window* sub_6BEF1B(int eax, int ecx, int edx, rct_peep* peep) { ecx = 262167; - int ebx = 0xB400BE; - edx = 0x992AEC; + int ebx = 0xB400BE; // mov ebx, offset unk_B400BE + edx = 0x992AEC; // mov edx, offset off_992AEC - // Get ESI. - int _eax = eax, esi, edi; - RCT2_CALLFUNC_X(0x6EA9B1, &_eax, &ebx, &ecx, &edx, &esi, &edi, (int*)peep); + int window_id; // esi + + int _eax = eax, edi; + RCT2_CALLFUNC_X(0x6EA9B1, &eax, &ebx, &ecx, &edx, &window_id, &edi, (int*)peep); // Create the window from the ESI. - rct_window* w = (rct_window*)esi; + rct_window* w = (rct_window*)window_id; w->widgets = RCT2_GLOBAL(0x9AF81C, rct_widget*); w->enabled_widgets = RCT2_GLOBAL(0x9929B0, uint32); @@ -199,18 +200,19 @@ rct_window* sub_6BEF1B(int eax, int ecx, int edx, rct_peep* peep) w->var_482 = 0; w->frame_no = 0; - RCT2_GLOBAL(esi + 1174, sint16) = 0; // ?? + RCT2_GLOBAL(window_id + 0x496, uint16) = 0; // missing var_494 should perhaps be uint16? - RCT2_CALLFUNC_X(0x6BED21, &eax, &ebx, &ecx, &edx, &esi, &edi, (int*)peep); + RCT2_CALLFUNC_X(0x6BED21, &eax, &ebx, &ecx, &edx, &window_id, &edi, (int*)peep); w->min_width = 190; w->min_height = 180; w->max_width = 500; w->max_height = 450; - RCT2_GLOBAL(esi + 62, uint16) = RCT2_GLOBAL(esi + 62, uint16) | 8; // flags???? + w->flags |= 1 << 8; - w->colours[0] = 1; + //w->colours[0] = 1; + w->colours[0] = 16; w->colours[1] = 4; w->colours[2] = 4; From 6217440bc9cecfe6911ee607ba242679e9892fe5 Mon Sep 17 00:00:00 2001 From: hexdec Date: Wed, 13 Aug 2014 23:39:21 +0200 Subject: [PATCH 04/28] Added sub_6BED21 (called from sub_6BEF1B). --- src/window_peep.c | 60 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/src/window_peep.c b/src/window_peep.c index cbf2b791c6..91d9d2bfe8 100644 --- a/src/window_peep.c +++ b/src/window_peep.c @@ -174,6 +174,61 @@ void window_peep_open(rct_peep* peep){ RCT2_CALLPROC_X(0x0069883C, 0, 0, 0, 0, (int)window, 0, 0); } +void sub_6BED21(rct_window* w) +{ + int eax = 0 | 0x80; + uint32 esi = 0x10E63BC + (w->number << 8); + + if (RCT2_GLOBAL(esi + 0x2F, uint8) == 2) { // Staff type? + eax |= 0x20; + } + + //RCT2_CALLFUNC_X(0x698827, 0, 0, 0, 0, 0, 0, 0); + // sub_698827 + // This is here due to needing the Carry Flag. + + int CF = 0; + int _eax = RCT2_GLOBAL(esi + 0x2B, uint8); // State? + int res = RCT2_GLOBAL(0x982004 + _eax, uint8) & 1; + + if (res == 0) { + CF = 1; + } else { + eax = eax & eax; + } + + // end sub_698827 + + // pop esi + if (CF == 1) + goto loc_6BED50; + +loc_6BED47: + + CF = w->disabled_widgets & (1 << 0xA); //bt dword ptr [esi+10h], 0Ah + if (CF == 1) { + goto loc_6BED66; //jb short loc_6BED66 + } + goto loc_6BED6B; //jmp short loc_6BED6B + +loc_6BED50: + if (w->page != 0) //cmp word ptr [esi+48Ah], 0 + goto loc_6BED47; //jnz short loc_6BED47 + + eax |= 0x400; //or eax, 400h + + CF = w->disabled_widgets & (1 << 0xA); //bt dword ptr[esi + 10h], 0Ah + if (CF == 1) { + goto loc_6BED6B; //jb short loc_6BED6B + } + +loc_6BED66: + RCT2_CALLFUNC_X(0x6EB13A, 0, 0, 0, 0, 0, 0, 0); + +loc_6BED6B: + w->disabled_widgets = eax; +} + /** * Create the window for a specific peep. * @@ -188,7 +243,7 @@ rct_window* sub_6BEF1B(int eax, int ecx, int edx, rct_peep* peep) int window_id; // esi int _eax = eax, edi; - RCT2_CALLFUNC_X(0x6EA9B1, &eax, &ebx, &ecx, &edx, &window_id, &edi, (int*)peep); + RCT2_CALLFUNC_X(0x6EA9B1, &_eax, &ebx, &ecx, &edx, &window_id, &edi, (int*)peep); // Create the window from the ESI. rct_window* w = (rct_window*)window_id; @@ -202,7 +257,8 @@ rct_window* sub_6BEF1B(int eax, int ecx, int edx, rct_peep* peep) RCT2_GLOBAL(window_id + 0x496, uint16) = 0; // missing var_494 should perhaps be uint16? - RCT2_CALLFUNC_X(0x6BED21, &eax, &ebx, &ecx, &edx, &window_id, &edi, (int*)peep); + //RCT2_CALLFUNC_X(0x6BED21, &eax, &ebx, &ecx, &edx, &window_id, &edi, (int*)peep); + sub_6BED21(w); w->min_width = 190; w->min_height = 180; From 31440c9da7d49c10845e998d057ea79cf4212ea9 Mon Sep 17 00:00:00 2001 From: hexdec Date: Thu, 14 Aug 2014 00:01:17 +0200 Subject: [PATCH 05/28] Removed goto in sub_6BED21. --- src/window_peep.c | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/src/window_peep.c b/src/window_peep.c index 91d9d2bfe8..155e954a02 100644 --- a/src/window_peep.c +++ b/src/window_peep.c @@ -199,33 +199,23 @@ void sub_6BED21(rct_window* w) // end sub_698827 + int a = 0; + // pop esi - if (CF == 1) - goto loc_6BED50; + if (CF == 1 && w->page == 0) { + eax |= 0x400; //or eax, 400h -loc_6BED47: - - CF = w->disabled_widgets & (1 << 0xA); //bt dword ptr [esi+10h], 0Ah - if (CF == 1) { - goto loc_6BED66; //jb short loc_6BED66 - } - goto loc_6BED6B; //jmp short loc_6BED6B - -loc_6BED50: - if (w->page != 0) //cmp word ptr [esi+48Ah], 0 - goto loc_6BED47; //jnz short loc_6BED47 - - eax |= 0x400; //or eax, 400h - - CF = w->disabled_widgets & (1 << 0xA); //bt dword ptr[esi + 10h], 0Ah - if (CF == 1) { - goto loc_6BED6B; //jb short loc_6BED6B + a = w->disabled_widgets & (1 << 0xA); //bt dword ptr[esi + 10h], 0Ah + } -loc_6BED66: - RCT2_CALLFUNC_X(0x6EB13A, 0, 0, 0, 0, 0, 0, 0); + if (a != 1) { + CF = w->disabled_widgets & (1 << 0xA); //bt dword ptr [esi+10h], 0Ah + if (CF == 1) { + RCT2_CALLFUNC_X(0x6EB13A, 0, 0, 0, 0, (int)w, 0, 0); + } + } -loc_6BED6B: w->disabled_widgets = eax; } From 229dedbb64d44daf7dce59438244c24b1aa650a8 Mon Sep 17 00:00:00 2001 From: hexdec Date: Thu, 14 Aug 2014 00:07:47 +0200 Subject: [PATCH 06/28] Changed hardcode address to RCT2_ADDRESS_SPRITE_LIST. --- src/window_peep.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/window_peep.c b/src/window_peep.c index 155e954a02..81fc75f571 100644 --- a/src/window_peep.c +++ b/src/window_peep.c @@ -177,7 +177,7 @@ void window_peep_open(rct_peep* peep){ void sub_6BED21(rct_window* w) { int eax = 0 | 0x80; - uint32 esi = 0x10E63BC + (w->number << 8); + uint32 esi = RCT2_ADDRESS_SPRITE_LIST + (w->number << 8); if (RCT2_GLOBAL(esi + 0x2F, uint8) == 2) { // Staff type? eax |= 0x20; @@ -209,7 +209,7 @@ void sub_6BED21(rct_window* w) } - if (a != 1) { + if (a == 0) { CF = w->disabled_widgets & (1 << 0xA); //bt dword ptr [esi+10h], 0Ah if (CF == 1) { RCT2_CALLFUNC_X(0x6EB13A, 0, 0, 0, 0, (int)w, 0, 0); From af06b5aae21276c024dbd2d6eac2b1db8f5e4e9b Mon Sep 17 00:00:00 2001 From: hexdec Date: Thu, 14 Aug 2014 00:18:33 +0200 Subject: [PATCH 07/28] Changed sub_6EBED21 to use peep as a parameter. --- src/window_peep.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/window_peep.c b/src/window_peep.c index 81fc75f571..b37b52e120 100644 --- a/src/window_peep.c +++ b/src/window_peep.c @@ -174,12 +174,11 @@ void window_peep_open(rct_peep* peep){ RCT2_CALLPROC_X(0x0069883C, 0, 0, 0, 0, (int)window, 0, 0); } -void sub_6BED21(rct_window* w) +void sub_6BED21(rct_window* w, rct_peep* peep) { int eax = 0 | 0x80; - uint32 esi = RCT2_ADDRESS_SPRITE_LIST + (w->number << 8); - if (RCT2_GLOBAL(esi + 0x2F, uint8) == 2) { // Staff type? + if (peep->staff_type == 2) { eax |= 0x20; } @@ -188,8 +187,7 @@ void sub_6BED21(rct_window* w) // This is here due to needing the Carry Flag. int CF = 0; - int _eax = RCT2_GLOBAL(esi + 0x2B, uint8); // State? - int res = RCT2_GLOBAL(0x982004 + _eax, uint8) & 1; + int res = RCT2_GLOBAL(0x982004 + peep->state, uint8) & 1; if (res == 0) { CF = 1; @@ -248,7 +246,7 @@ rct_window* sub_6BEF1B(int eax, int ecx, int edx, rct_peep* peep) RCT2_GLOBAL(window_id + 0x496, uint16) = 0; // missing var_494 should perhaps be uint16? //RCT2_CALLFUNC_X(0x6BED21, &eax, &ebx, &ecx, &edx, &window_id, &edi, (int*)peep); - sub_6BED21(w); + sub_6BED21(w, peep); w->min_width = 190; w->min_height = 180; From db42345d947c7ddb13be723101bd305fe8e69ec7 Mon Sep 17 00:00:00 2001 From: hexdec Date: Thu, 14 Aug 2014 00:32:18 +0200 Subject: [PATCH 08/28] Used proper function for window_invalidate. --- src/window_peep.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/window_peep.c b/src/window_peep.c index b37b52e120..0965613bdd 100644 --- a/src/window_peep.c +++ b/src/window_peep.c @@ -210,7 +210,7 @@ void sub_6BED21(rct_window* w, rct_peep* peep) if (a == 0) { CF = w->disabled_widgets & (1 << 0xA); //bt dword ptr [esi+10h], 0Ah if (CF == 1) { - RCT2_CALLFUNC_X(0x6EB13A, 0, 0, 0, 0, (int)w, 0, 0); + window_invalidate(w); } } From 5c1a19e1de922bd52ee74870d5678c7e83f00940 Mon Sep 17 00:00:00 2001 From: hexdec Date: Thu, 14 Aug 2014 15:28:22 +0200 Subject: [PATCH 09/28] Changed sub_6BEF1B to use window_create_auto_pos rather than the subfunction. --- src/window_peep.c | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/src/window_peep.c b/src/window_peep.c index 0965613bdd..48bdefe840 100644 --- a/src/window_peep.c +++ b/src/window_peep.c @@ -224,17 +224,10 @@ void sub_6BED21(rct_window* w, rct_peep* peep) */ rct_window* sub_6BEF1B(int eax, int ecx, int edx, rct_peep* peep) { - ecx = 262167; - int ebx = 0xB400BE; // mov ebx, offset unk_B400BE - edx = 0x992AEC; // mov edx, offset off_992AEC + ecx = 0x38ae7; // class and flags + edx = 0x992AEC; // event handler - int window_id; // esi - - int _eax = eax, edi; - RCT2_CALLFUNC_X(0x6EA9B1, &_eax, &ebx, &ecx, &edx, &window_id, &edi, (int*)peep); - - // Create the window from the ESI. - rct_window* w = (rct_window*)window_id; + rct_window* w = window_create_auto_pos(190, 180, edx, ecx, 0); w->widgets = RCT2_GLOBAL(0x9AF81C, rct_widget*); w->enabled_widgets = RCT2_GLOBAL(0x9929B0, uint32); @@ -243,9 +236,8 @@ rct_window* sub_6BEF1B(int eax, int ecx, int edx, rct_peep* peep) w->var_482 = 0; w->frame_no = 0; - RCT2_GLOBAL(window_id + 0x496, uint16) = 0; // missing var_494 should perhaps be uint16? + RCT2_GLOBAL((int*)w + 0x496, uint16) = 0; // missing var_494 should perhaps be uint16? - //RCT2_CALLFUNC_X(0x6BED21, &eax, &ebx, &ecx, &edx, &window_id, &edi, (int*)peep); sub_6BED21(w, peep); w->min_width = 190; @@ -255,8 +247,7 @@ rct_window* sub_6BEF1B(int eax, int ecx, int edx, rct_peep* peep) w->flags |= 1 << 8; - //w->colours[0] = 1; - w->colours[0] = 16; + w->colours[0] = 1; w->colours[1] = 4; w->colours[2] = 4; @@ -289,7 +280,8 @@ void window_staff_peep_open(rct_peep* peep) w->var_020 = RCT2_GLOBAL(0x9929BC, uint32); w->event_handlers = (uint32*)RCT2_GLOBAL(0x9929A4, uint32); w->pressed_widgets = 0; - RCT2_CALLPROC_X(0x006BED21, 0, 0, 0, 0, (int)w, 0, 0); + sub_6BED21(w, peep); + //RCT2_CALLPROC_X(0x006BED21, 0, 0, 0, 0, (int)w, 0, 0); window_init_scroll_widgets(w); RCT2_CALLPROC_X(0x006BEDA3, 0, 0, 0, 0, (int)w, 0, 0); if (g_sprite_list[w->number].peep.state == PEEP_STATE_PICKED) { From 593841060fca8f85222f5c42fa3cd2f03073ec77 Mon Sep 17 00:00:00 2001 From: hexdec Date: Thu, 14 Aug 2014 15:33:57 +0200 Subject: [PATCH 10/28] Removed unused parameters, fixed warning. --- src/window_peep.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/window_peep.c b/src/window_peep.c index 48bdefe840..34fd46a445 100644 --- a/src/window_peep.c +++ b/src/window_peep.c @@ -222,12 +222,14 @@ void sub_6BED21(rct_window* w, rct_peep* peep) * * rct2: 0x006BEF1B */ -rct_window* sub_6BEF1B(int eax, int ecx, int edx, rct_peep* peep) +rct_window* sub_6BEF1B(rct_peep* peep) { - ecx = 0x38ae7; // class and flags - edx = 0x992AEC; // event handler + int eax = peep->sprite_index; + + int ecx = 0x38ae7; // class and flags + int edx = 0x992AEC; // event handler - rct_window* w = window_create_auto_pos(190, 180, edx, ecx, 0); + rct_window* w = window_create_auto_pos(190, 180, (uint32*)edx, ecx, 0); w->widgets = RCT2_GLOBAL(0x9AF81C, rct_widget*); w->enabled_widgets = RCT2_GLOBAL(0x9929B0, uint32); @@ -262,16 +264,16 @@ void window_staff_peep_open(rct_peep* peep) { rct_window* w = window_bring_to_front_by_id(WC_PEEP, peep->sprite_index); if (!w) { - int eax, ebx, ecx, edx, esi, edi; + //int eax, ebx, ecx, edx, esi, edi; - eax = peep->sprite_index; - ecx = WC_PEEP; - edx = peep->sprite_index; + //eax = peep->sprite_index; + //ecx = WC_PEEP; + //edx = peep->sprite_index; //RCT2_CALLFUNC_X(0x006BEF1B, &eax, &ebx, &ecx, &edx, &esi, &edi, (int*)peep); //w = (rct_window*)esi; - w = sub_6BEF1B(eax, ecx, edx, peep); + w = sub_6BEF1B(peep); } int PEEP_BACKGROUND_IDX = 0; From d3a55efd30dffcb08efba7d4b3adbf2259d2e857 Mon Sep 17 00:00:00 2001 From: hexdec Date: Sun, 17 Aug 2014 01:34:05 +0200 Subject: [PATCH 11/28] Added window_peep_staff_events. --- src/window_peep.c | 44 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/src/window_peep.c b/src/window_peep.c index e21585c964..ca67c1e58d 100644 --- a/src/window_peep.c +++ b/src/window_peep.c @@ -112,6 +112,38 @@ void* window_peep_page_events[] = { window_peep_overview_events }; +// 0x992AEC +static void* window_peep_staff_events[] = { + (void*)0x6BDFF8, + (void*)0x6BDF55, + (void*)0x6BE558, + (void*)0x6BDF98, + (void*)0x6BDFA3, + window_peep_emptysub, + (void*)0x6BE602, + window_peep_emptysub, + window_peep_emptysub, + (void*)0x6BDFD8, + (void*)0x6BDFC3, + window_peep_emptysub, + window_peep_emptysub, + (void*)0x6BDFAE, + window_peep_emptysub, + window_peep_emptysub, + window_peep_emptysub, + window_peep_emptysub, + window_peep_emptysub, + (void*)0x6BDFED, + (void*)0x6BE5FC, + window_peep_emptysub, + window_peep_emptysub, + window_peep_emptysub, + window_peep_emptysub, + (void*)0x6BDD91, + (void*)0x6BDEAF, + window_peep_emptysub +}; + uint32 window_peep_page_enabled_widgets[] = { (1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | @@ -174,6 +206,10 @@ void window_peep_open(rct_peep* peep){ RCT2_CALLPROC_X(0x0069883C, 0, 0, 0, 0, (int)window, 0, 0); } +/** + * rct2: 0x006BED21 + * + */ void sub_6BED21(rct_window* w, rct_peep* peep) { int eax = 0 | 0x80; @@ -225,11 +261,9 @@ void sub_6BED21(rct_window* w, rct_peep* peep) rct_window* sub_6BEF1B(rct_peep* peep) { int eax = peep->sprite_index; - int ecx = 0x38ae7; // class and flags - int edx = 0x992AEC; // event handler - rct_window* w = window_create_auto_pos(190, 180, (uint32*)edx, ecx, 0); + rct_window* w = window_create_auto_pos(190, 180, (uint32*)window_peep_staff_events, ecx, 0); w->widgets = RCT2_GLOBAL(0x9AF81C, rct_widget*); w->enabled_widgets = RCT2_GLOBAL(0x9929B0, uint32); @@ -238,7 +272,7 @@ rct_window* sub_6BEF1B(rct_peep* peep) w->var_482 = 0; w->frame_no = 0; - RCT2_GLOBAL((int*)w + 0x496, uint16) = 0; // missing var_494 should perhaps be uint16? + RCT2_GLOBAL((int*)w + 0x496, uint16) = 0; // missing, var_494 should perhaps be uint16? sub_6BED21(w, peep); @@ -247,7 +281,7 @@ rct_window* sub_6BEF1B(rct_peep* peep) w->max_width = 500; w->max_height = 450; - w->flags |= 1 << 8; + w->flags = 8; w->colours[0] = 1; w->colours[1] = 4; From 194368215384ce7501c23910325fc6dc68418476 Mon Sep 17 00:00:00 2001 From: Duncan Frost Date: Sun, 17 Aug 2014 10:11:19 +0100 Subject: [PATCH 12/28] Fixed bug in toolbar widget drawing. Added pause and zoom out disable. --- src/widget.c | 4 ++-- src/window_game_top_toolbar.c | 37 +++++++++++++++++++++++++++++++++-- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/src/widget.c b/src/widget.c index 3cf0aeb95c..1006ca3f13 100644 --- a/src/widget.c +++ b/src/widget.c @@ -318,11 +318,11 @@ static void widget_tab_draw(rct_drawpixelinfo *dpi, rct_window *w, int widgetInd b = w->y + widget->bottom; // Get the colour and image - colour = w->colours[widget->colour] << 19; + colour = w->colours[widget->colour]; image = widget->image + 2; // Draw coloured image - gfx_draw_sprite(dpi, image | colour, l, t, 0); + gfx_draw_sprite(dpi, image | (colour << 19), l, t, 0); } /** diff --git a/src/window_game_top_toolbar.c b/src/window_game_top_toolbar.c index 20e9702f33..bc7e406ee2 100644 --- a/src/window_game_top_toolbar.c +++ b/src/window_game_top_toolbar.c @@ -153,8 +153,27 @@ void window_game_top_toolbar_open() WF_STICK_TO_FRONT | WF_TRANSPARENT | WF_5 ); window->widgets = window_game_top_toolbar_widgets; - window->enabled_widgets |= (1 | 2 | 4 | 8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | - 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000 | 0x20000); + + window->enabled_widgets |= + (1 << WIDX_PAUSE) | + (1 << WIDX_FILE_MENU) | + (1 << WIDX_ZOOM_OUT) | + (1 << WIDX_ZOOM_IN) | + (1 << WIDX_ROTATE) | + (1 << WIDX_VIEW_MENU) | + (1 << WIDX_MAP) | + (1 << WIDX_LAND) | + (1 << WIDX_WATER) | + (1 << WIDX_SCENERY) | + (1 << WIDX_PATH) | + (1 << WIDX_CONSTRUCT_RIDE) | + (1 << WIDX_RIDES) | + (1 << WIDX_PARK) | + (1 << WIDX_STAFF) | + (1 << WIDX_CLEAR_SCENERY) | + (1ULL << WIDX_FASTFORWARD) | + (1ULL << WIDX_RESEARCH); + window_init_scroll_widgets(window); window->colours[0] = 7; window->colours[1] = 12; @@ -187,6 +206,8 @@ static void window_game_top_toolbar_mouseup() switch (widgetIndex) { case WIDX_PAUSE: game_do_command(0, 1, 0, 0, GAME_COMMAND_TOGGLE_PAUSE, 0, 0); + // Not sure where this was done in the original code + w->pressed_widgets ^= (1 << WIDX_PAUSE); break; case WIDX_FASTFORWARD: // This is an excellent place to add in debugging statements and @@ -532,6 +553,18 @@ static void window_game_top_toolbar_invalidate() w->pressed_widgets |= (1 << WIDX_FASTFORWARD); else w->pressed_widgets &= ~(1 << WIDX_FASTFORWARD); + + // Zoomed out/in disable. Not sure where this code is in the original. + if (window_get_main()->viewport->zoom == 0){ + w->disabled_widgets |= (1 << WIDX_ZOOM_IN); + } + else if (window_get_main()->viewport->zoom == 3){ + w->disabled_widgets |= (1 << WIDX_ZOOM_OUT); + } + else + { + w->disabled_widgets &= ~((1 << WIDX_ZOOM_IN) | (1 << WIDX_ZOOM_OUT)); + } } /** From 6258a76b960357bb72a32c0f09580503ff3fee66 Mon Sep 17 00:00:00 2001 From: Duncan Frost Date: Sun, 17 Aug 2014 10:52:12 +0100 Subject: [PATCH 13/28] Fixes upside down graph --- src/graph.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/graph.c b/src/graph.c index d29dab4415..9cb39f564c 100644 --- a/src/graph.c +++ b/src/graph.c @@ -54,7 +54,7 @@ static void graph_draw_line_a_uint8(rct_drawpixelinfo *dpi, uint8 *history, int x = baseX; for (i = count - 1; i >= 0; i--) { if (history[i] != 0 && history[i] != 255) { - y = baseY + (history[i] * 100) / 256; + y = baseY + ((255 - history[i]) * 100) / 256; if (lastX != -1) { gfx_draw_line(dpi, lastX + 1, lastY + 1, x + 1, y + 1, 10); @@ -78,7 +78,7 @@ static void graph_draw_line_b_uint8(rct_drawpixelinfo *dpi, uint8 *history, int x = baseX; for (i = count - 1; i >= 0; i--) { if (history[i] != 0 && history[i] != 255) { - y = baseY + (history[i] * 100) / 256; + y = baseY + ((255 - history[i]) * 100) / 256; if (lastX != -1) gfx_draw_line(dpi, lastX, lastY, x, y, 21); From aa0709c439810c9b2987d599ff642af6c14f5531 Mon Sep 17 00:00:00 2001 From: Duncan Frost Date: Sun, 17 Aug 2014 11:01:34 +0100 Subject: [PATCH 14/28] Fixed clicking on peep causing hybrid --- src/window_peep.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/window_peep.c b/src/window_peep.c index 72be7b5007..44ed2e0bc7 100644 --- a/src/window_peep.c +++ b/src/window_peep.c @@ -129,7 +129,8 @@ uint32 window_peep_page_enabled_widgets[] = { void window_peep_open(rct_peep* peep){ if (peep->type == PEEP_TYPE_STAFF){ - RCT2_CALLPROC_X(0x006989E9, 0, 0, 0, (int)peep, 0, 0, 0); + window_staff_peep_open(peep); + return; } rct_window* window; From b0d39bbf0eeef84bc11c381a707d9d3fbc2244a1 Mon Sep 17 00:00:00 2001 From: Duncan Frost Date: Sun, 17 Aug 2014 11:45:43 +0100 Subject: [PATCH 15/28] Added sepearte file for staff_peep_window --- projects/openrct2.vcxproj | 1 + projects/openrct2.vcxproj.filters | 3 + src/window_peep.c | 32 ------ src/window_staff_peep.c | 157 ++++++++++++++++++++++++++++++ 4 files changed, 161 insertions(+), 32 deletions(-) create mode 100644 src/window_staff_peep.c diff --git a/projects/openrct2.vcxproj b/projects/openrct2.vcxproj index 55b64865eb..ce7c4ed569 100644 --- a/projects/openrct2.vcxproj +++ b/projects/openrct2.vcxproj @@ -123,6 +123,7 @@ + diff --git a/projects/openrct2.vcxproj.filters b/projects/openrct2.vcxproj.filters index 65ac515497..6ae0ef6755 100644 --- a/projects/openrct2.vcxproj.filters +++ b/projects/openrct2.vcxproj.filters @@ -368,6 +368,9 @@ Windows + + Windows + diff --git a/src/window_peep.c b/src/window_peep.c index 44ed2e0bc7..570e8cddcf 100644 --- a/src/window_peep.c +++ b/src/window_peep.c @@ -174,35 +174,3 @@ void window_peep_open(rct_peep* peep){ window_init_scroll_widgets(window); RCT2_CALLPROC_X(0x0069883C, 0, 0, 0, 0, (int)window, 0, 0); } - -/** -* -* rct2: 0x006BEE98 -*/ -void window_staff_peep_open(rct_peep* peep) -{ - rct_window* w = window_bring_to_front_by_id(WC_PEEP, peep->sprite_index); - if (!w) { - int eax, ebx, ecx, edx, esi, edi; - - eax = peep->sprite_index; - ecx = WC_PEEP; - edx = peep->sprite_index; - - RCT2_CALLFUNC_X(0x006BEF1B, &eax, &ebx, &ecx, &edx, &esi, &edi, (int*)peep); - w = (rct_window*)esi; - } - - int PEEP_BACKGROUND_IDX = 0; - w->widgets = RCT2_GLOBAL(0x992998, rct_widget*); - w->enabled_widgets = RCT2_GLOBAL(0x9929B0, uint32); - w->var_020 = RCT2_GLOBAL(0x9929BC, uint32); - w->event_handlers = (uint32*)RCT2_GLOBAL(0x9929A4, uint32); - w->pressed_widgets = 0; - RCT2_CALLPROC_X(0x006BED21, 0, 0, 0, 0, (int)w, 0, 0); - window_init_scroll_widgets(w); - RCT2_CALLPROC_X(0x006BEDA3, 0, 0, 0, 0, (int)w, 0, 0); - if (g_sprite_list[w->number].peep.state == PEEP_STATE_PICKED) { - RCT2_CALLPROC_X(w->event_handlers[1], 0, 0, 0, 10, (int)w, 0, 0); - } -} \ No newline at end of file diff --git a/src/window_staff_peep.c b/src/window_staff_peep.c new file mode 100644 index 0000000000..774569b0f2 --- /dev/null +++ b/src/window_staff_peep.c @@ -0,0 +1,157 @@ +/***************************************************************************** +* Copyright (c) 2014 Ted John, Duncan Frost +* OpenRCT2, an open source clone of Roller Coaster Tycoon 2. +* +* This file is part of OpenRCT2. +* +* OpenRCT2 is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. + +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. + +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "addresses.h" +#include "game.h" +#include "peep.h" +#include "string_ids.h" +#include "sprite.h" +#include "sprites.h" +#include "widget.h" +#include "window.h" +#include "window_dropdown.h" + +enum WINDOW_STAFF_PEEP_PAGE { + WINDOW_STAFF_PEEP_OVERVIEW, + WINDOW_STAFF_PEEP_OPTIONS, + WINDOW_STAFF_PEEP_STATISTICS, +}; + +enum WINDOW_STAFF_PEEP_WIDGET_IDX { + WIDX_BACKGROUND, + WIDX_TITLE, + WIDX_CLOSE, + WIDX_RESIZE, + WIDX_TAB_1, + WIDX_TAB_2, + WIDX_TAB_3, + WIDX_TAB_4, + WIDX_VIEWPORT, + WIDX_BTM_LABEL, + WIDX_PATROL, + WIDX_RENAME, + WIDX_LOCATE, + WIDX_FIRE +}; + +void window_staff_peep_emptysub(){}; + +rct_widget window_staff_peep_overview_widgets[] = { + { WWT_FRAME, 0, 0, 189, 0, 179, 0x0FFFFFFFF, STR_NONE }, // Panel / Background + { WWT_CAPTION, 0, 1, 188, 1, 14, 0x361, STR_WINDOW_TITLE_TIP }, // Title + { WWT_CLOSEBOX, 0, 177, 187, 2, 13, 0x338, STR_CLOSE_WINDOW_TIP }, // Close x button + { WWT_RESIZE, 1, 0, 189, 43, 179, 0x0FFFFFFFF, STR_NONE }, // Resize + { WWT_TAB, 1, 3, 33, 17, 43, 0x2000144E, 1939 }, // Tab 1 + { WWT_TAB, 1, 34, 64, 17, 43, 0x2000144E, 1945}, // Tab 2 + { WWT_TAB, 1, 65, 95, 17, 43, 0x2000144E, 2348}, // Tab 3 + { WWT_TAB, 1, 96, 126, 17, 43, 0x2000144E, STR_NONE}, // Tab 4 + { WWT_VIEWPORT, 1, 3, 164, 47, 166, 0x0FFFFFFFF, STR_NONE}, // Viewport + { WWT_12, 1, 3, 164, 167, 177, 0x0FFFFFFFF, STR_NONE }, // Label at bottom of viewport + { WWT_FLATBTN, 1, 165, 188, 45, 68, 0x1436, 1706}, // Pickup Button + { WWT_FLATBTN, 1, 165, 188, 69, 92, 0x1437, 1708}, // Patrol Button + { WWT_FLATBTN, 1, 165, 188, 93, 116, 0x1430, 1056}, // Rename Button + { WWT_FLATBTN, 1, 165, 188, 117, 140, 0x142F, 1027}, // Locate Button + { WWT_FLATBTN, 1, 165, 188, 141, 164, 0x142D, 1705}, // Fire Button + { WIDGETS_END }, +}; + +rct_widget *window_staff_peep_page_widgets[] = { + window_staff_peep_overview_widgets +}; + +static void* window_staff_peep_overview_events[] = { + (void*)0x6BDFF8, + (void*)0x6BDF55, + (void*)0x6BE558, + (void*)0x6BDF98, + (void*)0x6BDFA3, + window_staff_peep_emptysub, + (void*)0x6BE602, + window_staff_peep_emptysub, + window_staff_peep_emptysub, + (void*)0x6BDFD8, + (void*)0x6BDFC3, + window_staff_peep_emptysub, + window_staff_peep_emptysub, + (void*)0x6BDFAE, + window_staff_peep_emptysub, + window_staff_peep_emptysub, + window_staff_peep_emptysub, + window_staff_peep_emptysub, + window_staff_peep_emptysub, + (void*)0x6BDFED, + (void*)0x6BE5FC, + window_staff_peep_emptysub, + window_staff_peep_emptysub, + window_staff_peep_emptysub, + window_staff_peep_emptysub, + (void*)0x6BDD91, //Invalidate + (void*)0x6BDEAF, //Paint + (void*)0x6BE62A +}; + +void* window_staff_peep_page_events[] = { + window_staff_peep_overview_events +}; + +uint32 window_staff_peep_page_enabled_widgets[] = { + (1 << WIDX_CLOSE) | + (1 << WIDX_TAB_1) | + (1 << WIDX_TAB_2) | + (1 << WIDX_TAB_3) | + (1 << WIDX_PATROL) | + (1 << WIDX_RENAME) | + (1 << WIDX_LOCATE) | + (1 << WIDX_FIRE) | + (1 << 14) +}; + +/** +* +* rct2: 0x006BEE98 +*/ +void window_staff_peep_open(rct_peep* peep) +{ + rct_window* w = window_bring_to_front_by_id(WC_PEEP, peep->sprite_index); + if (!w) { + int eax, ebx, ecx, edx, esi, edi; + + eax = peep->sprite_index; + ecx = WC_PEEP; + edx = peep->sprite_index; + + RCT2_CALLFUNC_X(0x006BEF1B, &eax, &ebx, &ecx, &edx, &esi, &edi, (int*)peep); + w = (rct_window*)esi; + } + w->page = 0; + window_invalidate(w); + + w->widgets = window_staff_peep_overview_widgets; + w->enabled_widgets = window_staff_peep_page_enabled_widgets[0]; + w->var_020 = RCT2_GLOBAL(0x9929BC, uint32); + w->event_handlers = window_staff_peep_page_events[0]; + w->pressed_widgets = 0; + RCT2_CALLPROC_X(0x006BED21, 0, 0, 0, 0, (int)w, 0, 0); + window_init_scroll_widgets(w); + RCT2_CALLPROC_X(0x006BEDA3, 0, 0, 0, 0, (int)w, 0, 0); + if (g_sprite_list[w->number].peep.state == PEEP_STATE_PICKED) { + RCT2_CALLPROC_X(w->event_handlers[WE_MOUSE_UP], 0, 0, 0, 10, (int)w, 0, 0); + } +} \ No newline at end of file From ca49b7ca09f29f631488acd9f00ce0557e0eae1b Mon Sep 17 00:00:00 2001 From: Duncan Frost Date: Sun, 17 Aug 2014 11:57:50 +0100 Subject: [PATCH 16/28] Fix crash on right click of flat rides --- src/game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/game.c b/src/game.c index 1206470e4e..78bf73770f 100644 --- a/src/game.c +++ b/src/game.c @@ -823,7 +823,7 @@ static void game_handle_input_mouse(int x, int y, int state) switch (ebx & 0xFF) { case 2: if (*((uint8*)edx) == 0) - RCT2_CALLPROC_X(0x006B4857, eax, 0, ecx, 0, 0, 0, 0); + RCT2_CALLPROC_X(0x006B4857, eax, 0, ecx, edx, 0, 0, 0); break; case 3: RCT2_CALLPROC_X(0x006CC056, eax, 0, ecx, edx, 0, 0, 0); From 92b74a8debaf8ec16dd5a3f74568b8cbdb253e7f Mon Sep 17 00:00:00 2001 From: IntelOrca Date: Sun, 17 Aug 2014 19:20:45 +0100 Subject: [PATCH 17/28] handle utf8 characters in languages, convert appropriately for #319 --- src/language.c | 41 ++++++++++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/src/language.c b/src/language.c index f1fb93736f..acc06443d5 100644 --- a/src/language.c +++ b/src/language.c @@ -52,6 +52,24 @@ char **language_strings = NULL; static int language_open_file(const char *filename); +static int utf8_get_next(char *char_ptr, char **nextchar_ptr) +{ + int result; + int numBytes; + + if (!(char_ptr[0] & 0x80)) { + result = char_ptr[0]; + numBytes = 1; + } else if (!(char_ptr[0] & 0x20)) { + result = ((char_ptr[0] & 0x1F) << 6) | (char_ptr[1] & 0x3F); + numBytes = 2; + } + + if (nextchar_ptr != NULL) + *nextchar_ptr = char_ptr + numBytes; + return result; +} + const char *language_get_string(rct_string_id id) { const char *rct = RCT2_ADDRESS(0x009BF2D4, const char*)[id]; @@ -114,12 +132,21 @@ static int language_open_file(const char *filename) for (i = 0; i < language_buffer_size; i++) { char *src = &language_buffer[i]; + // Handle UTF-8 + char *srcNext; + int utf8Char = utf8_get_next(src, &srcNext); + i += srcNext - src - 1; + if (utf8Char > 0xFF) + utf8Char = '?'; + else if (utf8Char > 0x7F) + utf8Char &= 0xFF; + switch (mode) { case 0: // Search for a comment - if (*src == '#') { + if (utf8Char == '#') { mode = 3; - } else if (*src == ':' && string_no != -1) { + } else if (utf8Char == ':' && string_no != -1) { // Search for colon dst = src + 1; language_strings[string_no] = dst; @@ -134,19 +161,19 @@ static int language_open_file(const char *filename) break; case 1: // Copy string over, stop at line break - if (*src == '{') { + if (utf8Char == '{') { token = src + 1; mode = 2; - } else if (*src == '\n' || *src == '\r') { + } else if (utf8Char == '\n' || *src == '\r') { *dst = 0; mode = 0; } else { - *dst++ = *src; + *dst++ = utf8Char; } break; case 2: // Read token, convert to code - if (*src == '}') { + if (utf8Char == '}') { int tokenLength = min(src - token, sizeof(tokenBuffer) - 1); memcpy(tokenBuffer, token, tokenLength); tokenBuffer[tokenLength] = 0; @@ -158,7 +185,7 @@ static int language_open_file(const char *filename) } break; case 3: - if (*src == '\n' || *src == '\r') { + if (utf8Char == '\n' || utf8Char == '\r') { mode = 0; } } From ea43709c27320e1a92a5f2e969d1c2d9685ca919 Mon Sep 17 00:00:00 2001 From: hexdec Date: Sun, 17 Aug 2014 21:11:26 +0200 Subject: [PATCH 18/28] Fixed using wrong class & flag. --- src/window_staff_peep.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/window_staff_peep.c b/src/window_staff_peep.c index 8c5832334a..0d68899aa7 100644 --- a/src/window_staff_peep.c +++ b/src/window_staff_peep.c @@ -180,14 +180,11 @@ void sub_6BED21(rct_window* w, rct_peep* peep) */ rct_window* sub_6BEF1B(rct_peep* peep) { - int eax = peep->sprite_index; - int ecx = 0x38ae7; // class and flags - - rct_window* w = window_create_auto_pos(190, 180, (uint32*)window_staff_peep_overview_events, ecx, 0); + rct_window* w = window_create_auto_pos(190, 180, (uint32*)window_staff_peep_overview_events, WC_PEEP, (uint16)0x400); w->widgets = RCT2_GLOBAL(0x9AF81C, rct_widget*); w->enabled_widgets = RCT2_GLOBAL(0x9929B0, uint32); - w->number = eax; + w->number = peep->sprite_index; w->page = 0; w->var_482 = 0; w->frame_no = 0; From 8f58c6a84409af5ea23d026f495409c89d350733 Mon Sep 17 00:00:00 2001 From: Ted John Date: Sun, 17 Aug 2014 21:01:05 +0100 Subject: [PATCH 19/28] Update readme.md --- readme.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index 316a1efc44..6a10cd4eba 100644 --- a/readme.md +++ b/readme.md @@ -60,9 +60,13 @@ The aim is to completely decompile RollerCoaster Tycoon 2 into C so that cross-p - Visual Studio 2013 (paid) / [Visual Studio Express 2013](http://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-windows-desktop) (free) - [SDL2 development library for Visual C++](http://www.libsdl.org/release/SDL2-devel-2.0.3-VC.zip). -### Linux: +### Max OS X: +- [Homebrew](http://brew.sh) +- RollerCoaster Tycoon 2 + +### Mac OS X / Linux: - [MinGW-w64](mingw-w64.sourceforge.net) -- [Wine](http://www.winehq.org/) +- [Wine](http://www.winehq.org) - RollerCoaster Tycoon 2 - libsdl2 compiled with MinGW-w64 @@ -76,6 +80,14 @@ The aim is to completely decompile RollerCoaster Tycoon 2 into C so that cross-p 6. When OpenRCT2 is run for the first time, it creates a settings file in `My Documents/OpenRCT2`. If it can't find the original installation of RCT2, you will need to edit `config.ini` in that folder and change the value of `game_path` to where RCT2 is installed. 7. If the game crashes, you may need to press the red, square Stop button along the top of VS Express to stop the program. +### Mac OS X: +Providing Homebrew is installed, OpenRCT2's dependencies and Wine can be installed automatically through `install.sh`. +``` +bash install.sh +bash build.sh +wine openrct2.exe +``` + ### Linux: As the easiest approach depends on your distribution, please take a look at the [wiki](https://github.com/IntelOrca/OpenRCT2/wiki). From 3f5a7d2b7187c8b2bd4ec3d4e74c14bf056c0fd1 Mon Sep 17 00:00:00 2001 From: Fabien Bourigault Date: Sun, 17 Aug 2014 19:19:10 +0200 Subject: [PATCH 20/28] Translated some strings to french. --- data/language/french.txt | 288 +++++++++++++++++++-------------------- 1 file changed, 144 insertions(+), 144 deletions(-) diff --git a/data/language/french.txt b/data/language/french.txt index 1788d14dcf..6dcfb667f0 100644 --- a/data/language/french.txt +++ b/data/language/french.txt @@ -769,10 +769,10 @@ STR_0764 :Guest {INT32} STR_0765 :Guest {INT32} STR_0766 :Guest {INT32} STR_0767 :Guest {INT32} -STR_0768 :Handyman {INT32} -STR_0769 :Mechanic {INT32} -STR_0770 :Security Guard {INT32} -STR_0771 :Entertainer {INT32} +STR_0768 :Homme de service {INT32} +STR_0769 :Mécanicien {INT32} +STR_0770 :Agent de sécurité {INT32} +STR_0771 :Animateur {INT32} STR_0772 :Unnamed park{POP16}{POP16} STR_0773 :Unnamed park{POP16}{POP16} STR_0774 :Unnamed park{POP16}{POP16} @@ -843,21 +843,21 @@ STR_0838 :CD key code {INT32} is not valid for your RollerCoaster Tycoon 2 CD STR_0839 :{UINT16} x {UINT16} STR_0840 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{UINT16} x {UINT16} STR_0841 :Desktop window -STR_0842 :640x480 full screen -STR_0843 :800x600 full screen -STR_0844 :1024x768 full screen -STR_0845 :1152x864 full screen -STR_0846 :1280x1024 full screen -STR_0847 :About 'RollerCoaster Tycoon 2' +STR_0842 :640x480 plein écran +STR_0843 :800x600 plein écran +STR_0844 :1024x768 plein écran +STR_0845 :1152x864 plein écran +STR_0846 :1280x1024 plein écran +STR_0847 :A propos 'RollerCoaster Tycoon 2' STR_0848 :RollerCoaster Tycoon 2 STR_0849 :{WINDOW_COLOUR_2}Version 2.01.028 -STR_0850 :{WINDOW_COLOUR_2}Copyright {COPYRIGHT} 2002 Chris Sawyer, all rights reserved -STR_0851 :{WINDOW_COLOUR_2}Designed and programmed by Chris Sawyer -STR_0852 :{WINDOW_COLOUR_2}Graphics by Simon Foster -STR_0853 :{WINDOW_COLOUR_2}Sound and music by Allister Brimble -STR_0854 :{WINDOW_COLOUR_2}Additional sounds recorded by David Ellis -STR_0855 :{WINDOW_COLOUR_2}Representation by Jacqui Lyons at Marjacq Ltd. -STR_0856 :{WINDOW_COLOUR_2}Thanks to:- +STR_0850 :{WINDOW_COLOUR_2}Copyright {COPYRIGHT} 2002 Chris Sawyer, tous droits réservés +STR_0851 :{WINDOW_COLOUR_2}Conçu et programmé par Chris Sawyer +STR_0852 :{WINDOW_COLOUR_2}Graphismes : Simon Foster +STR_0853 :{WINDOW_COLOUR_2}Son et musique : Allister Brimble +STR_0854 :{WINDOW_COLOUR_2}Enregistrement sons additionnels : David Ellis +STR_0855 :{WINDOW_COLOUR_2}Représentation :Jacqui Lyons, Marjacq Ltd. +STR_0856 :{WINDOW_COLOUR_2}Remerciements:- STR_0857 :{WINDOW_COLOUR_2}Peter James Adcock, Joe Booth, and John Wardley STR_0858 :{WINDOW_COLOUR_2} STR_0859 :{WINDOW_COLOUR_2} @@ -883,16 +883,16 @@ STR_0878 :Too high ! STR_0879 :Can't lower land here... STR_0880 :Can't raise land here... STR_0881 :Object in the way -STR_0882 :Load Game -STR_0883 :Save Game +STR_0882 :Charger partie +STR_0883 :Sauvegarder partie STR_0884 :Load Landscape STR_0885 :Save Landscape -STR_0886 :Quit Game +STR_0886 :Quitter la partie STR_0887 :Quit Scenario Editor STR_0888 :Quit Roller Coaster Designer STR_0889 :Quit Track Designs Manager STR_0890 :SCR{COMMA16}.BMP -STR_0891 :Screenshot +STR_0891 :Capture d'écran STR_0892 :Screenshot saved to disk as '{STRINGID}' STR_0893 :Screenshot failed ! STR_0894 :Landscape data area full ! @@ -940,14 +940,14 @@ STR_0935 :Ride exit in the way STR_0936 :Park entrance in the way STR_0937 :{SMALLFONT}{BLACK}View options STR_0938 :{SMALLFONT}{BLACK}Adjust land height and slope -STR_0939 :Underground/Inside View -STR_0940 :Remove Base Land -STR_0941 :Remove Vertical Faces -STR_0942 :See-Through Rides -STR_0943 :See-Through Scenery +STR_0939 :Vue souterraine/intérieure +STR_0940 :Supprimer surface de base +STR_0941 :Supprimer surfaces verticales +STR_0942 :Attractions transparentes +STR_0943 :Décor transparent STR_0944 :Save STR_0945 :Don't Save -STR_0946 :Cancel +STR_0946 :Annuler STR_0947 :Save this before loading ? STR_0948 :Save this before quitting ? STR_0949 :Save this before quitting ? @@ -1717,19 +1717,19 @@ STR_1712 :{INLINE_SPRITE}{247}{19}{00}{00}{WINDOW_COLOUR_2}Sweep footpaths STR_1713 :{INLINE_SPRITE}{248}{19}{00}{00}{WINDOW_COLOUR_2}Water gardens STR_1714 :{INLINE_SPRITE}{249}{19}{00}{00}{WINDOW_COLOUR_2}Empty litter bins STR_1715 :{INLINE_SPRITE}{250}{19}{00}{00}{WINDOW_COLOUR_2}Mow grass -STR_1716 :Invalid name for park -STR_1717 :Can't rename park... -STR_1718 :Park Name -STR_1719 :Enter name for park:- +STR_1716 :Nom du parc non valide +STR_1717 :Impossible de renommer le parc... +STR_1718 :Nom dur parc +STR_1719 :Saisir nom du parc:- STR_1720 :{SMALLFONT}{BLACK}Name park -STR_1721 :Park closed -STR_1722 :Park open +STR_1721 :Parc fermé +STR_1722 :Parc ouvert STR_1723 :Can't open park... STR_1724 :Can't close park... -STR_1725 :Can't buy land... -STR_1726 :Land not for sale! -STR_1727 :Construction rights not for sale! -STR_1728 :Can't buy construction rights here... +STR_1725 :Impossible d'acheter le terrain... +STR_1726 :Ce terrain n'est pas a vendre! +STR_1727 :Les droits de construction ne sont pas à vendre! +STR_1728 :Impossible d'acheter les droits de construction içi... STR_1729 :Land not owned by park! STR_1730 :{RED}Closed - - STR_1731 :{WHITE}{STRINGID} - - @@ -1840,14 +1840,14 @@ STR_1835 :Popularity: Unknown STR_1836 :Popularity: {COMMA16}% STR_1837 :Satisfaction: Unknown STR_1838 :Satisfaction: {COMMA16}% -STR_1839 :Reliability: {COMMA16}% -STR_1840 :Down-time: {COMMA16}% -STR_1841 :Profit: {CURRENCY} per hour -STR_1842 :Favorite of: {COMMA16} guest -STR_1843 :Favorite of: {COMMA16} guests +STR_1839 :Fiabilité: {COMMA16}% +STR_1840 :Immobilisation: {COMMA16}% +STR_1841 :Revenu: {CURRENCY} par heure +STR_1842 :Attraction préférée de: {COMMA16} visiteur +STR_1843 :Attraction préférée de: {COMMA16} visiteurs STR_1844 :{SMALLFONT}{BLACK}Select information type to show in ride/attraction list STR_1845 :{MONTHYEAR} -STR_1846 :{COMMA16} guests +STR_1846 :{COMMA16} visiteurs STR_1847 :{INLINE_SPRITE}{11}{20}{00}{00}{COMMA16} guests STR_1848 :{INLINE_SPRITE}{10}{20}{00}{00}{COMMA16} guests STR_1849 :{WINDOW_COLOUR_2}Play music @@ -1880,13 +1880,13 @@ STR_1875 :{BLACK} {SPRITE}{BLACK} {STRINGID} STR_1876 :{WINDOW_COLOUR_2}{INLINE_SPRITE}{251}{19}{00}{00}Inspect Rides STR_1877 :{WINDOW_COLOUR_2}{INLINE_SPRITE}{252}{19}{00}{00}Fix Rides STR_1878 :{WINDOW_COLOUR_2}Inspection: -STR_1879 :Every 10 minutes -STR_1880 :Every 20 minutes -STR_1881 :Every 30 minutes -STR_1882 :Every 45 minutes -STR_1883 :Every hour -STR_1884 :Every 2 hours -STR_1885 :Never +STR_1879 :Toutes les 10 minutes +STR_1880 :Toutes les 20 minutes +STR_1881 :Toutes les 30 minutes +STR_1882 :Toutes les 45 minutes +STR_1883 :Toutes les heures +STR_1884 :Toutes les 2 heures +STR_1885 :Jamais STR_1886 :Inspecting {STRINGID} STR_1887 :{WINDOW_COLOUR_2}Time since last inspection: {BLACK}{COMMA16} minutes STR_1888 :{WINDOW_COLOUR_2}Time since last inspection: {BLACK}more than 4 hours @@ -1897,35 +1897,35 @@ STR_1892 :RollerCoaster Tycoon 2 STR_1893 :Please insert your RollerCoaster Tycoon 2 CD in the following drive:- STR_1894 :{WINDOW_COLOUR_2}{STRINGID} sold: {BLACK}{COMMA32} STR_1895 :{SMALLFONT}{BLACK}Build new ride/attraction -STR_1896 :{WINDOW_COLOUR_2}Expenditure/Income -STR_1897 :{WINDOW_COLOUR_2}Ride construction -STR_1898 :{WINDOW_COLOUR_2}Ride running costs -STR_1899 :{WINDOW_COLOUR_2}Land purchase -STR_1900 :{WINDOW_COLOUR_2}Landscaping -STR_1901 :{WINDOW_COLOUR_2}Park entrance tickets -STR_1902 :{WINDOW_COLOUR_2}Ride tickets -STR_1903 :{WINDOW_COLOUR_2}Shop sales -STR_1904 :{WINDOW_COLOUR_2}Shop stock -STR_1905 :{WINDOW_COLOUR_2}Food/drink sales -STR_1906 :{WINDOW_COLOUR_2}Food/drink stock -STR_1907 :{WINDOW_COLOUR_2}Staff wages +STR_1896 :{WINDOW_COLOUR_2}Dépenses/Revenus +STR_1897 :{WINDOW_COLOUR_2}Constr. attraction +STR_1898 :{WINDOW_COLOUR_2}Coût d'expl. attr. +STR_1899 :{WINDOW_COLOUR_2}Achat terrain +STR_1900 :{WINDOW_COLOUR_2}Aménagement paysage +STR_1901 :{WINDOW_COLOUR_2}Tickets parc +STR_1902 :{WINDOW_COLOUR_2}Tickets attraction +STR_1903 :{WINDOW_COLOUR_2}Ventes magasins +STR_1904 :{WINDOW_COLOUR_2}Stocks magasins +STR_1905 :{WINDOW_COLOUR_2}Ventes Nourr./Boiss. +STR_1906 :{WINDOW_COLOUR_2}Stocks Nourr./Noiss. +STR_1907 :{WINDOW_COLOUR_2}Salaires employés STR_1908 :{WINDOW_COLOUR_2}Marketing -STR_1909 :{WINDOW_COLOUR_2}Research -STR_1910 :{WINDOW_COLOUR_2}Loan interest -STR_1911 :{BLACK} at {COMMA16}% per year +STR_1909 :{WINDOW_COLOUR_2}Recherche +STR_1910 :{WINDOW_COLOUR_2}Intérêt d'emprunt +STR_1911 :{BLACK} à {COMMA16}% par an STR_1912 :{MONTH} STR_1913 :{BLACK}+{CURRENCY2DP} STR_1914 :{BLACK}{CURRENCY2DP} STR_1915 :{RED}{CURRENCY2DP} -STR_1916 :{WINDOW_COLOUR_2}Loan: +STR_1916 :{WINDOW_COLOUR_2}Emprunt: STR_1917 :{POP16}{POP16}{POP16}{CURRENCY} -STR_1918 :Can't borrow any more money! -STR_1919 :Not enough cash available! -STR_1920 :Can't pay back loan! -STR_1921 :{SMALLFONT}{BLACK}Start a new game -STR_1922 :{SMALLFONT}{BLACK}Continue playing a saved game -STR_1923 :{SMALLFONT}{BLACK}Show tutorial -STR_1924 :{SMALLFONT}{BLACK}Exit +STR_1918 :Impossible d'emprunter d'avantage ! La banque refuse d'augmenter votre emprunt ! +STR_1919 :Pas asser d'argent disponible ! +STR_1920 :Impossible de rembourser l'emprunt ! +STR_1921 :{SMALLFONT}{BLACK}Commencer une nouvelle partie +STR_1922 :{SMALLFONT}{BLACK}Continuer une partie sauvegardée +STR_1923 :{SMALLFONT}{BLACK}Didacticiel +STR_1924 :{SMALLFONT}{BLACK}Quitter STR_1925 :Can't place person here... STR_1926 :{SMALLFONT} STR_1927 :{YELLOW}{STRINGID} has broken down @@ -1941,7 +1941,7 @@ STR_1936 :{STRINGID} has bought {STRINGID} STR_1937 :{SMALLFONT}{BLACK}Show information about the subject of this message STR_1938 :{SMALLFONT}{BLACK}Show view of guest STR_1939 :{SMALLFONT}{BLACK}Show view of staff member -STR_1940 :{SMALLFONT}{BLACK}Show happiness, energy, hunger etc. for this guest +STR_1940 :{SMALLFONT}{BLACK}Show happiness, energy, hunger etc. for this gugest STR_1941 :{SMALLFONT}{BLACK}Show which rides this guest has been on STR_1942 :{SMALLFONT}{BLACK}Show financial information about this guest STR_1943 :{SMALLFONT}{BLACK}Show guest's recent thoughts @@ -1950,12 +1950,12 @@ STR_1945 :{SMALLFONT}{BLACK}Show orders and options for this staff member STR_1946 :{SMALLFONT}{BLACK}Select costume for this entertainer STR_1947 :{SMALLFONT}{BLACK}Show areas patrolled by selected staff type, and locate the nearest staff member STR_1948 :{SMALLFONT}{BLACK}Hire a new staff member of the selected type -STR_1949 :Financial Summary -STR_1950 :Financial Graph -STR_1951 :Park Value Graph -STR_1952 :Profit Graph +STR_1949 :Résumé financier +STR_1950 :Graphique financier +STR_1951 :Graphique valeur du parc +STR_1952 :Graphique bénéfices STR_1953 :Marketing -STR_1954 :Research Funding +STR_1954 :Financement recherches STR_1955 :{WINDOW_COLOUR_2}Number of circuits: STR_1956 :{SMALLFONT}{BLACK}Number of circuits of track per ride STR_1957 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{COMMA16} @@ -2225,10 +2225,10 @@ STR_2220 :{WINDOW_COLOUR_2}Park Rating: {BLACK}{COMMA16} STR_2221 :{SMALLFONT}{BLACK}Park Rating: {COMMA16} STR_2222 :{SMALLFONT}{BLACK}{STRINGID} STR_2223 :{WINDOW_COLOUR_2}Guests in park: {BLACK}{COMMA16} -STR_2224 :{WINDOW_COLOUR_2}Cash: {BLACK}{CURRENCY2DP} -STR_2225 :{WINDOW_COLOUR_2}Cash: {RED}{CURRENCY2DP} -STR_2226 :{WINDOW_COLOUR_2}Park value: {BLACK}{CURRENCY} -STR_2227 :{WINDOW_COLOUR_2}Company value: {BLACK}{CURRENCY} +STR_2224 :{WINDOW_COLOUR_2}Argent: {BLACK}{CURRENCY2DP} +STR_2225 :{WINDOW_COLOUR_2}Argent: {RED}{CURRENCY2DP} +STR_2226 :{WINDOW_COLOUR_2}Valeur du parc: {BLACK}{CURRENCY} +STR_2227 :{WINDOW_COLOUR_2}Valeur de l'entreprise: {BLACK}{CURRENCY} STR_2228 :{WINDOW_COLOUR_2}Last month's profit from food/drink and{NEWLINE}merchandise sales: {BLACK}{CURRENCY} STR_2229 :Slope up to vertical STR_2230 :Vertical track @@ -2237,42 +2237,42 @@ STR_2232 :Cable lift hill STR_2233 :{SMALLFONT}{BLACK}Park information STR_2234 :Recent Messages STR_2235 :{SMALLFONT}{STRINGID} {STRINGID} -STR_2236 :January -STR_2237 :February -STR_2238 :March -STR_2239 :April -STR_2240 :May -STR_2241 :June -STR_2242 :July -STR_2243 :August -STR_2244 :September -STR_2245 :October -STR_2246 :November -STR_2247 :December +STR_2236 :Janvier +STR_2237 :Février +STR_2238 :Mars +STR_2239 :Avril +STR_2240 :Mai +STR_2241 :Juin +STR_2242 :Juillet +STR_2243 :Août +STR_2244 :Septembre +STR_2245 :Octobre +STR_2246 :Novembre +STR_2247 :Décembre STR_2248 :Can't demolish ride/attraction... STR_2249 :{BABYBLUE}New ride/attraction now available:-{NEWLINE}{STRINGID} STR_2250 :{BABYBLUE}New scenery/themeing now available:-{NEWLINE}{STRINGID} STR_2251 :Can only be built on paths! STR_2252 :Can only be built across paths! -STR_2253 :Transport Rides -STR_2254 :Gentle Rides -STR_2255 :Roller Coasters -STR_2256 :Thrill Rides -STR_2257 :Water Rides -STR_2258 :Shops & Stalls -STR_2259 :Scenery & Themeing -STR_2260 :No funding -STR_2261 :Minimum funding -STR_2262 :Normal funding -STR_2263 :Maximum funding +STR_2253 :Attractions de transport +STR_2254 :Attractions tranquilles +STR_2255 :Montagnes russes +STR_2256 :Attractions frisson +STR_2257 :Attractions aquatiques +STR_2258 :Magasins et boutiques +STR_2259 :Décor et thèmes +STR_2260 :Aucun financement +STR_2261 :Financement minimum +STR_2262 :Financement normal +STR_2263 :Financement maximum STR_2264 :Research funding -STR_2265 :{WINDOW_COLOUR_2}Cost: {BLACK}{CURRENCY} per month -STR_2266 :Research priorities -STR_2267 :Currently in development -STR_2268 :Last development +STR_2265 :{WINDOW_COLOUR_2}Coût: {BLACK}{CURRENCY} par mois +STR_2266 :Priorités recherches +STR_2267 :En cours de développement +STR_2268 :Dernier développement STR_2269 :{WINDOW_COLOUR_2}Type: {BLACK}{STRINGID} -STR_2270 :{WINDOW_COLOUR_2}Progress: {BLACK}{STRINGID} -STR_2271 :{WINDOW_COLOUR_2}Expected: {BLACK}{STRINGID} +STR_2270 :{WINDOW_COLOUR_2}Progression: {BLACK}{STRINGID} +STR_2271 :{WINDOW_COLOUR_2}Fin prévue: {BLACK}{STRINGID} STR_2272 :{WINDOW_COLOUR_2}Ride/attraction:{NEWLINE}{BLACK}{STRINGID} STR_2273 :{WINDOW_COLOUR_2}Scenery/themeing:{NEWLINE}{BLACK}{STRINGID} STR_2274 :{SMALLFONT}{BLACK}Show details of this invention or development @@ -2280,10 +2280,10 @@ STR_2275 :{SMALLFONT}{BLACK}Show funding and options for research & developme STR_2276 :{SMALLFONT}{BLACK}Show research & development status STR_2277 :Unknown STR_2278 :Transport Ride -STR_2279 :Gentle Ride -STR_2280 :Roller Coaster -STR_2281 :Thrill Ride -STR_2282 :Water Ride +STR_2279 :Attraction tranquille +STR_2280 :Montagne russe +STR_2281 :Attraction frisson +STR_2282 :Attraction aquatique STR_2283 :Shop/Stall STR_2284 :Scenery/Themeing STR_2285 :Initial research @@ -2385,7 +2385,7 @@ STR_2380 :{SMALLFONT}{BLACK}Adjust smaller area of water STR_2381 :{SMALLFONT}{BLACK}Adjust larger area of water STR_2382 :Land STR_2383 :Water -STR_2384 :{WINDOW_COLOUR_2}Your objective: +STR_2384 :{WINDOW_COLOUR_2}Votre objectif: STR_2385 :{BLACK}None STR_2386 :{BLACK}To have at least {COMMA16} guests in your park at the end of {MONTHYEAR}, with a park rating of at least 600 STR_2387 :{BLACK}To achieve a park value of at least {POP16}{POP16}{CURRENCY} at the end of {PUSH16}{PUSH16}{PUSH16}{MONTHYEAR} @@ -2393,7 +2393,7 @@ STR_2388 :{BLACK}Have Fun! STR_2389 :{BLACK}Build the best {STRINGID} you can! STR_2390 :{BLACK}To have 10 different types of roller coasters operating in your park, each with an excitement value of at least 6.00 STR_2391 :{BLACK}To have at least {COMMA16} guests in your park. You must not let the park rating drop below 700 at any time! -STR_2392 :{BLACK}To achieve a monthly income from ride tickets of at least {POP16}{POP16}{CURRENCY} +STR_2392 :{BLACK}Obtenir un revenu mensuel avec les tickets d'attraction d'au moins {POP16}{POP16}{CURRENCY} STR_2393 :{BLACK}To have 10 different types of roller coasters operating in your park, each with a minimum length of {LENGTH}, and an excitement rating of at least 7.00 STR_2394 :{BLACK}To finish building all 5 of the partially built roller coasters in this park, designing them to achieve excitement ratings of at least {POP16}{POP16}{COMMA2DP32} each STR_2395 :{BLACK}To repay your loan and achieve a park value of at least {POP16}{POP16}{CURRENCY} @@ -2410,13 +2410,13 @@ STR_2405 :Build 10 roller coasters of a given length STR_2406 :Finish building 5 roller coasters STR_2407 :Repay loan and achieve a given park value STR_2408 :Monthly profit from food/merchandise -STR_2409 :{WINDOW_COLOUR_2}Marketing campaigns in operation -STR_2410 :{BLACK}None -STR_2411 :{WINDOW_COLOUR_2}Marketing campaigns available -STR_2412 :{SMALLFONT}{BLACK}Start this marketing campaign +STR_2409 :{WINDOW_COLOUR_2}Campagnes marketing en cours +STR_2410 :{BLACK}Aucune +STR_2411 :{WINDOW_COLOUR_2}Campagnes marrketing disponibles +STR_2412 :{SMALLFONT}{BLACK}Commencer campagne marketing STR_2413 :{BLACK}({CURRENCY2DP} per week) STR_2414 :(Not Selected) -STR_2415 :{WINDOW_COLOUR_2}Ride: +STR_2415 :{WINDOW_COLOUR_2}Attraction: STR_2416 :{WINDOW_COLOUR_2}Item: STR_2417 :{WINDOW_COLOUR_2}Length of time: STR_2418 :Free entry to {STRINGID} @@ -2426,35 +2426,35 @@ STR_2421 :Free {STRINGID} STR_2422 :Advertising campaign for {STRINGID} STR_2423 :Advertising campaign for {STRINGID} STR_2424 :{WINDOW_COLOUR_2}Vouchers for free entry to the park -STR_2425 :{WINDOW_COLOUR_2}Vouchers for free rides on a particular ride +STR_2425 :{WINDOW_COLOUR_2}Bons pour une attraction gratuite STR_2426 :{WINDOW_COLOUR_2}Vouchers for half-price entry to the park -STR_2427 :{WINDOW_COLOUR_2}Vouchers for free food or drink -STR_2428 :{WINDOW_COLOUR_2}Advertising campaign for the park -STR_2429 :{WINDOW_COLOUR_2}Advertising campaign for a particular ride +STR_2427 :{WINDOW_COLOUR_2}Bons pour nourriture/boisson gratuites +STR_2428 :{WINDOW_COLOUR_2}Campagne publicitaire pour le parc +STR_2429 :{WINDOW_COLOUR_2}Campagne publicitaire pour une attraction STR_2430 :{BLACK}Vouchers for free entry to {STRINGID} STR_2431 :{BLACK}Vouchers for free ride on {STRINGID} STR_2432 :{BLACK}Vouchers for half-price entry to {STRINGID} STR_2433 :{BLACK}Vouchers for free {STRINGID} STR_2434 :{BLACK}Advertising campaign for {STRINGID} STR_2435 :{BLACK}Advertising campaign for {STRINGID} -STR_2436 :1 week -STR_2437 :2 weeks -STR_2438 :3 weeks -STR_2439 :4 weeks -STR_2440 :5 weeks -STR_2441 :6 weeks +STR_2436 :1 semaine +STR_2437 :2 semaines +STR_2438 :3 semaines +STR_2439 :4 semaines +STR_2440 :5 semaines +STR_2441 :6 semaines STR_2442 :{BLACK}({STRINGID} remaining) STR_2443 :{WINDOW_COLOUR_2}Cost per week: {BLACK}{CURRENCY2DP} STR_2444 :{WINDOW_COLOUR_2}Total cost: {BLACK}{CURRENCY2DP} -STR_2445 :Start this marketing campaign +STR_2445 :Commencer campagne marketing STR_2446 :{YELLOW}Your marketing campaign for free entry to the park has finished STR_2447 :{YELLOW}Your marketing campaign for free rides on {STRINGID} has finished STR_2448 :{YELLOW}Your marketing campaign for half-price entry to the park has finished STR_2449 :{YELLOW}Your marketing campaign for free {STRINGID} has finished STR_2450 :{YELLOW}Your advertising campaign for the park has finished STR_2451 :{YELLOW}Your advertising campaign for {STRINGID} has finished -STR_2452 :{WINDOW_COLOUR_2}Cash (less loan): {BLACK}{CURRENCY2DP} -STR_2453 :{WINDOW_COLOUR_2}Cash (less loan): {RED}{CURRENCY2DP} +STR_2452 :{WINDOW_COLOUR_2}Argent (moins l'emprunt): {BLACK}{CURRENCY2DP} +STR_2453 :{WINDOW_COLOUR_2}Argent (moins l'emprunt): {RED}{CURRENCY2DP} STR_2454 :{SMALLFONT}{BLACK}{CURRENCY2DP} - STR_2455 :{SMALLFONT}{BLACK}+{CURRENCY2DP} - STR_2456 :{SMALLFONT}{BLACK}{CURRENCY2DP} - @@ -2483,7 +2483,7 @@ STR_2478 :{SMALLFONT}{BLACK}Show graph of velocity against time STR_2479 :{SMALLFONT}{BLACK}Show graph of altitude against time STR_2480 :{SMALLFONT}{BLACK}Show graph of vertical acceleration against time STR_2481 :{SMALLFONT}{BLACK}Show graph of lateral acceleration against time -STR_2482 :{SMALLFONT}{BLACK}Profit: {CURRENCY} per week, Park Value: {CURRENCY} +STR_2482 :{SMALLFONT}{BLACK}Bénéfice: {CURRENCY} par semaine, Valeur du parc: {CURRENCY} STR_2483 :{WINDOW_COLOUR_2}Weekly profit: {BLACK}+{CURRENCY2DP} STR_2484 :{WINDOW_COLOUR_2}Weekly profit: {RED}{CURRENCY2DP} STR_2485 :Controls @@ -2851,7 +2851,7 @@ STR_2844 :{TOPAZ}Your park has received an award for being 'The park with the STR_2845 :{TOPAZ}Your park has received an award for being 'The park with the most dazzling choice of color schemes'! STR_2846 :{TOPAZ}Your park has received an award for being 'The park with the most confusing layout'! STR_2847 :{TOPAZ}Your park has received an award for being 'The park with the best gentle rides'! -STR_2848 :{WINDOW_COLOUR_2}No recent awards +STR_2848 :{WINDOW_COLOUR_2}Pas de récompense récente STR_2849 :New scenario installed successfully STR_2850 :New track design installed successfully STR_2851 :Scenario already installed @@ -2865,8 +2865,8 @@ STR_2858 :Can't start marketing campaign... STR_2859 :Another instance of RollerCoaster Tycoon 2 is already running STR_2860 :Infogrames Interactive credits... STR_2861 :{WINDOW_COLOUR_2}Licensed to Infogrames Interactive Inc. -STR_2862 :Music acknowledgements... -STR_2863 :Music acknowledgements +STR_2862 :Remerciements musique... +STR_2863 :Remerciements musique STR_2864 :{WINDOW_COLOUR_2}March - Children of the Regiment: (Fucik) non copyright STR_2865 :{WINDOW_COLOUR_2}Heyken's Serenade: (J.Heyken) British Standard Music Coy; GEMA, BRITICO STR_2866 :{WINDOW_COLOUR_2}In Continental Mood: (Composer unknown) Copyright Control @@ -3110,9 +3110,9 @@ STR_3103 :Can't re-paint this... STR_3104 :{SMALLFONT}{BLACK}List rides STR_3105 :{SMALLFONT}{BLACK}List shops and stalls STR_3106 :{SMALLFONT}{BLACK}List information kiosks and other guest facilities -STR_3107 :Close -STR_3108 :Test -STR_3109 :Open +STR_3107 :Fermer +STR_3108 :Tester +STR_3109 :Ouvrir STR_3110 :{WINDOW_COLOUR_2}Block Sections: {BLACK}{COMMA16} STR_3111 :{SMALLFONT}{BLACK}Click on design to build it STR_3112 :{SMALLFONT}{BLACK}Click on design to rename or delete it @@ -3442,7 +3442,7 @@ STR_3435 :{SMALLFONT}{BLACK}Great - It worked! Let's add the footpaths and le STR_3436 :{SMALLFONT}{BLACK}While waiting for our first riders, we could customize the ride a bit... STR_3437 :{SMALLFONT}{BLACK}Clear large areas of scenery from landscape STR_3438 :Unable to remove all scenery from here... -STR_3439 :Clear Scenery +STR_3439 :Effacer décor STR_3440 :Page 1 STR_3441 :Page 2 STR_3442 :Page 3 From 2f5f65d6070d711904889e83cbb1a3ee228a9b2f Mon Sep 17 00:00:00 2001 From: hexdec Date: Sun, 17 Aug 2014 22:40:34 +0200 Subject: [PATCH 21/28] Fixed resize gripper not showing up on guest and staff windows. --- src/window_peep.c | 2 +- src/window_staff_peep.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/window_peep.c b/src/window_peep.c index 570e8cddcf..13376b714c 100644 --- a/src/window_peep.c +++ b/src/window_peep.c @@ -152,7 +152,7 @@ void window_peep_open(rct_peep* peep){ window->min_height = 157; window->max_width = 500; window->max_height = 450; - window->flags = 8; + window->flags = 1 << 8; window->no_list_items = 0; window->selected_list_item = -1; window->colours[0] = 1; diff --git a/src/window_staff_peep.c b/src/window_staff_peep.c index 0d68899aa7..d4bd010646 100644 --- a/src/window_staff_peep.c +++ b/src/window_staff_peep.c @@ -198,7 +198,7 @@ rct_window* sub_6BEF1B(rct_peep* peep) w->max_width = 500; w->max_height = 450; - w->flags = 8; + w->flags = 1 << 8; w->colours[0] = 1; w->colours[1] = 4; From e1324f57d30ca332035304c55a6ba0a827306fd5 Mon Sep 17 00:00:00 2001 From: Fabien Bourigault Date: Mon, 18 Aug 2014 00:46:25 +0200 Subject: [PATCH 22/28] Add 100+ french translated strings. --- data/language/french.txt | 210 +++++++++++++++++++-------------------- 1 file changed, 105 insertions(+), 105 deletions(-) diff --git a/data/language/french.txt b/data/language/french.txt index 6dcfb667f0..d6e544cc52 100644 --- a/data/language/french.txt +++ b/data/language/french.txt @@ -773,12 +773,12 @@ STR_0768 :Homme de service {INT32} STR_0769 :Mécanicien {INT32} STR_0770 :Agent de sécurité {INT32} STR_0771 :Animateur {INT32} -STR_0772 :Unnamed park{POP16}{POP16} -STR_0773 :Unnamed park{POP16}{POP16} -STR_0774 :Unnamed park{POP16}{POP16} -STR_0775 :Unnamed park{POP16}{POP16} -STR_0776 :Unnamed park{POP16}{POP16} -STR_0777 :Unnamed park{POP16}{POP16} +STR_0772 :Parc sans nom{POP16}{POP16} +STR_0773 :Parc sans nom{POP16}{POP16} +STR_0774 :Parc sans nom{POP16}{POP16} +STR_0775 :Parc sans nom{POP16}{POP16} +STR_0776 :Parc sans nom{POP16}{POP16} +STR_0777 :Parc sans nom{POP16}{POP16} STR_0778 :Sign STR_0779 :1st STR_0780 :2nd @@ -888,8 +888,8 @@ STR_0883 :Sauvegarder partie STR_0884 :Load Landscape STR_0885 :Save Landscape STR_0886 :Quitter la partie -STR_0887 :Quit Scenario Editor -STR_0888 :Quit Roller Coaster Designer +STR_0887 :Quitter l'Editeur de scénario +STR_0888 :Quitter Roller Coaster Designer STR_0889 :Quit Track Designs Manager STR_0890 :SCR{COMMA16}.BMP STR_0891 :Capture d'écran @@ -2292,7 +2292,7 @@ STR_2287 :Completing design STR_2288 :Unknown STR_2289 :{STRINGID} {STRINGID} STR_2290 :{SMALLFONT}{BLACK}{STRINGID} {STRINGID} -STR_2291 :Select scenario for new game +STR_2291 :Choisir scénario pour nouvelle partie STR_2292 :{WINDOW_COLOUR_2}Rides been on: STR_2293 :{BLACK} Nothing STR_2294 :{SMALLFONT}{BLACK}Change base land style @@ -3067,11 +3067,11 @@ STR_3060 :Ice blocks STR_3061 :Wooden fences STR_3062 :{SMALLFONT}{BLACK}Standard roller coaster track STR_3063 :{SMALLFONT}{BLACK}Water channel (track submerged) -STR_3064 :Beginner Parks -STR_3065 :Challenging Parks -STR_3066 :Expert Parks -STR_3067 :{OPENQUOTES}Real{ENDQUOTES} Parks -STR_3068 :Other Parks +STR_3064 :Parcs débutants +STR_3065 :Parcs moyens +STR_3066 :Parcs experts +STR_3067 :Parcs {OPENQUOTES}Réels{ENDQUOTES} +STR_3068 :Autres parcs STR_3069 :Top Section STR_3070 :Slope to Level STR_3071 :{WINDOW_COLOUR_2}Same price throughout park @@ -3163,7 +3163,7 @@ STR_3156 : STR_3157 :map STR_3158 :graph STR_3159 :list -STR_3160 :RollerCoaster Tycoon 2: Starting for the first time... +STR_3160 :RollerCoaster Tycoon 2: Première visite... STR_3161 :RollerCoaster Tycoon 2: Checking object files... STR_3162 :Unable to allocate enough memory STR_3163 :Installing new data: @@ -3184,75 +3184,75 @@ STR_3177 :Unable to de-select this object STR_3178 :At least one path object must be selected STR_3179 :At least one ride vehicle/attraction object must be selected STR_3180 :Invalid selection of objects -STR_3181 :Object Selection - {STRINGID} +STR_3181 :Sélection d'object - {STRINGID} STR_3182 :Park entrance type must be selected STR_3183 :Water type must be selected -STR_3184 :Ride Vehicles/Attractions -STR_3185 :Small Scenery -STR_3186 :Large Scenery -STR_3187 :Walls/Fences -STR_3188 :Path Signs -STR_3189 :Footpaths -STR_3190 :Path Extras -STR_3191 :Scenery Groups -STR_3192 :Park Entrance -STR_3193 :Water +STR_3184 :Véhicules/Attractions +STR_3185 :Petit décor +STR_3186 :Grand décor +STR_3187 :Murs/Clôtures +STR_3188 :Panneaux de direction +STR_3189 :Allées +STR_3190 :Suppléments allées +STR_3191 :Groupes de décor +STR_3192 :Entrée du parc +STR_3193 :Etendue d'eau STR_3194 :Scenario Description -STR_3195 :Invention List -STR_3196 :{WINDOW_COLOUR_2}Research Group: {BLACK}{STRINGID} -STR_3197 :{WINDOW_COLOUR_2}Items pre-invented at start of game: -STR_3198 :{WINDOW_COLOUR_2}Items to invent during game: -STR_3199 :Random Shuffle -STR_3200 :{SMALLFONT}{BLACK}Randomly shuffle the list of items to invent during the game -STR_3201 :Object Selection -STR_3202 :Landscape Editor -STR_3203 :Invention List Set Up -STR_3204 :Options Selection +STR_3195 :Liste d'inventions +STR_3196 :{WINDOW_COLOUR_2}Groupe de recherche: {BLACK}{STRINGID} +STR_3197 :{WINDOW_COLOUR_2}Eléments pré-inventés au début d'une partie: +STR_3198 :{WINDOW_COLOUR_2}Eléments à inventer pendant la partie: +STR_3199 :Choix aléatoire +STR_3200 :{SMALLFONT}{BLACK}Définissez de manière aléatoire la liste d'éléments à inventer pendant la partie +STR_3201 :Sélection des objets +STR_3202 :Editeur de paysage +STR_3203 :Liste d'inventions +STR_3204 :Sélection des options STR_3205 :Objective Selection -STR_3206 :Save Scenario +STR_3206 :Sauvegarder scénario STR_3207 :Roller Coaster Designer STR_3208 :Track Designs Manager -STR_3209 :Back to Previous Step: -STR_3210 :Forward to Next Step: -STR_3211 :{WINDOW_COLOUR_2}Map size: +STR_3209 :Retour étape précédente: +STR_3210 :Passer à l'étape suivante: +STR_3211 :{WINDOW_COLOUR_2}Taille carte: STR_3212 :{POP16}{COMMA16} x {PUSH16}{COMMA16} -STR_3213 :Can't decrease map size any further -STR_3214 :Can't increase map size any further +STR_3213 :Impossible de diminuer davantage la taille de la carte +STR_3214 :Impossible d'augmenter davantage la taille de le carte STR_3215 :Too close to edge of map -STR_3216 :{SMALLFONT}{BLACK}Select park-owned land etc. -STR_3217 :Land Owned -STR_3218 :Construction Rights Owned -STR_3219 :Land For Sale -STR_3220 :Construction Rights For Sale -STR_3221 :{SMALLFONT}{BLACK}Set land to be owned by the park -STR_3222 :{SMALLFONT}{BLACK}Set construction rights only to be owned by the park -STR_3223 :{SMALLFONT}{BLACK}Set land to be available to purchase by the park -STR_3224 :{SMALLFONT}{BLACK}Set construction rights to be available to purchase by the park +STR_3216 :{SMALLFONT}{BLACK}Choisir terrain du parc etc. +STR_3217 :Terrain du parc +STR_3218 :Droits de constr. du parc +STR_3219 :Terrain à vendre +STR_3220 :Droits constr. à vendre +STR_3221 :{SMALLFONT}{BLACK}Définir le terrain sur lequel s'étend le parc +STR_3222 :{SMALLFONT}{BLACK}Définir les droits de construction exclusifs du parc +STR_3223 :{SMALLFONT}{BLACK}Définir le terrain disponible à l'achat +STR_3224 :{SMALLFONT}{BLACK}Définir les droits de construction disponibles à l'achat STR_3225 :{SMALLFONT}{BLACK}Toggle on/off building a random cluster of objects around the selected position -STR_3226 :{SMALLFONT}{BLACK}Build park entrance -STR_3227 :Too many park entrances! -STR_3228 :{SMALLFONT}{BLACK}Set starting positions for people +STR_3226 :{SMALLFONT}{BLACK}Construire entrée parc +STR_3227 :Trop d'entrée de parc +STR_3228 :{SMALLFONT}{BLACK}Définir position de départ pour les visiteurs STR_3229 :Block Brakes cannot be used directly after station STR_3230 :Block Brakes cannot be used directly after each other STR_3231 :Block Brakes cannot be used directly after the top of this lift hill -STR_3232 :Options - Financial -STR_3233 :Options - Guests -STR_3234 :Options - Park -STR_3235 :{SMALLFONT}{BLACK}Show financial options -STR_3236 :{SMALLFONT}{BLACK}Show guest options -STR_3237 :{SMALLFONT}{BLACK}Show park options -STR_3238 :No Money -STR_3239 :{SMALLFONT}{BLACK}Make this park a 'no money' park with no financial restrictions -STR_3240 :{WINDOW_COLOUR_2}Initial cash: -STR_3241 :{WINDOW_COLOUR_2}Initial loan: -STR_3242 :{WINDOW_COLOUR_2}Maximum loan size: -STR_3243 :{WINDOW_COLOUR_2}Annual interest rate: -STR_3244 :Forbid marketing campaigns -STR_3245 :{SMALLFONT}{BLACK}Forbid advertising, promotional schemes, and other marketing campaigns +STR_3232 :Options - Finances +STR_3233 :Options - Visiteurs +STR_3234 :Options - Parc +STR_3235 :{SMALLFONT}{BLACK}Voir les options financières +STR_3236 :{SMALLFONT}{BLACK}Voir les options des visiteurs +STR_3237 :{SMALLFONT}{BLACK}Voir les options du parc +STR_3238 :Pas d'argent +STR_3239 :{SMALLFONT}{BLACK}Faire de ce parc un parc 'sans argent' sans restriction financière +STR_3240 :{WINDOW_COLOUR_2}Argent initial: +STR_3241 :{WINDOW_COLOUR_2}Emprunt initial: +STR_3242 :{WINDOW_COLOUR_2}Emprunt maximum: +STR_3243 :{WINDOW_COLOUR_2}Taux d'int. annuel: +STR_3244 :Interdire campagnes marketing +STR_3245 :{SMALLFONT}{BLACK}Interdire la publicité, les opérations promotionnelles et autres campagnes marketing STR_3246 :{WINDOW_COLOUR_2}{CURRENCY} STR_3247 :{WINDOW_COLOUR_2}{COMMA16}% -STR_3248 :Can't increase initial cash any further! -STR_3249 :Can't reduce initial cash any further! +STR_3248 :Impossible d'augmenter davantage la somme d'argent initiale ! +STR_3249 :Impossible de diminuer davantage la somme d'argent initiale ! STR_3250 :Can't increase initial loan any further! STR_3251 :Can't reduce initial loan any further! STR_3252 :Can't increase maximum loan size any further! @@ -3263,53 +3263,53 @@ STR_3256 :Guests prefer less intense rides STR_3257 :{SMALLFONT}{BLACK}Select whether guests should generally prefer less intense rides only STR_3258 :Guests prefer more intense rides STR_3259 :{SMALLFONT}{BLACK}Select whether guests should generally prefer more intense rides only -STR_3260 :{WINDOW_COLOUR_2}Cash per guest (average): -STR_3261 :{WINDOW_COLOUR_2}Guests initial happiness: -STR_3262 :{WINDOW_COLOUR_2}Guests initial hunger: -STR_3263 :{WINDOW_COLOUR_2}Guests initial thirst: -STR_3264 :Can't increase this any further! -STR_3265 :Can't reduce this any further! +STR_3260 :{WINDOW_COLOUR_2}Argent par visiteur (moy.): +STR_3261 :{WINDOW_COLOUR_2}Bonheur initial: +STR_3262 :{WINDOW_COLOUR_2}Faim initiale: +STR_3263 :{WINDOW_COLOUR_2}Soif initiale: +STR_3264 :Impossible d'augmenter davantage! +STR_3265 :Impossible de diminuer davantage! STR_3266 :{SMALLFONT}{BLACK}Select how this park charges for entrance and rides -STR_3267 :Forbid tree removal +STR_3267 :Interdire le déracinement d'arbres STR_3268 :{SMALLFONT}{BLACK}Forbid tall trees being removed -STR_3269 :Forbid landscape changes +STR_3269 :Interdire les modifications du paysage STR_3270 :{SMALLFONT}{BLACK}Forbid any changes to the landscape -STR_3271 :Forbid high construction +STR_3271 :Interdire les constructions hautes STR_3272 :{SMALLFONT}{BLACK}Forbid any tall construction -STR_3273 :Park rating higher difficult level +STR_3273 :Niveau de difficulté supérieur pour fréquentation STR_3274 :{SMALLFONT}{BLACK}Make the park rating value more challenging STR_3275 :Guest generation higher difficult level STR_3276 :{SMALLFONT}{BLACK}Make it more difficult to attract guests to the park -STR_3277 :{WINDOW_COLOUR_2}Cost to buy land: -STR_3278 :{WINDOW_COLOUR_2}Cost to buy construction rights: +STR_3277 :{WINDOW_COLOUR_2}Coût d'achat de terrain: +STR_3278 :{WINDOW_COLOUR_2}Coût d'achat droits de constr.: STR_3279 :Free park entry / Pay per ride STR_3280 :Pay to enter park / Free rides -STR_3281 :{WINDOW_COLOUR_2}Entry price: -STR_3282 :{SMALLFONT}{BLACK}Select objective and park name +STR_3281 :{WINDOW_COLOUR_2}Prix d'entrée: +STR_3282 :{SMALLFONT}{BLACK}Choisir objectif et nom du parc STR_3283 :{SMALLFONT}{BLACK}Select rides to be preserved -STR_3284 :Objective Selection +STR_3284 :Sélection des objectifs STR_3285 :Preserved Rides STR_3286 :{SMALLFONT}{BLACK}Select objective for this scenario -STR_3287 :{WINDOW_COLOUR_2}Objective: +STR_3287 :{WINDOW_COLOUR_2}Objectif: STR_3288 :{SMALLFONT}{BLACK}Select climate -STR_3289 :{WINDOW_COLOUR_2}Climate: -STR_3290 :Cool and wet -STR_3291 :Warm -STR_3292 :Hot and dry -STR_3293 :Cold -STR_3294 :Change... +STR_3289 :{WINDOW_COLOUR_2}Climat: +STR_3290 :Frais et humide +STR_3291 :Chaud +STR_3292 :Chaud et sec +STR_3293 :Froid +STR_3294 :Modifier... STR_3295 :{SMALLFONT}{BLACK}Change name of park STR_3296 :{SMALLFONT}{BLACK}Change name of scenario STR_3297 :{SMALLFONT}{BLACK}Change detail notes about park / scenario -STR_3298 :{WINDOW_COLOUR_2}Park Name: {BLACK}{STRINGID} +STR_3298 :{WINDOW_COLOUR_2}Nom du parc: {BLACK}{STRINGID} STR_3299 :{WINDOW_COLOUR_2}Park/Scenario Details: -STR_3300 :{WINDOW_COLOUR_2}Scenario Name: {BLACK}{STRINGID} -STR_3301 :{WINDOW_COLOUR_2}Objective Date: +STR_3300 :{WINDOW_COLOUR_2}Nom du scénario: {BLACK}{STRINGID} +STR_3301 :{WINDOW_COLOUR_2}Date objectif: STR_3302 :{WINDOW_COLOUR_2}{MONTHYEAR} -STR_3303 :{WINDOW_COLOUR_2}Number of guests: -STR_3304 :{WINDOW_COLOUR_2}Park value: +STR_3303 :{WINDOW_COLOUR_2}Nombre de visiteurs: +STR_3304 :{WINDOW_COLOUR_2}Valeur du parc: STR_3305 :{WINDOW_COLOUR_2}Monthly income: -STR_3306 :{WINDOW_COLOUR_2}Monthly profit: +STR_3306 :{WINDOW_COLOUR_2}Bénéfice mensuel: STR_3307 :{WINDOW_COLOUR_2}Minimum length: STR_3308 :{WINDOW_COLOUR_2}Excitement rating: STR_3309 :{WINDOW_COLOUR_2}{COMMA16} @@ -3319,8 +3319,8 @@ STR_3312 :{WINDOW_COLOUR_2}Rides/attractions under a preservation order: STR_3313 :Scenario Name STR_3314 :Enter name for scenario:- STR_3315 :Park/Scenario Details -STR_3316 :Enter description of this scenario:- -STR_3317 :No details yet +STR_3316 :Décrire ce scénario:- +STR_3317 :Pas de détails STR_3318 :{SMALLFONT}{BLACK}Select which group this scenario appears in STR_3319 :{WINDOW_COLOUR_2}Scenario Group: STR_3320 :Unable to save scenario file... @@ -3344,11 +3344,11 @@ STR_3337 :Six Flags Park STR_3338 :{BLACK}Custom-designed layout STR_3339 :{BLACK}{COMMA16} design available, or custom-designed layout STR_3340 :{BLACK}{COMMA16} designs available, or custom-designed layout -STR_3341 :{SMALLFONT}{BLACK}Game tools -STR_3342 :Scenario Editor -STR_3343 :Convert Saved Game to Scenario -STR_3344 :Roller Coaster Designer -STR_3345 :Track Designs Manager +STR_3341 :{SMALLFONT}{BLACK}Outils +STR_3342 :Editeur de scénario +STR_3343 :Convertir partie sauvegardée en scénario +STR_3344 :Concepteur de montages russes +STR_3345 :Gestionnaire de voies STR_3346 :Can't save track design... STR_3347 :Ride is too large, contains too many elements, or scenery is too spread out STR_3348 :Rename From e222b88581b6a5cce62983dee19b4347e99cc19d Mon Sep 17 00:00:00 2001 From: IntelOrca Date: Sun, 17 Aug 2014 23:57:41 +0100 Subject: [PATCH 23/28] start work on new ride window --- src/window.h | 1 + src/window_game_top_toolbar.c | 17 ++------- src/window_new_ride.c | 68 +++++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 15 deletions(-) diff --git a/src/window.h b/src/window.h index c8d90fc870..9629975068 100644 --- a/src/window.h +++ b/src/window.h @@ -375,6 +375,7 @@ void window_park_rating_open(); void window_finances_open(); void window_new_campaign_open(int campaignType); void window_ride_list_open(); +void window_new_ride_open(); void window_banner_open(); void window_cheats_open(); void window_research_open(); diff --git a/src/window_game_top_toolbar.c b/src/window_game_top_toolbar.c index bc7e406ee2..e5fe50057d 100644 --- a/src/window_game_top_toolbar.c +++ b/src/window_game_top_toolbar.c @@ -190,18 +190,7 @@ static void window_game_top_toolbar_mouseup() short widgetIndex; rct_window *w, *mainWindow; - #ifdef _MSC_VER - __asm mov widgetIndex, dx - #else - __asm__ ( "mov %[widgetIndex], dx " : [widgetIndex] "+m" (widgetIndex) ); - #endif - - #ifdef _MSC_VER - __asm mov w, esi - #else - __asm__ ( "mov %[w], esi " : [w] "+m" (w) ); - #endif - + window_mouse_up_get_registers(w, widgetIndex); switch (widgetIndex) { case WIDX_PAUSE: @@ -231,7 +220,6 @@ static void window_game_top_toolbar_mouseup() window_rotate_camera(mainWindow); break; case WIDX_MAP: - //RCT2_CALLPROC_EBPSAFE(0x0068C88A); window_map_open(); break; case WIDX_CLEAR_SCENERY: @@ -282,7 +270,7 @@ static void window_game_top_toolbar_mouseup() } break; case WIDX_CONSTRUCT_RIDE: - RCT2_CALLPROC_EBPSAFE(0x006B3CFF); + window_new_ride_open(); break; case WIDX_RIDES: window_ride_list_open(); @@ -292,7 +280,6 @@ static void window_game_top_toolbar_mouseup() break; case WIDX_STAFF: window_staff_open(); - //RCT2_CALLPROC_EBPSAFE(0x006BD3CC); break; case WIDX_GUESTS: window_guest_list_open(); diff --git a/src/window_new_ride.c b/src/window_new_ride.c index edbb45d96e..79137b0b29 100644 --- a/src/window_new_ride.c +++ b/src/window_new_ride.c @@ -33,6 +33,24 @@ enum { WINDOW_NEW_RIDE_TAB_RESEARCH } WINDOW_RIDE_CONSTRUCTION_TAB; +enum { + WIDX_BACKGROUND, + WIDX_TITLE, + WIDX_CLOSE, + WIDX_PAGE_BACKGROUND, + WIDX_TAB_1, + WIDX_TAB_2, + WIDX_TAB_3, + WIDX_TAB_4, + WIDX_TAB_5, + WIDX_TAB_6, + WIDX_TAB_7, + + WIDX_CURRENTLY_IN_DEVELOPMENT_GROUP, + WIDX_LAST_DEVELOPMENT_GROUP, + WIDX_LAST_DEVELOPMENT_BUTTON +}; + /** * * rct2: 0x006ACA58 @@ -55,4 +73,54 @@ void window_new_ride_init_vars() { } RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_RIDE_LIST_INFORMATION_TYPE, uint8) = 0; +} + +/** + * + * rct2: 0x006B3CFF + */ +void window_new_ride_open() +{ + rct_window *w; + + w = window_bring_to_front_by_id(WC_CONSTRUCT_RIDE, 0); + if (w != NULL) + return; + + // Not sure what these windows are + window_close_by_id(161, 0); + window_close_by_id(162, 0); + + w = window_create_auto_pos(601, 370, (uint32*)0x0098E354, WC_CONSTRUCT_RIDE, 0x400); + w->widgets = (rct_widget*)0x009AEBF4; + w->enabled_widgets = + (1 << WIDX_CLOSE) | + (1 << WIDX_TAB_1) | + (1 << WIDX_TAB_2) | + (1 << WIDX_TAB_3) | + (1 << WIDX_TAB_4) | + (1 << WIDX_TAB_5) | + (1 << WIDX_TAB_6) | + (1 << WIDX_TAB_7) | + (1 << 14) | + (1 << 15); + window_init_scroll_widgets(w); + + w->frame_no = 0; + w->colours[0] = 24; + w->colours[1] = 26; + w->colours[2] = 26; + w->var_480 = -1; + w->var_482 = -1; + RCT2_GLOBAL(0x00F43866, sint16) = -1; + + RCT2_CALLPROC_EBPSAFE(0x006B6F3E); + + w->var_482 = RCT2_ADDRESS(0x00F43825, sint16)[RCT2_GLOBAL(0x00F43824, uint8)]; + if (w->var_482 == -1) + w->var_482 = RCT2_GLOBAL(0x00F43523, sint16); + + w->width = 1; + RCT2_CALLPROC_EBPSAFE(0x006B3DF1); // initialise window size and widgets + RCT2_CALLPROC_EBPSAFE(0x006B7220); } \ No newline at end of file From 1575488f5a47485483d4ac2a1a58ae1540f3451d Mon Sep 17 00:00:00 2001 From: Balletie Date: Mon, 18 Aug 2014 12:45:13 +0200 Subject: [PATCH 24/28] Add fallback to MacPorts if brew isn't installed --- install.sh | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/install.sh b/install.sh index f74e9bcf92..97b25a9af7 100755 --- a/install.sh +++ b/install.sh @@ -1,7 +1,5 @@ #!/bin/bash -set -e - SDL2_PV=2.0.3 cachedir=.cache @@ -11,13 +9,37 @@ echo `uname` if [[ `uname` == "Darwin" ]]; then echo "Installation of OpenRCT2 assumes you have homebrew and use it to install packages." + + echo "Check if brew is installed" + package_command="brew" + which -s brew + if [ $? -eq 1 ]; then + echo "brew is not installed, or is not in your \$PATH" + echo "Check if MacPorts is installed" + which -s port + if [ $? -eq 1 ]; then + echo "MacPorts not found either, abort" + exit + else + echo "MacPorts found" + package_command="sudo port" + fi + else + echo "brew was found" + fi + + # Install packages with whatever command was found. # Very possible I'm missing some dependencies here. - brew install cmake wine + eval "$package_command install cmake wine" if [[ ! -d /usr/include/wine ]]; then # This will almost certainly break as brew changes. Better ideas # welcome. - sudo ln -s /usr/local/Cellar/wine/1.6.2/include/wine /usr/include + wine_path="/usr/local/Cellar/wine/1.6.2/include/wine" + if [ $package_command == "sudo port" ]; then + wine_path="/opt/local/include/wine" + fi + sudo ln -s $wine_path /usr/include fi mingw_dmg=gcc-4.8.0-qt-4.8.4-for-mingw32.dmg @@ -68,7 +90,7 @@ if [[ ! -f $cachedir/i686-w64-mingw32-pkg-config ]]; then # If this fails to work because of newlines, be sure you are running this # script with Bash, and not sh. We should really move this to a separate # file. - echo -e "#! /bin/sh\nexport PKG_CONFIG_LIBDIR=/usr/local/cross-tools/i686-w64-mingw32/lib/pkgconfig\npkg-config \$@" > $cachedir/i686-w64-mingw32-pkg-config; + echo -e "#!/bin/sh\nexport PKG_CONFIG_LIBDIR=/usr/local/cross-tools/i686-w64-mingw32/lib/pkgconfig\npkg-config \$@" > $cachedir/i686-w64-mingw32-pkg-config; fi chmod +x $cachedir/i686-w64-mingw32-pkg-config From 7563601050895ed6e52cafab39010b6c5988dde7 Mon Sep 17 00:00:00 2001 From: Balletie Date: Mon, 18 Aug 2014 12:46:03 +0200 Subject: [PATCH 25/28] Install wget if it's not found --- install.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/install.sh b/install.sh index 97b25a9af7..7f4357c233 100755 --- a/install.sh +++ b/install.sh @@ -28,6 +28,13 @@ if [[ `uname` == "Darwin" ]]; then echo "brew was found" fi + echo "Check if wget is installed" + which -s wget + if [ $? -eq 1 ]; then + echo "wget is not installed, installing wget.." + eval "$package_command install wget" + fi + # Install packages with whatever command was found. # Very possible I'm missing some dependencies here. eval "$package_command install cmake wine" From 6208aeb57a1c6a4e5e61a2f0d7fb913cc684d59c Mon Sep 17 00:00:00 2001 From: Balletie Date: Mon, 18 Aug 2014 12:51:31 +0200 Subject: [PATCH 26/28] Untabify the file --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 7f4357c233..3439d41eef 100755 --- a/install.sh +++ b/install.sh @@ -31,7 +31,7 @@ if [[ `uname` == "Darwin" ]]; then echo "Check if wget is installed" which -s wget if [ $? -eq 1 ]; then - echo "wget is not installed, installing wget.." + echo "wget is not installed, installing wget.." eval "$package_command install wget" fi From acb5afc6c5f7f6f715774c6b47e7cd1204b104bb Mon Sep 17 00:00:00 2001 From: Fabien Bourigault Date: Mon, 18 Aug 2014 14:00:02 +0200 Subject: [PATCH 27/28] Add 250+ french translated strings. --- data/language/french.txt | 522 +++++++++++++++++++-------------------- 1 file changed, 261 insertions(+), 261 deletions(-) diff --git a/data/language/french.txt b/data/language/french.txt index d6e544cc52..d1ed70736b 100644 --- a/data/language/french.txt +++ b/data/language/french.txt @@ -604,171 +604,171 @@ STR_0599 :A compact roller coaster with individual cars and smooth twisting d STR_0600 : STR_0601 : STR_0602 : -STR_0603 :Guest {INT32} -STR_0604 :Guest {INT32} -STR_0605 :Guest {INT32} -STR_0606 :Guest {INT32} -STR_0607 :Guest {INT32} -STR_0608 :Guest {INT32} -STR_0609 :Guest {INT32} -STR_0610 :Guest {INT32} -STR_0611 :Guest {INT32} -STR_0612 :Guest {INT32} -STR_0613 :Guest {INT32} -STR_0614 :Guest {INT32} -STR_0615 :Guest {INT32} -STR_0616 :Guest {INT32} -STR_0617 :Guest {INT32} -STR_0618 :Guest {INT32} -STR_0619 :Guest {INT32} -STR_0620 :Guest {INT32} -STR_0621 :Guest {INT32} -STR_0622 :Guest {INT32} -STR_0623 :Guest {INT32} -STR_0624 :Guest {INT32} -STR_0625 :Guest {INT32} -STR_0626 :Guest {INT32} -STR_0627 :Guest {INT32} -STR_0628 :Guest {INT32} -STR_0629 :Guest {INT32} -STR_0630 :Guest {INT32} -STR_0631 :Guest {INT32} -STR_0632 :Guest {INT32} -STR_0633 :Guest {INT32} -STR_0634 :Guest {INT32} -STR_0635 :Guest {INT32} -STR_0636 :Guest {INT32} -STR_0637 :Guest {INT32} -STR_0638 :Guest {INT32} -STR_0639 :Guest {INT32} -STR_0640 :Guest {INT32} -STR_0641 :Guest {INT32} -STR_0642 :Guest {INT32} -STR_0643 :Guest {INT32} -STR_0644 :Guest {INT32} -STR_0645 :Guest {INT32} -STR_0646 :Guest {INT32} -STR_0647 :Guest {INT32} -STR_0648 :Guest {INT32} -STR_0649 :Guest {INT32} -STR_0650 :Guest {INT32} -STR_0651 :Guest {INT32} -STR_0652 :Guest {INT32} -STR_0653 :Guest {INT32} -STR_0654 :Guest {INT32} -STR_0655 :Guest {INT32} -STR_0656 :Guest {INT32} -STR_0657 :Guest {INT32} -STR_0658 :Guest {INT32} -STR_0659 :Guest {INT32} -STR_0660 :Guest {INT32} -STR_0661 :Guest {INT32} -STR_0662 :Guest {INT32} -STR_0663 :Guest {INT32} -STR_0664 :Guest {INT32} -STR_0665 :Guest {INT32} -STR_0666 :Guest {INT32} -STR_0667 :Guest {INT32} -STR_0668 :Guest {INT32} -STR_0669 :Guest {INT32} -STR_0670 :Guest {INT32} -STR_0671 :Guest {INT32} -STR_0672 :Guest {INT32} -STR_0673 :Guest {INT32} -STR_0674 :Guest {INT32} -STR_0675 :Guest {INT32} -STR_0676 :Guest {INT32} -STR_0677 :Guest {INT32} -STR_0678 :Guest {INT32} -STR_0679 :Guest {INT32} -STR_0680 :Guest {INT32} -STR_0681 :Guest {INT32} -STR_0682 :Guest {INT32} -STR_0683 :Guest {INT32} -STR_0684 :Guest {INT32} -STR_0685 :Guest {INT32} -STR_0686 :Guest {INT32} -STR_0687 :Guest {INT32} -STR_0688 :Guest {INT32} -STR_0689 :Guest {INT32} -STR_0690 :Guest {INT32} -STR_0691 :Guest {INT32} -STR_0692 :Guest {INT32} -STR_0693 :Guest {INT32} -STR_0694 :Guest {INT32} -STR_0695 :Guest {INT32} -STR_0696 :Guest {INT32} -STR_0697 :Guest {INT32} -STR_0698 :Guest {INT32} -STR_0699 :Guest {INT32} -STR_0700 :Guest {INT32} -STR_0701 :Guest {INT32} -STR_0702 :Guest {INT32} -STR_0703 :Guest {INT32} -STR_0704 :Guest {INT32} -STR_0705 :Guest {INT32} -STR_0706 :Guest {INT32} -STR_0707 :Guest {INT32} -STR_0708 :Guest {INT32} -STR_0709 :Guest {INT32} -STR_0710 :Guest {INT32} -STR_0711 :Guest {INT32} -STR_0712 :Guest {INT32} -STR_0713 :Guest {INT32} -STR_0714 :Guest {INT32} -STR_0715 :Guest {INT32} -STR_0716 :Guest {INT32} -STR_0717 :Guest {INT32} -STR_0718 :Guest {INT32} -STR_0719 :Guest {INT32} -STR_0720 :Guest {INT32} -STR_0721 :Guest {INT32} -STR_0722 :Guest {INT32} -STR_0723 :Guest {INT32} -STR_0724 :Guest {INT32} -STR_0725 :Guest {INT32} -STR_0726 :Guest {INT32} -STR_0727 :Guest {INT32} -STR_0728 :Guest {INT32} -STR_0729 :Guest {INT32} -STR_0730 :Guest {INT32} -STR_0731 :Guest {INT32} -STR_0732 :Guest {INT32} -STR_0733 :Guest {INT32} -STR_0734 :Guest {INT32} -STR_0735 :Guest {INT32} -STR_0736 :Guest {INT32} -STR_0737 :Guest {INT32} -STR_0738 :Guest {INT32} -STR_0739 :Guest {INT32} -STR_0740 :Guest {INT32} -STR_0741 :Guest {INT32} -STR_0742 :Guest {INT32} -STR_0743 :Guest {INT32} -STR_0744 :Guest {INT32} -STR_0745 :Guest {INT32} -STR_0746 :Guest {INT32} -STR_0747 :Guest {INT32} -STR_0748 :Guest {INT32} -STR_0749 :Guest {INT32} -STR_0750 :Guest {INT32} -STR_0751 :Guest {INT32} -STR_0752 :Guest {INT32} -STR_0753 :Guest {INT32} -STR_0754 :Guest {INT32} -STR_0755 :Guest {INT32} -STR_0756 :Guest {INT32} -STR_0757 :Guest {INT32} -STR_0758 :Guest {INT32} -STR_0759 :Guest {INT32} -STR_0760 :Guest {INT32} -STR_0761 :Guest {INT32} -STR_0762 :Guest {INT32} -STR_0763 :Guest {INT32} -STR_0764 :Guest {INT32} -STR_0765 :Guest {INT32} -STR_0766 :Guest {INT32} -STR_0767 :Guest {INT32} +STR_0603 :Visiteur {INT32} +STR_0604 :Visiteur {INT32} +STR_0605 :Visiteur {INT32} +STR_0606 :Visiteur {INT32} +STR_0607 :Visiteur {INT32} +STR_0608 :Visiteur {INT32} +STR_0609 :Visiteur {INT32} +STR_0610 :Visiteur {INT32} +STR_0611 :Visiteur {INT32} +STR_0612 :Visiteur {INT32} +STR_0613 :Visiteur {INT32} +STR_0614 :Visiteur {INT32} +STR_0615 :Visiteur {INT32} +STR_0616 :Visiteur {INT32} +STR_0617 :Visiteur {INT32} +STR_0618 :Visiteur {INT32} +STR_0619 :Visiteur {INT32} +STR_0620 :Visiteur {INT32} +STR_0621 :Visiteur {INT32} +STR_0622 :Visiteur {INT32} +STR_0623 :Visiteur {INT32} +STR_0624 :Visiteur {INT32} +STR_0625 :Visiteur {INT32} +STR_0626 :Visiteur {INT32} +STR_0627 :Visiteur {INT32} +STR_0628 :Visiteur {INT32} +STR_0629 :Visiteur {INT32} +STR_0630 :Visiteur {INT32} +STR_0631 :Visiteur {INT32} +STR_0632 :Visiteur {INT32} +STR_0633 :Visiteur {INT32} +STR_0634 :Visiteur {INT32} +STR_0635 :Visiteur {INT32} +STR_0636 :Visiteur {INT32} +STR_0637 :Visiteur {INT32} +STR_0638 :Visiteur {INT32} +STR_0639 :Visiteur {INT32} +STR_0640 :Visiteur {INT32} +STR_0641 :Visiteur {INT32} +STR_0642 :Visiteur {INT32} +STR_0643 :Visiteur {INT32} +STR_0644 :Visiteur {INT32} +STR_0645 :Visiteur {INT32} +STR_0646 :Visiteur {INT32} +STR_0647 :Visiteur {INT32} +STR_0648 :Visiteur {INT32} +STR_0649 :Visiteur {INT32} +STR_0650 :Visiteur {INT32} +STR_0651 :Visiteur {INT32} +STR_0652 :Visiteur {INT32} +STR_0653 :Visiteur {INT32} +STR_0654 :Visiteur {INT32} +STR_0655 :Visiteur {INT32} +STR_0656 :Visiteur {INT32} +STR_0657 :Visiteur {INT32} +STR_0658 :Visiteur {INT32} +STR_0659 :Visiteur {INT32} +STR_0660 :Visiteur {INT32} +STR_0661 :Visiteur {INT32} +STR_0662 :Visiteur {INT32} +STR_0663 :Visiteur {INT32} +STR_0664 :Visiteur {INT32} +STR_0665 :Visiteur {INT32} +STR_0666 :Visiteur {INT32} +STR_0667 :Visiteur {INT32} +STR_0668 :Visiteur {INT32} +STR_0669 :Visiteur {INT32} +STR_0670 :Visiteur {INT32} +STR_0671 :Visiteur {INT32} +STR_0672 :Visiteur {INT32} +STR_0673 :Visiteur {INT32} +STR_0674 :Visiteur {INT32} +STR_0675 :Visiteur {INT32} +STR_0676 :Visiteur {INT32} +STR_0677 :Visiteur {INT32} +STR_0678 :Visiteur {INT32} +STR_0679 :Visiteur {INT32} +STR_0680 :Visiteur {INT32} +STR_0681 :Visiteur {INT32} +STR_0682 :Visiteur {INT32} +STR_0683 :Visiteur {INT32} +STR_0684 :Visiteur {INT32} +STR_0685 :Visiteur {INT32} +STR_0686 :Visiteur {INT32} +STR_0687 :Visiteur {INT32} +STR_0688 :Visiteur {INT32} +STR_0689 :Visiteur {INT32} +STR_0690 :Visiteur {INT32} +STR_0691 :Visiteur {INT32} +STR_0692 :Visiteur {INT32} +STR_0693 :Visiteur {INT32} +STR_0694 :Visiteur {INT32} +STR_0695 :Visiteur {INT32} +STR_0696 :Visiteur {INT32} +STR_0697 :Visiteur {INT32} +STR_0698 :Visiteur {INT32} +STR_0699 :Visiteur {INT32} +STR_0700 :Visiteur {INT32} +STR_0701 :Visiteur {INT32} +STR_0702 :Visiteur {INT32} +STR_0703 :Visiteur {INT32} +STR_0704 :Visiteur {INT32} +STR_0705 :Visiteur {INT32} +STR_0706 :Visiteur {INT32} +STR_0707 :Visiteur {INT32} +STR_0708 :Visiteur {INT32} +STR_0709 :Visiteur {INT32} +STR_0710 :Visiteur {INT32} +STR_0711 :Visiteur {INT32} +STR_0712 :Visiteur {INT32} +STR_0713 :Visiteur {INT32} +STR_0714 :Visiteur {INT32} +STR_0715 :Visiteur {INT32} +STR_0716 :Visiteur {INT32} +STR_0717 :Visiteur {INT32} +STR_0718 :Visiteur {INT32} +STR_0719 :Visiteur {INT32} +STR_0720 :Visiteur {INT32} +STR_0721 :Visiteur {INT32} +STR_0722 :Visiteur {INT32} +STR_0723 :Visiteur {INT32} +STR_0724 :Visiteur {INT32} +STR_0725 :Visiteur {INT32} +STR_0726 :Visiteur {INT32} +STR_0727 :Visiteur {INT32} +STR_0728 :Visiteur {INT32} +STR_0729 :Visiteur {INT32} +STR_0730 :Visiteur {INT32} +STR_0731 :Visiteur {INT32} +STR_0732 :Visiteur {INT32} +STR_0733 :Visiteur {INT32} +STR_0734 :Visiteur {INT32} +STR_0735 :Visiteur {INT32} +STR_0736 :Visiteur {INT32} +STR_0737 :Visiteur {INT32} +STR_0738 :Visiteur {INT32} +STR_0739 :Visiteur {INT32} +STR_0740 :Visiteur {INT32} +STR_0741 :Visiteur {INT32} +STR_0742 :Visiteur {INT32} +STR_0743 :Visiteur {INT32} +STR_0744 :Visiteur {INT32} +STR_0745 :Visiteur {INT32} +STR_0746 :Visiteur {INT32} +STR_0747 :Visiteur {INT32} +STR_0748 :Visiteur {INT32} +STR_0749 :Visiteur {INT32} +STR_0750 :Visiteur {INT32} +STR_0751 :Visiteur {INT32} +STR_0752 :Visiteur {INT32} +STR_0753 :Visiteur {INT32} +STR_0754 :Visiteur {INT32} +STR_0755 :Visiteur {INT32} +STR_0756 :Visiteur {INT32} +STR_0757 :Visiteur {INT32} +STR_0758 :Visiteur {INT32} +STR_0759 :Visiteur {INT32} +STR_0760 :Visiteur {INT32} +STR_0761 :Visiteur {INT32} +STR_0762 :Visiteur {INT32} +STR_0763 :Visiteur {INT32} +STR_0764 :Visiteur {INT32} +STR_0765 :Visiteur {INT32} +STR_0766 :Visiteur {INT32} +STR_0767 :Visiteur {INT32} STR_0768 :Homme de service {INT32} STR_0769 :Mécanicien {INT32} STR_0770 :Agent de sécurité {INT32} @@ -780,49 +780,49 @@ STR_0775 :Parc sans nom{POP16}{POP16} STR_0776 :Parc sans nom{POP16}{POP16} STR_0777 :Parc sans nom{POP16}{POP16} STR_0778 :Sign -STR_0779 :1st -STR_0780 :2nd -STR_0781 :3rd -STR_0782 :4th -STR_0783 :5th -STR_0784 :6th -STR_0785 :7th -STR_0786 :8th -STR_0787 :9th -STR_0788 :10th -STR_0789 :11th -STR_0790 :12th -STR_0791 :13th -STR_0792 :14th -STR_0793 :15th -STR_0794 :16th -STR_0795 :17th -STR_0796 :18th -STR_0797 :19th -STR_0798 :20th -STR_0799 :21st -STR_0800 :22nd -STR_0801 :23rd -STR_0802 :24th -STR_0803 :25th -STR_0804 :26th -STR_0805 :27th -STR_0806 :28th -STR_0807 :29th -STR_0808 :30th -STR_0809 :31st +STR_0779 :1er +STR_0780 :2ème +STR_0781 :3ème +STR_0782 :4ème +STR_0783 :5ème +STR_0784 :6ème +STR_0785 :7ème +STR_0786 :8ème +STR_0787 :9ème +STR_0788 :10ème +STR_0789 :11ème +STR_0790 :12ème +STR_0791 :13ème +STR_0792 :14ème +STR_0793 :15ème +STR_0794 :16ème +STR_0795 :17ème +STR_0796 :18ème +STR_0797 :19ème +STR_0798 :20ème +STR_0799 :21ème +STR_0800 :22ème +STR_0801 :23ème +STR_0802 :24ème +STR_0803 :25ème +STR_0804 :26ème +STR_0805 :27ème +STR_0806 :28ème +STR_0807 :29ème +STR_0808 :30ème +STR_0809 :31ème STR_0810 :Jan -STR_0811 :Feb +STR_0811 :Fév STR_0812 :Mar -STR_0813 :Apr -STR_0814 :May +STR_0813 :Avr +STR_0814 :Mai STR_0815 :Jun STR_0816 :Jul -STR_0817 :Aug +STR_0817 :Aoû STR_0818 :Sep STR_0819 :Oct STR_0820 :Nov -STR_0821 :Dec +STR_0821 :Déc STR_0822 :Unable to access graphic data file STR_0823 :Missing or inaccessible data file STR_0824 :{BLACK}{CROSS} @@ -945,15 +945,15 @@ STR_0940 :Supprimer surface de base STR_0941 :Supprimer surfaces verticales STR_0942 :Attractions transparentes STR_0943 :Décor transparent -STR_0944 :Save -STR_0945 :Don't Save +STR_0944 :Sauvegarder +STR_0945 :Ne pas sauvegarder STR_0946 :Annuler STR_0947 :Save this before loading ? STR_0948 :Save this before quitting ? STR_0949 :Save this before quitting ? -STR_0950 :Load Game -STR_0951 :Quit Game -STR_0952 :Quit Game +STR_0950 :Charger une partie +STR_0951 :Quitter la partie +STR_0952 :Quitter la partie STR_0953 :Load Landscape STR_0954 : STR_0955 :{SMALLFONT}{BLACK}Select seat rotation angle for this track section @@ -980,7 +980,7 @@ STR_0975 :Shops and Stalls STR_0976 :Restrooms and Information Kiosks STR_0977 :New Transport Rides STR_0978 :New Gentle Rides -STR_0979 :New Roller Coasters +STR_0979 :Nouvelles montagnes russes STR_0980 :New Thrill Rides STR_0981 :New Water Rides STR_0982 :New Shops & Stalls @@ -1012,10 +1012,10 @@ STR_1007 :Unable to create enough vehicles STR_1008 :{SMALLFONT}{BLACK}Open, close, or test ride/attraction STR_1009 :{SMALLFONT}{BLACK}Open or close all rides/attractions STR_1010 :{SMALLFONT}{BLACK}Open or close park -STR_1011 :Close all -STR_1012 :Open all -STR_1013 :Close park -STR_1014 :Open park +STR_1011 :Tout fermer +STR_1012 :Tout ouvrir +STR_1013 :Fermer le parc +STR_1014 :Ouvrir le parc STR_1015 :Unable to operate with more than one station platform in this mode STR_1016 :Unable to operate with less than two stations in this mode STR_1017 :Can't change operating mode... @@ -1025,8 +1025,8 @@ STR_1020 :Can't make changes... STR_1021 :{POP16}{POP16}{POP16}{POP16}{STRINGID} STR_1022 :{POP16}{POP16}{POP16}{COMMA16} car per train STR_1023 :{POP16}{POP16}{POP16}{COMMA16} cars per train -STR_1024 :{COMMA16} car per train -STR_1025 :{COMMA16} cars per train +STR_1024 :{COMMA16} voiture par train +STR_1025 :{COMMA16} voitures par train STR_1026 :Station platform too long! STR_1027 :{SMALLFONT}{BLACK}Locate this on Main View STR_1028 :Off edge of map! @@ -1037,12 +1037,12 @@ STR_1032 :Can only build this on water! STR_1033 :Can only build this above ground! STR_1034 :Can only build this on land! STR_1035 :Local authority won't allow construction above tree-height! -STR_1036 :Load Game +STR_1036 :Charger une partie STR_1037 :Load Landscape STR_1038 :Convert saved game to scenario STR_1039 :Install new track design -STR_1040 :Save Game -STR_1041 :Save Scenario +STR_1040 :Sauvegarder la partie +STR_1041 :Sauvegarder le scénario STR_1042 :Save Landscape STR_1043 :RollerCoaster Tycoon 2 Saved Game STR_1044 :RollerCoaster Tycoon 2 Scenario File @@ -1182,10 +1182,10 @@ STR_1177 :Can't remove footpath from here... STR_1178 :Land slope unsuitable STR_1179 :Footpath in the way STR_1180 :Can't build this underwater! -STR_1181 :Footpaths +STR_1181 :Allées STR_1182 :Type STR_1183 :Direction -STR_1184 :Slope +STR_1184 :Direction STR_1185 :{SMALLFONT}{BLACK}Direction STR_1186 :{SMALLFONT}{BLACK}Slope down STR_1187 :{SMALLFONT}{BLACK}Level @@ -1195,10 +1195,10 @@ STR_1190 :{SMALLFONT}{BLACK}Remove previous footpath section STR_1191 :{BLACK}{STRINGID} STR_1192 :{OUTLINE}{RED}{STRINGID} STR_1193 :{WINDOW_COLOUR_2}{STRINGID} -STR_1194 :Closed -STR_1195 :Test Run -STR_1196 :Open -STR_1197 :Broken Down +STR_1194 :Fermé +STR_1195 :En test +STR_1196 :Ouvert +STR_1197 :En panne STR_1198 :Crashed! STR_1199 :{COMMA16} person on ride STR_1200 :{COMMA16} people on ride @@ -1218,7 +1218,7 @@ STR_1213 :{SMALLFONT}{BLACK}Select minimum length of time to wait before depa STR_1214 :{SMALLFONT}{BLACK}Select maximum length of time to wait before departing STR_1215 :{WINDOW_COLOUR_2}Synchronize with adjacent stations STR_1216 :{SMALLFONT}{BLACK}Select whether to synchronize departure with all adjacent stations (for 'racing') -STR_1217 :{COMMA16} seconds +STR_1217 :{COMMA16} secondes STR_1218 :{BLACK}{SMALLUP} STR_1219 :{BLACK}{SMALLDOWN} STR_1220 :Exit only @@ -1348,7 +1348,7 @@ STR_1343 :{DURATION} / STR_1344 :{WINDOW_COLOUR_2}Ride length: {BLACK}{STRINGID}{STRINGID}{STRINGID}{STRINGID} STR_1345 :{LENGTH} STR_1346 :{LENGTH} / -STR_1347 :{WINDOW_COLOUR_2}Average speed: {BLACK}{VELOCITY} +STR_1347 :{WINDOW_COLOUR_2}Vitesse moyenne: {BLACK}{VELOCITY} STR_1348 :{WINDOW_COLOUR_2}Max. positive vertical G's: {BLACK}{COMMA2DP32}g STR_1349 :{WINDOW_COLOUR_2}Max. positive vertical G's: {OUTLINE}{RED}{COMMA2DP32}g STR_1350 :{WINDOW_COLOUR_2}Max. negative vertical G's: {BLACK}{COMMA2DP32}g @@ -1401,8 +1401,8 @@ STR_1396 :{SMALLFONT}{BLACK}Color scheme options STR_1397 :{SMALLFONT}{BLACK}Sound & music options STR_1398 :{SMALLFONT}{BLACK}Measurements and test data STR_1399 :{SMALLFONT}{BLACK}Graphs -STR_1400 :Entrance -STR_1401 :Exit +STR_1400 :Entrée +STR_1401 :Sortie STR_1402 :{SMALLFONT}{BLACK}Build or move entrance to ride/attraction STR_1403 :{SMALLFONT}{BLACK}Build or move exit from ride/attraction STR_1404 :{SMALLFONT}{BLACK}Rotate 90{DEGREE} @@ -1428,11 +1428,11 @@ STR_1423 :{SMALLFONT}{BLACK}Queue line path STR_1424 :{SMALLFONT}{BLACK}Footpath STR_1425 :Footpath STR_1426 :Queue Line -STR_1427 :{WINDOW_COLOUR_2}Customers: {BLACK}{COMMA32} per hour +STR_1427 :{WINDOW_COLOUR_2}Clients: {BLACK}{COMMA32} par heure STR_1428 :{WINDOW_COLOUR_2}Admission price: STR_1429 :{POP16}{POP16}{POP16}{CURRENCY2DP} STR_1430 :Free -STR_1431 :Walking +STR_1431 :Marche STR_1432 :Heading for {STRINGID} STR_1433 :Queuing for {STRINGID} STR_1434 :Drowning @@ -1442,7 +1442,7 @@ STR_1437 :At {STRINGID} STR_1438 :Sitting STR_1439 :(select location) STR_1440 :Mowing grass -STR_1441 :Sweeping footpath +STR_1441 :Balaye l'allée STR_1442 :Emptying litter bin STR_1443 :Watering gardens STR_1444 :Watching {STRINGID} @@ -1459,7 +1459,7 @@ STR_1454 :Can't name guest... STR_1455 :Invalid name for guest STR_1456 :{WINDOW_COLOUR_2}Cash spent: {BLACK}{CURRENCY2DP} STR_1457 :{WINDOW_COLOUR_2}Cash in pocket: {BLACK}{CURRENCY2DP} -STR_1458 :{WINDOW_COLOUR_2}Time in park: {BLACK}{REALTIME} +STR_1458 :{WINDOW_COLOUR_2}Temps dans le parc: {BLACK}{REALTIME} STR_1459 :Track style STR_1460 :{SMALLFONT}{BLACK}'U' shaped open track STR_1461 :{SMALLFONT}{BLACK}'O' shaped enclosed track @@ -1658,17 +1658,17 @@ STR_1653 :{SMALLFONT}{OPENQUOTES}...and here we are on {STRINGID}!{ENDQUOTES} STR_1654 :{WINDOW_COLOUR_2}Recent thoughts: STR_1655 :{SMALLFONT}{BLACK}Construct footpath on land STR_1656 :{SMALLFONT}{BLACK}Construct bridge or tunnel footpath -STR_1657 :{WINDOW_COLOUR_2}Preferred ride +STR_1657 :{WINDOW_COLOUR_2}Attraction favorite STR_1658 :{WINDOW_COLOUR_2}intensity: {BLACK}less than {COMMA16} -STR_1659 :{WINDOW_COLOUR_2}intensity: {BLACK}between {COMMA16} and {COMMA16} +STR_1659 :{WINDOW_COLOUR_2}intensité: {BLACK}entre {COMMA16} et {COMMA16} STR_1660 :{WINDOW_COLOUR_2}intensity: {BLACK}more than {COMMA16} -STR_1661 :{WINDOW_COLOUR_2}Nausea tolerance: {BLACK}{STRINGID} -STR_1662 :{WINDOW_COLOUR_2}Happiness: -STR_1663 :{WINDOW_COLOUR_2}Nausea: -STR_1664 :{WINDOW_COLOUR_2}Energy: -STR_1665 :{WINDOW_COLOUR_2}Hunger: -STR_1666 :{WINDOW_COLOUR_2}Thirst: -STR_1667 :{WINDOW_COLOUR_2}Bathroom: +STR_1661 :{WINDOW_COLOUR_2}Tolérance nausée: {BLACK}{STRINGID} +STR_1662 :{WINDOW_COLOUR_2}Bonheur: +STR_1663 :{WINDOW_COLOUR_2}Nausée: +STR_1664 :{WINDOW_COLOUR_2}Energie: +STR_1665 :{WINDOW_COLOUR_2}Faim: +STR_1666 :{WINDOW_COLOUR_2}Soif: +STR_1667 :{WINDOW_COLOUR_2}Toilettes: STR_1668 :{WINDOW_COLOUR_2}Satisfaction: {BLACK}Unknown STR_1669 :{WINDOW_COLOUR_2}Satisfaction: {BLACK}{COMMA16}% STR_1670 :{WINDOW_COLOUR_2}Total customers: {BLACK}{COMMA32} @@ -1741,7 +1741,7 @@ STR_1736 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{COM STR_1737 :{COMMA16} STR_1738 :Can't change number of laps... STR_1739 :Race won by guest {INT32} -STR_1740 :Race won by {STRINGID} +STR_1740 :Course gagnée par {STRINGID} STR_1741 :Not yet constructed ! STR_1742 :{WINDOW_COLOUR_2}Max. people on ride: STR_1743 :{SMALLFONT}{BLACK}Maximum number of people allowed on this ride at one time @@ -1819,23 +1819,23 @@ STR_1814 :Actions STR_1815 :Thoughts STR_1816 :{SMALLFONT}{BLACK}Select information type to show in guest list STR_1817 :({COMMA16}) -STR_1818 :{WINDOW_COLOUR_2}All guests -STR_1819 :{WINDOW_COLOUR_2}All guests (summarized) -STR_1820 :{WINDOW_COLOUR_2}Guests {STRINGID} +STR_1818 :{WINDOW_COLOUR_2}Tous les visiteurs +STR_1819 :{WINDOW_COLOUR_2}Tous les visiteurs (résumé) +STR_1820 :{WINDOW_COLOUR_2}Visiteurs {STRINGID} STR_1821 :{WINDOW_COLOUR_2}Guests thinking {STRINGID} STR_1822 :{WINDOW_COLOUR_2}Guests thinking about {POP16}{STRINGID} STR_1823 :{SMALLFONT}{BLACK}Show guests' thoughts about this ride/attraction STR_1824 :{SMALLFONT}{BLACK}Show guests on this ride/attraction STR_1825 :{SMALLFONT}{BLACK}Show guests queuing for this ride/attraction -STR_1826 :Status -STR_1827 :Popularity +STR_1826 :Statut +STR_1827 :Popularité STR_1828 :Satisfaction -STR_1829 :Profit -STR_1830 :Queue length -STR_1831 :Queue time -STR_1832 :Reliability -STR_1833 :Down-time -STR_1834 :Guests favorite +STR_1829 :Bénéfice +STR_1830 :Longueur file +STR_1831 :Temps attente +STR_1832 :Fiabilité +STR_1833 :Immobilisation +STR_1834 :Plébiscitée STR_1835 :Popularity: Unknown STR_1836 :Popularity: {COMMA16}% STR_1837 :Satisfaction: Unknown @@ -1861,13 +1861,13 @@ STR_1856 :{WINDOW_COLOUR_2}Profit per item sold: {BLACK}{CURRENCY2DP} STR_1857 :{WINDOW_COLOUR_2}Loss per item sold: {BLACK}{CURRENCY2DP} STR_1858 :{WINDOW_COLOUR_2}Cost: {BLACK}{CURRENCY} per month STR_1859 :Handymen -STR_1860 :Mechanics +STR_1860 :Mécaniciens STR_1861 :Security Guards -STR_1862 :Entertainers +STR_1862 :Animateurs STR_1863 :Handyman -STR_1864 :Mechanic +STR_1864 :Mécanicien STR_1865 :Security Guard -STR_1866 :Entertainer +STR_1866 :Animateur STR_1867 :{BLACK}{COMMA16} {STRINGID} STR_1868 :Can't change number of rotations... STR_1869 :{WINDOW_COLOUR_2}Number of rotations: @@ -2278,14 +2278,14 @@ STR_2273 :{WINDOW_COLOUR_2}Scenery/themeing:{NEWLINE}{BLACK}{STRINGID} STR_2274 :{SMALLFONT}{BLACK}Show details of this invention or development STR_2275 :{SMALLFONT}{BLACK}Show funding and options for research & development STR_2276 :{SMALLFONT}{BLACK}Show research & development status -STR_2277 :Unknown -STR_2278 :Transport Ride +STR_2277 :Inconnu +STR_2278 :Attraction de transport STR_2279 :Attraction tranquille STR_2280 :Montagne russe STR_2281 :Attraction frisson STR_2282 :Attraction aquatique -STR_2283 :Shop/Stall -STR_2284 :Scenery/Themeing +STR_2283 :Magasins et boutiques +STR_2284 :Décor et thèmes STR_2285 :Initial research STR_2286 :Designing STR_2287 :Completing design @@ -2488,7 +2488,7 @@ STR_2483 :{WINDOW_COLOUR_2}Weekly profit: {BLACK}+{CURRENCY2DP} STR_2484 :{WINDOW_COLOUR_2}Weekly profit: {RED}{CURRENCY2DP} STR_2485 :Controls STR_2486 :General -STR_2487 :Show 'real' names of guests +STR_2487 :Afficher le 'vrai' nom des visiteurs STR_2488 :{SMALLFONT}{BLACK}Toggle between showing 'real' names of guests and guest numbers STR_2489 :Shortcut keys... STR_2490 :Keyboard shortcuts @@ -2525,7 +2525,7 @@ STR_2520 :Show guest list STR_2521 :Show staff list STR_2522 :Show recent messages STR_2523 :Show map -STR_2524 :Screenshot +STR_2524 :Capture d'écran STR_2525 :??? STR_2526 :??? STR_2527 :??? From 181c5f6518d3330bbe68bbfd190960a33b4ce6da Mon Sep 17 00:00:00 2001 From: MaxBareiss Date: Mon, 18 Aug 2014 15:04:00 -0400 Subject: [PATCH 28/28] Fix typo s/haivng/having --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 6a10cd4eba..403ce159c5 100644 --- a/readme.md +++ b/readme.md @@ -36,7 +36,7 @@ The project therefore acts as a patch to RollerCoaster Tycoon 2, allowing each p ## 1.3 Progress Currently, the windowing system, graphics rendering and basic game loop are being decompiled. Decompiling all of the game's procedures is a convenient way of identifying the game's memory structure. SDL2 has been used as a replacement for the operating system calls, allowing for cross-platform support after the dependency on the original game's executable has been removed. -As of 16th August 2014, various UI improvements have already been made, settings are now stored in a local INI file. More drawing functions have now been decompiled but still remain cryptic C, much of the game management have been decompiled (e.g. peep generation, awards, cash out) and almost half of the windows. A rough estimate based on number of functions in the original game and number of functions now in C tells us that the project is approximately 25% complete of its target goal of haivng the game run on 100% C code. More information can be found in [changes to original game](https://github.com/IntelOrca/OpenRCT2/wiki/Changes-to-original-game) and [window progress](https://github.com/IntelOrca/OpenRCT2/wiki/Window-progress). +As of 16th August 2014, various UI improvements have already been made, settings are now stored in a local INI file. More drawing functions have now been decompiled but still remain cryptic C, much of the game management have been decompiled (e.g. peep generation, awards, cash out) and almost half of the windows. A rough estimate based on number of functions in the original game and number of functions now in C tells us that the project is approximately 25% complete of its target goal of having the game run on 100% C code. More information can be found in [changes to original game](https://github.com/IntelOrca/OpenRCT2/wiki/Changes-to-original-game) and [window progress](https://github.com/IntelOrca/OpenRCT2/wiki/Window-progress). ## 1.4 Aim The aim is to completely decompile RollerCoaster Tycoon 2 into C so that cross-platform support, new features, and new gameplay can be added in a similar fashion to OpenTTD. With the addition of SDL2, the game can already be run in a resizeable window (which was not possible originally). Once the game has been fully decompiled, additional gameplay features, gameplay tweaks, and improvements can be introduced. The following is only a brief, non-exhaustive list of the possibilities - there is much more possible: