using System.Collections; using System.Collections.Generic; using UnityEngine; public class GlobalOptionChangeCommand : ICommand { // global data private int globalIndex; private List optionIndexes = new(); // private GlobalOption option; // object data private List codeCabTypes = new(); private List keyCodeIndexes = new(); private List beforeValues = new(); private List afterValues = new(); public GlobalOptionChangeCommand(GlobalOption globalOption, int globalIndex, string keyCode) { this.globalIndex = globalIndex; option = globalOption; InitGlobalOption(globalOption, keyCode); } public GlobalOptionChangeCommand(List globalOptions, int globalIndex, List keyCodes) { this.globalIndex = globalIndex; option = globalOptions[0]; for (int i = 0; i < globalOptions.Count; i++) { InitGlobalOption(globalOptions[i], keyCodes[i]); } } public void Execute() { SetGlobalFromValues(afterValues); } public string GetAction() { return $"Global Option {option.ToString()}"; } public void Undo() { SetGlobalFromValues(beforeValues); } public void UpdateCommand() { return; } private void InitGlobalOption(GlobalOption globalOption, string keyCode) { int addedOptionsAmount = InitIndexes(globalOption); for (int i = 0; i < addedOptionsAmount; i++) { int optionsIndex = optionIndexes.Count - addedOptionsAmount + i; beforeValues.Add(UIT.Global(optionIndexes[optionsIndex].ToString(),globalIndex));//, globalIndex));//GlobalSelectionManager.GetValue(optionIndexes[optionsIndex] afterValues.Add(keyCode); } } private void SetGlobalFromValues(List keyCodes) { for (int i = 0; i < optionIndexes.Count; i++) { UIT.GlobalSet(optionIndexes[i].ToString(),keyCodes[i], globalIndex); //GlobalSelectionManager.SetValue(optionIndexes[i], globalIndex, keyCodes[i]); } //RebuildCabs(); } // private void RebuildCabs() // { // bool isRebuildCab = true; // for (int i = 0; i < optionIndexes.Count; i++) // { // switch (codeCabTypes[i]) // { // case CodeCabType.Global: // DOIT.AddtoCodeCabGlobal(keyCodeIndexes[i], GlobalSelectionManager.GetValue(optionIndexes[i], globalIndex), globalIndex); // break; // case CodeCabType.GlobalFiller: // DOIT.AddtoCodeCabGlobalFiller(keyCodeIndexes[i], GlobalSelectionManager.GetValue(optionIndexes[i], globalIndex), globalIndex); // break; // case CodeCabType.OptionsRecipe: // CieblinkAPIHandler.Instance.ApplyToAllCabInGlobal(GlobalSelectionManager.GetValue(optionIndexes[i], globalIndex), globalIndex, keyCodeIndexes[i]); // isRebuildCab = false; // Debug.Log("not rebuilding cabs from global option recipes"); // break; // case CodeCabType.Texture: // TextureCall.TextureSplash(GlobalSelectionManager.GetValue(optionIndexes[i], globalIndex), "GLOBAL" + globalIndex); // isRebuildCab = false; // //Debug.Log("not rebuilding cabs from global option splash"); // break; // default: // Debug.Log("Missing or incorrect code cab type."); // break; // } // } // if (isRebuildCab) // { // DOIT.REDOALLCab_GNum(globalIndex); // } // } private int InitIndexes(GlobalOption globalOptions) { int addedOptionsAmount = optionIndexes.Count; switch (globalOptions) { case GlobalOption.Door: optionIndexes.Add(globalOptions); keyCodeIndexes.Add(61); codeCabTypes.Add(CodeCabType.Global); break; case GlobalOption.Int: optionIndexes.Add(globalOptions); keyCodeIndexes.Add(-1); codeCabTypes.Add(CodeCabType.Global); // TODO : can't click on button Debug.Log($"{GlobalOption.Int} global not implemented"); break; case GlobalOption.Ext: optionIndexes.Add(globalOptions); keyCodeIndexes.Add(69); codeCabTypes.Add(CodeCabType.Global); optionIndexes.Add(globalOptions); keyCodeIndexes.Add(75); codeCabTypes.Add(CodeCabType.Global); optionIndexes.Add(globalOptions); keyCodeIndexes.Add(80); codeCabTypes.Add(CodeCabType.Global); optionIndexes.Add(globalOptions); keyCodeIndexes.Add(82); codeCabTypes.Add(CodeCabType.Global); optionIndexes.Add(globalOptions); keyCodeIndexes.Add(50); codeCabTypes.Add(CodeCabType.GlobalFiller); optionIndexes.Add(globalOptions); keyCodeIndexes.Add(51); codeCabTypes.Add(CodeCabType.GlobalFiller); break; case GlobalOption.Kick: optionIndexes.Add(globalOptions); keyCodeIndexes.Add(63); codeCabTypes.Add(CodeCabType.Global); break; case GlobalOption.Fascia: optionIndexes.Add(globalOptions); keyCodeIndexes.Add(66); codeCabTypes.Add(CodeCabType.Global); break; case GlobalOption.Ogee: optionIndexes.Add(globalOptions); keyCodeIndexes.Add(64); codeCabTypes.Add(CodeCabType.Global); break; case GlobalOption.Valance: optionIndexes.Add(globalOptions); keyCodeIndexes.Add(65); codeCabTypes.Add(CodeCabType.Global); break; case GlobalOption.KnobV: optionIndexes.Add(globalOptions); keyCodeIndexes.Add(85); codeCabTypes.Add(CodeCabType.Global); break; case GlobalOption.Counter: optionIndexes.Add(globalOptions); keyCodeIndexes.Add(41); codeCabTypes.Add(CodeCabType.Global); break; case GlobalOption.Splash: optionIndexes.Add(globalOptions); keyCodeIndexes.Add(54); codeCabTypes.Add(CodeCabType.Texture); // more? 55 and 56? break; case GlobalOption.KnobH: optionIndexes.Add(globalOptions); keyCodeIndexes.Add(86); codeCabTypes.Add(CodeCabType.Global); break; // case GlobalOption.OPTIONSRECIPE_11: // optionIndexes.Add(globalOptions); keyCodeIndexes.Add(98); codeCabTypes.Add(CodeCabType.OptionsRecipe); // break; default: Debug.Log("Missing or incorrect global option."); break; } addedOptionsAmount = optionIndexes.Count - addedOptionsAmount; return addedOptionsAmount; } } enum CodeCabType { Global, GlobalFiller, Texture, OptionsRecipe }