forked from phenom/healer-man
Release Healer Man 0.1.12
This commit is contained in:
1 parent
13970d03c8
commit
65e24f644e
201 files changed
+5061
-123
No files matched your search
@@ -9,6 +9,7 @@ import { ControllerButton } from "./ControllerButton";
|
||||
import {
|
||||
type CombatActorGroup,
|
||||
type CombatPresentationSettings,
|
||||
type CombatVfxMode,
|
||||
type CombatVfxQuality,
|
||||
} from "../game/combatPresentation";
|
||||
import {
|
||||
@@ -67,6 +68,10 @@ const TOGGLES: readonly ToggleOption[] = [
|
||||
const COMBAT_ACTOR_GROUPS: readonly CombatActorGroup[] = ["player", "party", "enemy"];
|
||||
const VFX_QUALITY_ORDER: readonly CombatVfxQuality[] = ["off", "low", "high"];
|
||||
|
||||
export function nextCombatVfxMode(mode: CombatVfxMode): CombatVfxMode {
|
||||
return mode === "generated" ? "original" : "generated";
|
||||
}
|
||||
|
||||
function actorGroupLabel(group: CombatActorGroup): string {
|
||||
return group === "enemy" ? "Enemies" : `${group[0].toUpperCase()}${group.slice(1)}`;
|
||||
}
|
||||
@@ -97,6 +102,9 @@ function OptionsDialog({
|
||||
const index = VFX_QUALITY_ORDER.indexOf(presentationSettings.vfxQuality);
|
||||
onPresentationChange({ vfxQuality: VFX_QUALITY_ORDER[(index + 1) % VFX_QUALITY_ORDER.length] });
|
||||
};
|
||||
const cycleVfxMode = () => onPresentationChange({
|
||||
vfxMode: nextCombatVfxMode(presentationSettings.vfxMode),
|
||||
});
|
||||
const cycleGameplayFrameRate = () => onChange({
|
||||
gameplayFrameRate: nextFrameRateLimit(settings.gameplayFrameRate, GAMEPLAY_FRAME_RATE_LIMITS),
|
||||
});
|
||||
@@ -116,6 +124,7 @@ function OptionsDialog({
|
||||
{ id: "option-scale-up", run: () => onChange({ uiScale: quantize(settings.uiScale + 0.05, 0.05, 0.75, 1.25) }) },
|
||||
{ id: "option-minimap", run: () => onChange({ minimapRotation: settings.minimapRotation === "north-up" ? "player-up" : "north-up" }) },
|
||||
{ id: "option-threat-position", run: () => onChange({ threatMeterPosition: DEFAULT_THREAT_METER_POSITION }) },
|
||||
{ id: "option-vfx-mode", run: cycleVfxMode },
|
||||
{ id: "option-vfx-quality", run: cycleVfxQuality },
|
||||
...COMBAT_ACTOR_GROUPS.flatMap((group) => [
|
||||
{
|
||||
@@ -220,6 +229,19 @@ function OptionsDialog({
|
||||
}))}
|
||||
</div>
|
||||
<h3 className="options-panel__section-title">Combat presentation</h3>
|
||||
<div className="option-row">
|
||||
<span>
|
||||
<strong>Spell visual mode</strong>
|
||||
<small>{presentationSettings.vfxMode === "original"
|
||||
? "Use only packaged original source effects. Unsupported spells show no visual effect."
|
||||
: "Use the current generated combat effects."}</small>
|
||||
</span>
|
||||
{optionButton(
|
||||
"option-vfx-mode",
|
||||
presentationSettings.vfxMode === "original" ? "Original" : "Generated",
|
||||
cycleVfxMode,
|
||||
)}
|
||||
</div>
|
||||
<div className="option-row">
|
||||
<span><strong>VFX quality</strong><small>High uses the full effect budget; Low reduces particles and simultaneous effects; Off skips combat VFX.</small></span>
|
||||
{optionButton("option-vfx-quality", presentationSettings.vfxQuality[0].toUpperCase() + presentationSettings.vfxQuality.slice(1), cycleVfxQuality)}
|
||||
|
||||
Reference in new issue
Block a user