build out video options tab
This commit is contained in:
parent
438e45895a
commit
dd05a3897e
1
Makefile
1
Makefile
|
@ -358,6 +358,7 @@ build/src/scene/switch.o: build/assets/models/props/switch001.h build/assets/mat
|
|||
build/src/util/dynamic_asset_data.o: build/assets/models/dynamic_model_list_data.h
|
||||
build/src/util/dynamic_asset_loader.o: build/assets/models/dynamic_model_list.h build/assets/models/dynamic_animated_model_list.h
|
||||
build/src/menu/audio_options.o: build/src/audio/subtitles.h
|
||||
build/src/menu/video_options.o: build/src/audio/subtitles.h
|
||||
build/src/scene/scene.o: build/src/audio/subtitles.h
|
||||
build/src/menu/main_menu.o: build/src/audio/subtitles.h
|
||||
|
||||
|
|
Binary file not shown.
|
@ -5,8 +5,6 @@
|
|||
#include "../font/dejavusans.h"
|
||||
#include "../audio/soundplayer.h"
|
||||
#include "../build/src/audio/subtitles.h"
|
||||
#include "../build/assets/materials/ui.h"
|
||||
#include "../build/src/audio/clips.h"
|
||||
#include "../build/src/audio/languages.h"
|
||||
#include "./translations.h"
|
||||
|
||||
|
@ -73,7 +71,7 @@ struct MenuElementParams gAudioMenuParams[] = {
|
|||
.params = {
|
||||
.checkbox = {
|
||||
.font = &gDejaVuSansFont,
|
||||
.messageId = GAMEUI_SUBTITLESANDSOUNDEFFECTS,
|
||||
.messageId = GAMEUI_SUBTITLES,
|
||||
},
|
||||
},
|
||||
.selectionIndex = AudioOptionSubtitlesEnabled,
|
||||
|
@ -85,7 +83,7 @@ struct MenuElementParams gAudioMenuParams[] = {
|
|||
.params = {
|
||||
.checkbox = {
|
||||
.font = &gDejaVuSansFont,
|
||||
.messageId = AUDIO_ALL_CAPTIONS,
|
||||
.messageId = GAMEUI_SUBTITLESANDSOUNDEFFECTS,
|
||||
}
|
||||
},
|
||||
.selectionIndex = AudioOptionAllSubtitlesEnabled,
|
||||
|
@ -222,10 +220,6 @@ void audioOptionsActoin(void* data, int selection, struct MenuAction* action) {
|
|||
}
|
||||
|
||||
void audioOptionsInit(struct AudioOptions* audioOptions) {
|
||||
if (gSaveData.controls.subtitleLanguage < 0 || gSaveData.controls.subtitleLanguage >= NUM_SUBTITLE_LANGUAGES) {
|
||||
gSaveData.controls.subtitleLanguage = 0;
|
||||
}
|
||||
|
||||
if (gSaveData.audio.audioLanguage < 0 || gSaveData.audio.audioLanguage >= NUM_AUDIO_LANGUAGES) {
|
||||
gSaveData.audio.audioLanguage = 0;
|
||||
}
|
||||
|
@ -244,11 +238,6 @@ void audioOptionsInit(struct AudioOptions* audioOptions) {
|
|||
|
||||
menuBuilderSetFSlider(&audioOptions->menuBuilder.elements[AUDIO_VOLUME_VALUE_INDEX], gSaveData.audio.soundVolume / (float)(0xFFFF));
|
||||
menuBuilderSetFSlider(&audioOptions->menuBuilder.elements[MUSIC_VOLUME_VALUE_INDEX], gSaveData.audio.musicVolume / (float)(0xFFFF));
|
||||
|
||||
menuBuilderSetCheckbox(&audioOptions->menuBuilder.elements[ALL_SUBTITLES_CHECKBOX_INDEX], (gSaveData.controls.flags & ControlSaveAllSubtitlesEnabled) != 0);
|
||||
menuBuilderSetCheckbox(&audioOptions->menuBuilder.elements[SUBTITLES_CHECKBOX_INDEX], (gSaveData.controls.flags & ControlSaveSubtitlesEnabled) != 0);
|
||||
|
||||
menuBuilderSetISlider(&audioOptions->menuBuilder.elements[TEXT_LANGUAGE_VALUE_INDEX], gSaveData.controls.subtitleLanguage);
|
||||
menuBuilderSetISlider(&audioOptions->menuBuilder.elements[AUDIO_LANGUAGE_VALUE_INDEX], gSaveData.audio.audioLanguage);
|
||||
}
|
||||
|
||||
|
|
|
@ -55,12 +55,14 @@ void optionsMenuInit(struct OptionsMenu* options) {
|
|||
controlsMenuInit(&options->controlsMenu);
|
||||
joystickOptionsInit(&options->joystickOptions);
|
||||
audioOptionsInit(&options->audioOptions);
|
||||
videoOptionsInit(&options->videoOptions);
|
||||
gameplayOptionsInit(&options->gameplayOptions);
|
||||
}
|
||||
|
||||
void optionsMenuRebuildText(struct OptionsMenu* options) {
|
||||
controlsRebuildtext(&options->controlsMenu);
|
||||
audioOptionsRebuildtext(&options->audioOptions);
|
||||
videoOptionsRebuildtext(&options->videoOptions);
|
||||
tabsRebuildText(&options->tabs);
|
||||
}
|
||||
|
||||
|
@ -75,6 +77,9 @@ enum MenuDirection optionsMenuUpdate(struct OptionsMenu* options) {
|
|||
case OptionsMenuTabsAudio:
|
||||
audioOptionsUpdate(&options->audioOptions);
|
||||
break;
|
||||
case OptionsMenuTabsVideo:
|
||||
videoOptionsUpdate(&options->videoOptions);
|
||||
break;
|
||||
case OptionsMenuTabsGameplay:
|
||||
gameplayOptionsUpdate(&options->gameplayOptions);
|
||||
break;
|
||||
|
@ -153,6 +158,9 @@ void optionsMenuRender(struct OptionsMenu* options, struct RenderState* renderSt
|
|||
case OptionsMenuTabsAudio:
|
||||
audioOptionsRender(&options->audioOptions, renderState, task);
|
||||
break;
|
||||
case OptionsMenuTabsVideo:
|
||||
videoOptionsRender(&options->videoOptions, renderState, task);
|
||||
break;
|
||||
case OptionsMenuTabsGameplay:
|
||||
gameplayOptionsRender(&options->gameplayOptions, renderState, task);
|
||||
break;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "./audio_options.h"
|
||||
#include "./joystick_options.h"
|
||||
#include "./gameplay_options.h"
|
||||
#include "./video_options.h"
|
||||
|
||||
enum OptionsMenuTabs {
|
||||
OptionsMenuTabsControlMapping,
|
||||
|
@ -28,6 +29,7 @@ struct OptionsMenu {
|
|||
struct ControlsMenu controlsMenu;
|
||||
struct JoystickOptions joystickOptions;
|
||||
struct AudioOptions audioOptions;
|
||||
struct VideoOptions videoOptions;
|
||||
struct GameplayOptions gameplayOptions;
|
||||
};
|
||||
|
||||
|
|
203
src/menu/video_options.c
Normal file
203
src/menu/video_options.c
Normal file
|
@ -0,0 +1,203 @@
|
|||
#include "video_options.h"
|
||||
|
||||
#include "../font/dejavusans.h"
|
||||
#include "./translations.h"
|
||||
#include "../savefile/savefile.h"
|
||||
#include "../main.h"
|
||||
|
||||
#include "../build/src/audio/subtitles.h"
|
||||
|
||||
#define MENU_Y 54
|
||||
#define MENU_WIDTH 252
|
||||
#define MENU_HEIGHT 124
|
||||
#define MENU_X ((SCREEN_WD - MENU_WIDTH) / 2)
|
||||
|
||||
struct MenuElementParams gVideoMenuParams[] = {
|
||||
{
|
||||
.type = MenuElementTypeCheckbox,
|
||||
.x = MENU_X + 8,
|
||||
.y = MENU_Y + 8,
|
||||
.params = {
|
||||
.checkbox = {
|
||||
.font = &gDejaVuSansFont,
|
||||
.messageId = GAMEUI_ASPECTWIDE,
|
||||
},
|
||||
},
|
||||
.selectionIndex = VideoOptionWidescreen,
|
||||
},
|
||||
{
|
||||
.type = MenuElementTypeCheckbox,
|
||||
.x = MENU_X + 8,
|
||||
.y = MENU_Y + 28,
|
||||
.params = {
|
||||
.checkbox = {
|
||||
.font = &gDejaVuSansFont,
|
||||
.messageId = GAMEUI_INTERLACED,
|
||||
},
|
||||
},
|
||||
.selectionIndex = VideoOptionInterlaced,
|
||||
},
|
||||
{
|
||||
.type = MenuElementTypeText,
|
||||
.x = MENU_X + 8,
|
||||
.y = MENU_Y + 48,
|
||||
.params = {
|
||||
.checkbox = {
|
||||
.font = &gDejaVuSansFont,
|
||||
.messageId = GAMEUI_CAPTIONING,
|
||||
},
|
||||
},
|
||||
.selectionIndex = -1,
|
||||
},
|
||||
{
|
||||
.type = MenuElementTypeCheckbox,
|
||||
.x = MENU_X + 8,
|
||||
.y = MENU_Y + 68,
|
||||
.params = {
|
||||
.checkbox = {
|
||||
.font = &gDejaVuSansFont,
|
||||
.messageId = GAMEUI_SUBTITLES,
|
||||
},
|
||||
},
|
||||
.selectionIndex = VideoOptionSubtitles,
|
||||
},
|
||||
{
|
||||
.type = MenuElementTypeCheckbox,
|
||||
.x = MENU_X + 8,
|
||||
.y = MENU_Y + 88,
|
||||
.params = {
|
||||
.checkbox = {
|
||||
.font = &gDejaVuSansFont,
|
||||
.messageId = GAMEUI_SUBTITLESANDSOUNDEFFECTS,
|
||||
}
|
||||
},
|
||||
.selectionIndex = VideoOptionCaptions,
|
||||
},
|
||||
{
|
||||
.type = MenuElementTypeSlider,
|
||||
.x = MENU_X + 8,
|
||||
.y = MENU_Y + 124,
|
||||
.params = {
|
||||
.slider = {
|
||||
.width = 232,
|
||||
.numberOfTicks = NUM_SUBTITLE_LANGUAGES,
|
||||
.discrete = 1,
|
||||
},
|
||||
},
|
||||
.selectionIndex = VideoOptionTextLanguage,
|
||||
},
|
||||
{
|
||||
.type = MenuElementTypeText,
|
||||
.x = MENU_X + 8,
|
||||
.y = MENU_Y + 108,
|
||||
.params = {
|
||||
.text = {
|
||||
.font = &gDejaVuSansFont,
|
||||
.messageId = AUDIO_TEXT_LANGUAGE,
|
||||
},
|
||||
},
|
||||
.selectionIndex = VideoOptionTextLanguage,
|
||||
},
|
||||
{
|
||||
.type = MenuElementTypeText,
|
||||
.x = MENU_X + 125,
|
||||
.y = MENU_Y + 108,
|
||||
.params = {
|
||||
.text = {
|
||||
.font = &gDejaVuSansFont,
|
||||
.message = "",
|
||||
},
|
||||
},
|
||||
.selectionIndex = VideoOptionTextLanguage,
|
||||
},
|
||||
};
|
||||
|
||||
#define WIDESCREEN_INDEX 0
|
||||
#define INTERLACED_INDEX 1
|
||||
#define SUBTITLES_INDEX 3
|
||||
#define CAPTIONS_INDEX 4
|
||||
#define LANGUAGE_TEXT_INDEX 7
|
||||
|
||||
void videoOptionsAction(void* data, int selection, struct MenuAction* action) {
|
||||
struct VideoOptions* videoOptions = (struct VideoOptions*)data;
|
||||
|
||||
switch (selection) {
|
||||
case VideoOptionWidescreen:
|
||||
if (action->state.checkbox.isChecked) {
|
||||
gSaveData.controls.flags |= ControlSaveWideScreen;
|
||||
} else {
|
||||
gSaveData.controls.flags &= ~ControlSaveWideScreen;
|
||||
}
|
||||
break;
|
||||
case VideoOptionInterlaced:
|
||||
if (action->state.checkbox.isChecked) {
|
||||
gSaveData.controls.flags |= ControlSaveInterlacedMode;
|
||||
} else {
|
||||
gSaveData.controls.flags &= ~ControlSaveInterlacedMode;
|
||||
}
|
||||
|
||||
setViMode(1);
|
||||
break;
|
||||
case VideoOptionSubtitles:
|
||||
if (action->state.checkbox.isChecked) {
|
||||
gSaveData.controls.flags |= ControlSaveSubtitlesEnabled;
|
||||
gSaveData.controls.flags &= ~ControlSaveAllSubtitlesEnabled;
|
||||
menuBuilderSetCheckbox(&videoOptions->menuBuilder.elements[CAPTIONS_INDEX], 0);
|
||||
} else {
|
||||
gSaveData.controls.flags &= ~ControlSaveSubtitlesEnabled;
|
||||
}
|
||||
break;
|
||||
case VideoOptionCaptions:
|
||||
if (action->state.checkbox.isChecked) {
|
||||
gSaveData.controls.flags |= ControlSaveAllSubtitlesEnabled;
|
||||
gSaveData.controls.flags &= ~ControlSaveSubtitlesEnabled;
|
||||
menuBuilderSetCheckbox(&videoOptions->menuBuilder.elements[SUBTITLES_INDEX], 0);
|
||||
} else {
|
||||
gSaveData.controls.flags &= ~ControlSaveAllSubtitlesEnabled;
|
||||
}
|
||||
break;
|
||||
case VideoOptionTextLanguage:
|
||||
gSaveData.controls.subtitleLanguage = action->state.iSlider.value;
|
||||
gVideoMenuParams[LANGUAGE_TEXT_INDEX].params.text.message = SubtitleLanguages[gSaveData.controls.subtitleLanguage];
|
||||
translationsReload(gSaveData.controls.subtitleLanguage);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void videoOptionsInit(struct VideoOptions* videoOptions) {
|
||||
if (gSaveData.controls.subtitleLanguage < 0 || gSaveData.controls.subtitleLanguage >= NUM_SUBTITLE_LANGUAGES) {
|
||||
gSaveData.controls.subtitleLanguage = 0;
|
||||
}
|
||||
|
||||
gVideoMenuParams[LANGUAGE_TEXT_INDEX].params.text.message = SubtitleLanguages[gSaveData.controls.subtitleLanguage];
|
||||
|
||||
menuBuilderInit(
|
||||
&videoOptions->menuBuilder,
|
||||
gVideoMenuParams,
|
||||
sizeof(gVideoMenuParams) / sizeof(*gVideoMenuParams),
|
||||
VideoOptionCount,
|
||||
videoOptionsAction,
|
||||
videoOptions
|
||||
);
|
||||
|
||||
menuBuilderSetCheckbox(&videoOptions->menuBuilder.elements[WIDESCREEN_INDEX], (gSaveData.controls.flags & ControlSaveWideScreen) != 0);
|
||||
menuBuilderSetCheckbox(&videoOptions->menuBuilder.elements[INTERLACED_INDEX], (gSaveData.controls.flags & ControlSaveInterlacedMode) != 0);
|
||||
|
||||
menuBuilderSetCheckbox(&videoOptions->menuBuilder.elements[CAPTIONS_INDEX], (gSaveData.controls.flags & ControlSaveAllSubtitlesEnabled) != 0);
|
||||
menuBuilderSetCheckbox(&videoOptions->menuBuilder.elements[SUBTITLES_INDEX], (gSaveData.controls.flags & ControlSaveSubtitlesEnabled) != 0);
|
||||
|
||||
menuBuilderSetISlider(&videoOptions->menuBuilder.elements[LANGUAGE_TEXT_INDEX], gSaveData.controls.subtitleLanguage);
|
||||
}
|
||||
|
||||
void videoOptionsRebuildtext(struct VideoOptions* videoOptions) {
|
||||
menuBuilderRebuildText(&videoOptions->menuBuilder);
|
||||
}
|
||||
|
||||
enum MenuDirection videoOptionsUpdate(struct VideoOptions* videoOptions) {
|
||||
return menuBuilderUpdate(&videoOptions->menuBuilder);
|
||||
}
|
||||
|
||||
void videoOptionsRender(struct VideoOptions* videoOptions, struct RenderState* renderState, struct GraphicsTask* task) {
|
||||
menuBuilderRender(&videoOptions->menuBuilder, renderState);
|
||||
}
|
||||
|
27
src/menu/video_options.h
Normal file
27
src/menu/video_options.h
Normal file
|
@ -0,0 +1,27 @@
|
|||
#ifndef __OPTIONS_VIDEO_OPTIONS_H__
|
||||
#define __OPTIONS_VIDEO_OPTIONS_H__
|
||||
|
||||
#include "./menu.h"
|
||||
#include "./menu_builder.h"
|
||||
#include "../graphics/graphics.h"
|
||||
|
||||
enum VideoOption {
|
||||
VideoOptionWidescreen,
|
||||
VideoOptionInterlaced,
|
||||
VideoOptionSubtitles,
|
||||
VideoOptionCaptions,
|
||||
VideoOptionTextLanguage,
|
||||
VideoOptionCount,
|
||||
};
|
||||
|
||||
struct VideoOptions {
|
||||
struct MenuBuilder menuBuilder;
|
||||
};
|
||||
|
||||
void videoOptionsInit(struct VideoOptions* videoOptions);
|
||||
void videoOptionsRebuildtext(struct VideoOptions* videoOptions);
|
||||
enum MenuDirection videoOptionsUpdate(struct VideoOptions* videoOptions);
|
||||
void videoOptionsRender(struct VideoOptions* videoOptions, struct RenderState* renderState, struct GraphicsTask* task);
|
||||
|
||||
|
||||
#endif
|
|
@ -8,6 +8,7 @@ from os.path import exists
|
|||
hl_gameui_whitelist = {
|
||||
"GAMEUI_AUDIO",
|
||||
"GAMEUI_AUTOSAVE",
|
||||
"GAMEUI_CAPTIONING",
|
||||
"GAMEUI_CHAPTER",
|
||||
"GAMEUI_GAMEMENU_QUIT",
|
||||
"GAMEUI_GAMEMENU_RESUMEGAME",
|
||||
|
@ -21,9 +22,11 @@ hl_gameui_whitelist = {
|
|||
"GAMEUI_PORTAL",
|
||||
"GAMEUI_SAVEGAME",
|
||||
"GAMEUI_SOUNDEFFECTVOLUME",
|
||||
"GAMEUI_SUBTITLES",
|
||||
"GAMEUI_SUBTITLESANDSOUNDEFFECTS",
|
||||
"GAMEUI_USEDEFAULTS",
|
||||
"GAMEUI_VIDEO",
|
||||
"GAMEUI_ASPECTWIDE",
|
||||
}
|
||||
|
||||
portal_whitelist = {
|
||||
|
@ -116,10 +119,17 @@ def get_caption_keys_values_language(lines):
|
|||
keyval= line.split('" "')
|
||||
if len(keyval) != 2:
|
||||
continue
|
||||
|
||||
if "[$WIN32]" in keyval[1]:
|
||||
continue
|
||||
if "[english]" in keyval[0] or 'commentary' in keyval[0]:
|
||||
continue
|
||||
|
||||
if "[$X360]" in keyval[1]:
|
||||
keyval[1] = keyval[1].replace("[$X360]", "")
|
||||
|
||||
key = keyval[0].replace('"', "").replace(".", "_").replace("-", "_").replace('\\', "_").replace('#', "").upper()
|
||||
val = keyval[1].replace('"', "").replace("\n", "").replace("\\", "")
|
||||
val = keyval[1].replace('"', "").replace("\n", "").replace("\\", "").strip()
|
||||
val = re.sub(r'\<clr.+\>','',val)
|
||||
val = re.sub(r'\<norepeat.+\>','',val)
|
||||
val = val.replace("<sfx>", "")
|
||||
|
|
Loading…
Reference in a new issue