void GameStateConfigBase::logic() {
	if (inpt->window_resized)
		refreshWidgets();

	if (defaults_confirm->visible) {
		// reset defaults confirmation
		logicDefaults();
		return;
	}
	else {
		if (!logicMain())
			return;
	}

	// tab contents
	active_tab = tab_control->getActiveTab();

	if (active_tab == AUDIO_TAB)
		logicAudio();
	else if (active_tab == INTERFACE_TAB) {
		logicInterface();

		// by default, hardware mouse cursor can not be turned off
		// that is because this class is used as-is on non-desktop platforms
		hardware_cursor_cb->Check();
		HARDWARE_CURSOR = true;
	}
	else if (active_tab == MODS_TAB)
		logicMods();
}
void GameStateConfigDesktop::logic() {
	if (inpt->window_resized)
		refreshWidgets();

	if (defaults_confirm->visible) {
		// reset defaults confirmation
		logicDefaults();
		return;
	}
	else if (input_confirm->visible) {
		// assign a keybind
		input_confirm->logic();
		scanKey(input_key);
		input_confirm_ticks--;
		if (input_confirm_ticks == 0) input_confirm->visible = false;
		return;
	}
	else {
		if (!logicMain())
			return;
	}

	// tab contents
	active_tab = tab_control->getActiveTab();

	if (active_tab == VIDEO_TAB)
		logicVideo();
	else if (active_tab == AUDIO_TAB)
		logicAudio();
	else if (active_tab == INTERFACE_TAB)
		logicInterface();
	else if (active_tab == INPUT_TAB)
		logicInput();
	else if (active_tab == KEYBINDS_TAB)
		logicKeybinds();
	else if (active_tab == MODS_TAB)
		logicMods();
}
void GameStateConfigBase::logic() {
	if (inpt->window_resized)
		refreshWidgets();

	if (defaults_confirm->visible) {
		// reset defaults confirmation
		logicDefaults();
		return;
	}
	else {
		if (!logicMain())
			return;
	}

	// tab contents
	active_tab = tab_control->getActiveTab();

	if (active_tab == AUDIO_TAB) {
		tablist.setNextTabList(&tablist_audio);
		logicAudio();
	}
	else if (active_tab == INTERFACE_TAB) {
		tablist.setNextTabList(&tablist_interface);
		logicInterface();

		if (platform_options.force_hardware_cursor) {
			// for some platforms, hardware mouse cursor can not be turned off
			hardware_cursor_cb->Check();
			HARDWARE_CURSOR = true;
		}
	}
	else if (active_tab == MODS_TAB) {
		tablist.setNextTabList(&tablist_mods);
		logicMods();
	}
}