Constants System
Centralized string keys and configuration values to eliminate magic strings and improve maintainability.
Source:
Assets/Scripts/Constants/
Overview
All string literals used for lookups, save keys, and style classes are defined as constants. This provides compile-time checking and a single source of truth for values used across the codebase.
| Benefit | Explanation |
|---|---|
| Compile-time checking | Typos caught at build time, not runtime |
| Refactoring safety | Change value in one place |
| Autocomplete support | IDE suggests available constants |
| Self-documenting | Clear naming indicates purpose |
Constant Categories
GameConstants
Core game configuration and save data keys.
Source:
GameConstants.cs
public static class GameConstants
{
// Scene Names
public const string Bootstrapper = "Bootstrapper";
public const string StartMenu = "StartMenu";
public const string Hub = "Hub";
public const string GoblinCampDay = "GoblinCampDay";
// Save Keys
public const string MetaProgressionKey = "MetaProgression";
public const string AudioSettingsKey = "AudioSettings";
public const string VideoSettingsKey = "VideoSettings";
// Attribute Keys
public const string PlayerGoldKey = "PlayerGold";
public const string PlayerExperienceKey = "PlayerExperience";
public const string PlayerLevelKey = "PlayerLevel";
// Combat Settings
public const float DefaultMeleeAttackRange = 2.0f;
public const float MinSwingVelocity = 1.0f;
public const float MaxSwingVelocity = 5.0f;
public const float MinVelocityDamageMultiplier = 0.5f;
public const float MaxVelocityDamageMultiplier = 2.0f;
public const float InvincibilityDuration = 0.2f;
// Arena Properties
public const int PreludeDuration = 8;
public const int WaveIntermissionDuration = 6;
public const int BossIntermissionDuration = 6;
}
AudioKeys
Audio mixer groups and clip identifiers.
Source:
AudioKeys.cs
public static class AudioKeys
{
// Mixer Groups
public const string MixerMaster = "Master";
public const string MixerMusic = "Music";
public const string MixerSfx = "SFX";
public const string MixerUI = "UI";
public const string MixerAmbience = "Ambience";
// UI Sounds
public const string ButtonClick = "button_click";
public const string ButtonEnter = "button_enter";
public const string ButtonExit = "button_exit";
public const string Pop = "pop";
// Game Music
public const string GameIntroKey = "Game_Intro_Music";
public const string GameWonKey = "Game_Won_Music";
public const string GameOverKey = "Game_Over_Music";
}
### LocalizationKeys
UI text localization keys.
> **Source**: [`LocalizationKeys.cs`](https://github.com/SBUplakankus/monsta-choppa-vr/blob/main/Assets/Scripts/Constants/LocalizationKeys.cs)
```csharp
public static class LocalizationKeys
{
public const string MainTable = "MainGame";
// Loading
public const string Initializing = "initializing";
public const string LoadingComplete = "loading-complete";
// Main Menu
public const string Play = "play";
public const string Settings = "settings";
public const string Quit = "quit";
public const string Resume = "resume";
// Settings
public const string AudioSettings = "audio-settings";
public const string VideoSettings = "video-settings";
public const string LanguageSettings = "language-settings";
// Audio
public const string Master = "master";
public const string Music = "music";
public const string SFX = "sfx";
public const string Ambience = "ambience";
// Stats
public const string Level = "level";
public const string Experience = "experience";
public const string Gold = "gold";
}
UIToolkitStyles
USS class names for UI Toolkit styling.
Source:
UIToolkitStyles.cs
public static class UIToolkitStyles
{
// Containers
public const string Container = "container";
public const string PanelBody = "panel-body";
public const string PanelHeader = "panel-header";
public const string PanelContent = "panel-content";
// Buttons
public const string MenuButton = "menu-button";
public const string ContinueButton = "continue-button";
// Health Bars
public const string HealthBarContainer = "health-bar-container";
public const string HealthBarBackground = "health-bar-background";
public const string HealthBarFill = "health-bar-fill";
// Loading Screen
public const string LoadingScreenContainer = "loading-screen-container";
public const string LoadingBarContainer = "loading-bar-container";
public const string LoadingBarFill = "loading-bar-fill";
// Settings
public const string SettingsSlider = "settings-slider";
public const string SettingsDropdown = "settings-dropdown";
// Tabs
public const string TabBar = "tab-bar";
public const string Tab = "tab";
public const string TabContent = "tab-content";
}
Save Data
SaveFile.AddOrUpdateData(GameConstants.MetaProgressionKey, metaProgressionData);
var data = SaveFile.GetData<MetaProgressionData>(GameConstants.MetaProgressionKey);
Audio
AudioEvents.SfxRequested.Raise(AudioKeys.ButtonClick);
audioMixer.SetFloat(AudioKeys.MixerMaster, volume);
UI Styling
var button = UIToolkitFactory.CreateButton(
LocalizationKeys.Play,
HandlePlay,
UIToolkitStyles.MenuButton
);
Adding New Constants
- Identify the category (Game, Audio, Localization, UI)
- Add to appropriate static class
- Use descriptive naming:
CategoryActionorCategoryItem - Replace all magic string usages