1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-24 00:03:11 +01:00

add twitch integration, part 2

This commit is contained in:
Miso Zmiric (Mike Squinter)
2015-05-25 20:38:33 +01:00
committed by IntelOrca
parent 1ac93e44c9
commit c2c9bbf4ef
21 changed files with 4502 additions and 108 deletions

View File

@@ -46,6 +46,7 @@ enum {
WINDOW_OPTIONS_PAGE_AUDIO,
WINDOW_OPTIONS_PAGE_INPUT,
WINDOW_OPTIONS_PAGE_MISC,
WINDOW_OPTIONS_PAGE_TWITCH,
WINDOW_OPTIONS_PAGE_COUNT
};
@@ -59,6 +60,7 @@ enum WINDOW_OPTIONS_WIDGET_IDX {
WIDX_TAB_3,
WIDX_TAB_4,
WIDX_TAB_5,
WIDX_TAB_6,
WIDX_RESOLUTION,
WIDX_RESOLUTION_DROPDOWN,
@@ -104,6 +106,13 @@ enum WINDOW_OPTIONS_WIDGET_IDX {
WIDX_ALLOW_SUBTYPE_SWITCHING,
WIDX_DEBUGGING_TOOLS,
WIDX_TEST_UNFINISHED_TRACKS,
WIDX_CHANNEL_BUTTON,
WIDX_FOLLOWER_PEEP_NAMES_CHECKBOX,
WIDX_FOLLOWER_PEEP_TRACKING_CHECKBOX,
WIDX_CHAT_PEEP_NAMES_CHECKBOX,
WIDX_CHAT_PEEP_TRACKING_CHECKBOX,
WIDX_NEWS_CHECKBOX,
WINDOW_OPTIONS_WIDGETS_SIZE // Marks the end of the widget list, leave as last item
};
@@ -120,6 +129,7 @@ static rct_widget window_options_widgets[] = {
{ WWT_TAB, 1, 65, 95, 17, 43, 0x2000144E, STR_NONE },
{ WWT_TAB, 1, 96, 126, 17, 43, 0x2000144E, STR_NONE },
{ WWT_TAB, 1, 127, 157, 17, 43, 0x2000144E, STR_NONE },
{ WWT_TAB, 1, 158, 188, 17, 43, 0x2000144E, STR_NONE },
// Display tab
{ WWT_DROPDOWN, 0, 155, 299, 53, 64, 840, STR_NONE }, // resolution
@@ -170,11 +180,20 @@ static rct_widget window_options_widgets[] = {
{ WWT_CHECKBOX, 2, 10, 299, 98, 109, 5122, STR_NONE }, // allow subtype
{ WWT_CHECKBOX, 2, 10, 299, 113, 124, 5150, STR_NONE }, // enabled debugging tools
{ WWT_CHECKBOX, 2, 10, 299, 128, 139, 5155, 5156 }, // test unfinished tracks
//Twitch tab
{ WWT_DROPDOWN_BUTTON, 2, 10, 299, 53, 64, STR_TWITCH_NAME, STR_NONE }, // Twitch channel name
{ WWT_CHECKBOX, 2, 10, 299, 68, 79, STR_TWITCH_PEEP_FOLLOWERS, STR_TWITCH_PEEP_FOLLOWERS_TIP }, // Twitch name peeps by follows
{ WWT_CHECKBOX, 2, 10, 299, 83, 94, STR_TWITCH_FOLLOWERS_TRACK, STR_TWITCH_FOLLOWERS_TRACK_TIP}, // Twitch information on for follows
{ WWT_CHECKBOX, 2, 10, 299, 98, 109, STR_TWITCH_PEEP_CHAT, STR_TWITCH_PEEP_CHAT_TIP }, // Twitch name peeps by chat
{ WWT_CHECKBOX, 2, 10, 299, 113, 124, STR_TWITCH_CHAT_TRACK, STR_TWITCH_CHAT_TRACK_TIP }, // Twitch information on for chat
{ WWT_CHECKBOX, 2, 10, 299, 128, 139, STR_TWITCH_CHAT_NEWS, STR_TWITCH_CHAT_NEWS_TIP }, // Twitch chat !news as notifications in game
{ WIDGETS_END },
};
const int window_options_tab_animation_divisor[] = { 4, 8, 2, 2, 2 };
const int window_options_tab_animation_frames[] = { 16, 8, 16, 4, 16 };
const int window_options_tab_animation_divisor[] = { 4, 8, 2, 2, 2, 1 };
const int window_options_tab_animation_frames[] = { 16, 8, 16, 4, 16, 1 };
static void window_options_set_page(rct_window *w, int page);
static void window_options_set_pressed_tab(rct_window *w);
@@ -188,6 +207,7 @@ static void window_options_dropdown();
static void window_options_update(rct_window *w);
static void window_options_invalidate();
static void window_options_paint();
static void window_options_text_input();
static void window_options_show_dropdown(rct_window *w, rct_widget *widget, int num_items);
static void window_options_update_height_markers();
@@ -211,7 +231,7 @@ static void* window_options_events[] = {
window_options_emptysub,
window_options_emptysub,
window_options_emptysub,
window_options_emptysub,
window_options_text_input,
window_options_emptysub,
window_options_emptysub,
window_options_emptysub,
@@ -244,6 +264,7 @@ void window_options_open()
(1ULL << WIDX_TAB_3) |
(1ULL << WIDX_TAB_4) |
(1ULL << WIDX_TAB_5) |
(1ULL << WIDX_TAB_6) |
(1ULL << WIDX_SOUND) |
(1ULL << WIDX_SOUND_DROPDOWN) |
(1ULL << WIDX_SOUND_CHECKBOX) |
@@ -283,7 +304,13 @@ void window_options_open()
(1ULL << WIDX_TEST_UNFINISHED_TRACKS) |
(1ULL << WIDX_RCT1_COLOUR_SCHEME) |
(1ULL << WIDX_DATE_FORMAT) |
(1ULL << WIDX_DATE_FORMAT_DROPDOWN);
(1ULL << WIDX_DATE_FORMAT_DROPDOWN) |
(1ULL << WIDX_CHANNEL_BUTTON) |
(1ULL << WIDX_FOLLOWER_PEEP_NAMES_CHECKBOX) |
(1ULL << WIDX_FOLLOWER_PEEP_TRACKING_CHECKBOX) |
(1ULL << WIDX_CHAT_PEEP_NAMES_CHECKBOX) |
(1ULL << WIDX_CHAT_PEEP_TRACKING_CHECKBOX) |
(1ULL << WIDX_NEWS_CHECKBOX);
w->page = WINDOW_OPTIONS_PAGE_DISPLAY;
window_init_scroll_widgets(w);
@@ -312,11 +339,15 @@ static void window_options_mouseup()
case WIDX_TAB_3:
case WIDX_TAB_4:
case WIDX_TAB_5:
case WIDX_TAB_6:
window_options_set_page(w, widgetIndex - WIDX_TAB_1);
break;
case WIDX_HOTKEY_DROPDOWN:
window_shortcut_keys_open();
break;
case WIDX_CHANNEL_BUTTON:
window_text_input_raw_open(w, widgetIndex, STR_TWITCH_NAME, STR_TWITCH_NAME_DESC, gConfigTwitch.channel, 32);
break;
case WIDX_SCREEN_EDGE_SCROLLING:
gConfigGeneral.edge_scrolling ^= 1;
config_save_default();
@@ -387,6 +418,31 @@ static void window_options_mouseup()
config_save_default();
window_invalidate(w);
break;
case WIDX_FOLLOWER_PEEP_NAMES_CHECKBOX:
gConfigTwitch.enable_follower_peep_names ^= 1;
config_save_default();
window_invalidate(w);
break;
case WIDX_FOLLOWER_PEEP_TRACKING_CHECKBOX:
gConfigTwitch.enable_follower_peep_tracking ^= 1;
config_save_default();
window_invalidate(w);
break;
case WIDX_CHAT_PEEP_NAMES_CHECKBOX:
gConfigTwitch.enable_chat_peep_names ^= 1;
config_save_default();
window_invalidate(w);
break;
case WIDX_CHAT_PEEP_TRACKING_CHECKBOX:
gConfigTwitch.enable_chat_peep_tracking ^= 1;
config_save_default();
window_invalidate(w);
break;
case WIDX_NEWS_CHECKBOX:
gConfigTwitch.enable_news ^= 1;
config_save_default();
window_invalidate(w);
break;
case WIDX_SAVE_PLUGIN_DATA_CHECKBOX:
gConfigGeneral.save_plugin_data ^= 1;
config_save_default();
@@ -867,6 +923,21 @@ static void window_options_invalidate()
window_options_widgets[WIDX_ALLOW_SUBTYPE_SWITCHING].type = WWT_CHECKBOX;
window_options_widgets[WIDX_DEBUGGING_TOOLS].type = WWT_CHECKBOX;
window_options_widgets[WIDX_TEST_UNFINISHED_TRACKS].type = WWT_CHECKBOX;
break;
case WINDOW_OPTIONS_PAGE_TWITCH:
widget_set_checkbox_value(w, WIDX_FOLLOWER_PEEP_NAMES_CHECKBOX, gConfigTwitch.enable_follower_peep_names);
widget_set_checkbox_value(w, WIDX_FOLLOWER_PEEP_TRACKING_CHECKBOX, gConfigTwitch.enable_follower_peep_tracking);
widget_set_checkbox_value(w, WIDX_CHAT_PEEP_NAMES_CHECKBOX, gConfigTwitch.enable_chat_peep_names);
widget_set_checkbox_value(w, WIDX_CHAT_PEEP_TRACKING_CHECKBOX, gConfigTwitch.enable_chat_peep_tracking);
widget_set_checkbox_value(w, WIDX_NEWS_CHECKBOX, gConfigTwitch.enable_news);
window_options_widgets[WIDX_CHANNEL_BUTTON].type = WWT_DROPDOWN_BUTTON;
window_options_widgets[WIDX_FOLLOWER_PEEP_NAMES_CHECKBOX].type = WWT_CHECKBOX;
window_options_widgets[WIDX_FOLLOWER_PEEP_TRACKING_CHECKBOX].type = WWT_CHECKBOX;
window_options_widgets[WIDX_CHAT_PEEP_NAMES_CHECKBOX].type = WWT_CHECKBOX;
window_options_widgets[WIDX_CHAT_PEEP_TRACKING_CHECKBOX].type = WWT_CHECKBOX;
window_options_widgets[WIDX_NEWS_CHECKBOX].type = WWT_CHECKBOX;
break;
}
}
@@ -973,6 +1044,26 @@ static void window_options_update_height_markers()
gfx_invalidate_screen();
}
static void window_options_text_input(){
short widgetIndex;
rct_window *w;
char _cl;
char* text;
window_text_input_get_registers(w, widgetIndex, _cl, text);
if (_cl == 0)
{
return;
}
if (widgetIndex == WIDX_CHANNEL_BUTTON){
if (gConfigTwitch.channel != NULL)
free(gConfigTwitch.channel);
gConfigTwitch.channel = _strdup(text);
config_save_default();
}
}
#pragma region Common
static void window_options_set_page(rct_window *w, int page)
@@ -1016,6 +1107,7 @@ static void window_options_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *w
window_options_draw_tab_image(dpi, w, WINDOW_OPTIONS_PAGE_AUDIO, 5335);
window_options_draw_tab_image(dpi, w, WINDOW_OPTIONS_PAGE_INPUT, 5201);
window_options_draw_tab_image(dpi, w, WINDOW_OPTIONS_PAGE_MISC, 5205);
window_options_draw_tab_image(dpi, w, WINDOW_OPTIONS_PAGE_TWITCH, SPR_G2_TAB_TWITCH);
}
#pragma endregion