diff options
Diffstat (limited to 'TemplePushing.c4s')
| -rw-r--r-- | TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Script.c | 80 | ||||
| -rw-r--r-- | TemplePushing.c4s/Misc.c4d/Symbols.c4d/Disabled.c4d/DefCore.txt | 6 | ||||
| -rw-r--r-- | TemplePushing.c4s/Misc.c4d/Symbols.c4d/Disabled.c4d/Graphics.png | bin | 0 -> 3144 bytes | |||
| -rw-r--r-- | TemplePushing.c4s/Misc.c4d/Symbols.c4d/Disabled.c4d/Names.txt | 2 |
4 files changed, 81 insertions, 7 deletions
diff --git a/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Script.c index a453b2f..d8987b9 100644 --- a/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Script.c +++ b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Script.c @@ -11,6 +11,8 @@ static const local Sections, Modes; local clonk, setupPlayer; +local disabledRandomModes; + // Selected values local section, mode; local selectRandomSection, selectRandomMode; @@ -34,6 +36,8 @@ protected func Initialize() if (DefinitionCall(def, "ModeName")) Modes[GetLength(Modes)] = def; } mode = Modes[0]; + + disabledRandomModes = []; } private func ShowSetup() @@ -98,10 +102,34 @@ private func SelectMode(id selectedMode) ModeSelectionDone(); } +private func ShowRandomModeMenu(id selection) +{ + CreateMenu(GetID(), clonk, 0, C4MN_Extra_None, 0, 0, C4MN_Style_Context); + + var menuItemIndex = 0; + for (var m in Modes) + { + AddOptionMenuItem(Format("{{%i}} %s", m, m->ModeName()), !disabledRandomModes[menuItemIndex], Format("ToggleRandomMode(%d, %i)", menuItemIndex, m), [SDNE, SDSD][disabledRandomModes[menuItemIndex]]); + CheckPreselect(m == selection, menuItemIndex++); + } + + clonk->AddMenuItem("$Done$", "ModeSelectionDone()", SDNE); + CheckPreselect(!selection, menuItemIndex++); + clonk->AddMenuItem("$Back$", "ShowModeMenu()", SBCK); +} + +func ToggleRandomMode(int index, id mode) +{ + disabledRandomModes[index] ^= true; + ShowMessage(); + ShowRandomModeMenu(mode); +} + private func SelectRandomMode() { selectRandomMode = true; - ModeSelectionDone(); + ShowMessage(); + ShowRandomModeMenu(); } private func ModeSelectionDone() @@ -119,15 +147,15 @@ private func ShowSettingsMenu(bool preselect, int selectedSetting) // Deathmatch entry AddOptionMenuItem(GetName(0, DTHM), deathmatchEnabled, "SelectSetting(SETTING_Deathmatch)", DTHM); CheckPreselect(preselect && selectedSetting == SETTING_Deathmatch, menuItemIndex++); - + // Sudden Death entry AddOptionMenuItem(GetName(0, SDDT), suddendeathEnabled, "SelectSetting(SETTING_SuddenDeath)", SDDT); CheckPreselect(preselect && selectedSetting == SETTING_SuddenDeath, menuItemIndex++); - + // "Turn in jump" entry AddOptionMenuItem(GetName(0, RIJP), rotateInJumpEnabled, "SelectSetting(SETTING_RotateInJump)", RIJP); CheckPreselect(preselect && selectedSetting == SETTING_RotateInJump, menuItemIndex++); - + // Ambience entry AddOptionMenuItem("$Ambience$", ambienceEnabled, "SelectSetting(SETTING_Ambience)", SABC); CheckPreselect(preselect && selectedSetting == SETTING_Ambience, menuItemIndex++); @@ -149,7 +177,7 @@ private func ShowSettingsMenu(bool preselect, int selectedSetting) clonk->AddMenuItem("$Done$", "SetupDone()", SDNE); CheckPreselect(!preselect, menuItemIndex++); - clonk->AddMenuItem("$Back$", "ShowModeMenu()", SBCK); + clonk->AddMenuItem("$Back$", ["ShowModeMenu()", "ShowRandomModeMenu()"][selectRandomMode], SBCK); } private func SelectSetting(int selectedSetting) @@ -196,7 +224,26 @@ private func SetupDone() { // Apply random selection if (selectRandomSection) section = Sections[Random(GetLength(Sections))]; - if (selectRandomMode) mode = Modes[Random(GetLength(Modes))]; + if (selectRandomMode) + { + var enabledModes = []; + var i = 0; + for(var m in Modes) + { + if(!disabledRandomModes[i]) + { + enabledModes[GetLength(enabledModes)] = m; + } + ++i; + } + + if(GetLength(enabledModes) <= 0) + { + enabledModes = Modes; + } + + mode = enabledModes[Random(GetLength(enabledModes))]; + } selectRandomSection = selectRandomMode = false; // Show final setup message and start the game ShowMessage(); @@ -256,7 +303,26 @@ private func GetMessage() var msgMode; if (selectRandomMode) { - msgMode = Format("$Mode$: {{SRND}} $Random$"); + var i = 0, enabledCount = 0; + var modesString = ""; + for(var m in Modes) + { + if(disabledRandomModes[i++]) + { + continue; + } + if(modesString != "") + { + modesString = Format("%s, ", modesString); + if(enabledCount == 2) + { + modesString = Format("%s|", modesString); + } + } + modesString = Format("%s%s", modesString, m->ModeName()); + ++enabledCount; + } + msgMode = Format("$Mode$: {{SRND}} $Random$: %s", modesString); } else { diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Disabled.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Disabled.c4d/DefCore.txt new file mode 100644 index 0000000..0588679 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Disabled.c4d/DefCore.txt @@ -0,0 +1,6 @@ +[DefCore] +id=SDSD +Name=SymbolDisabled +Version=4,9,5 +Category=C4D_StaticBack +Picture=0,0,64,64 diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Disabled.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Disabled.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..2aa33ab --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Disabled.c4d/Graphics.png diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Disabled.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Disabled.c4d/Names.txt new file mode 100644 index 0000000..e99acf9 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Disabled.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Deaktiviert +US:Disabled |
