private void LoadConfiguration() { #if DEBUG ConsoleController.ShowMessage("On load en"); #endif if (EnhancementBlockController.Instance.PMI == null) { return; } foreach (var blockinfo in EnhancementBlockController.Instance.PMI.Blocks) { if (blockinfo.Guid == BB.Guid) { XDataHolder bd = blockinfo.Data; try { BlockDataLoadEvent(bd); } catch { }; LoadConfiguration(bd); //foreach (MapperType item in myMapperTypes) //{ // string str = string.Concat(MapperType.XDATA_PREFIX + item.Key); // XData xDatum = bd.Read(str); // if (xDatum != null || !StatMaster.isPaste) // { // item.DeSerialize((xDatum ?? item.defaultData)); // } //} break; } } }
public override void OnLoad(XDataHolder data) { base.OnLoad(data); Script.DeSerialize(data.Read("bmt-" + Script.Key)); CheckScript(Script.Value); var newPio = data.ReadAll().Where(x => x.Key.StartsWith("bmt-pio")).Select(x => { var key = new MExtKey(x.Key.Substring(4), x.Key.Substring(4), KeyCode.None, BlockBehaviour, true); key.DeSerialize(x); if (!long.TryParse(key.Key.Replace("pio", ""), out long id)) { return(null); } return(new KeyValuePair <long, MExtKey>?(new KeyValuePair <long, MExtKey>(id, key))); }).Where(x => x != null).ToDictionary(x => x.Value.Key, x => x.Value.Value); // merge into old pio because we don't want to replace MExtKey every time BlockBehaviour.KeyList.Clear(); foreach (var kp in newPio) { if (PIO.ContainsKey(kp.Key)) { PIO[kp.Key].CopyFrom(kp.Value); BlockBehaviour.KeyList.Add(PIO[kp.Key]); } else { PIO[kp.Key] = kp.Value; BlockBehaviour.KeyList.Add(kp.Value); } } }
private void LoadConfiguration() { if (Controller.Instance.MI == null) { return; } foreach (var blockinfo in Controller.Instance.MI.Blocks) { if (blockinfo.Guid == BB.Guid) { XDataHolder bd = blockinfo.BlockData; try { BlockDataLoadEvent(bd); } catch { }; LoadConfiguration(bd); foreach (MapperType item in myMapperTypes) { string str = string.Concat(MapperType.XDATA_PREFIX + item.Key); XData xDatum = bd.Read(str); if (xDatum != null || !StatMaster.isPaste) { item.DeSerialize((xDatum == null ? item.defaultData : xDatum)); } } break; } } }
public override void LoadConfiguration(XDataHolder BlockData) { if (BlockData.HasKey("bmt-" + "CameraTarget")) { SaveTargetToDict(BlockData.ReadInt("bmt-" + "CameraTarget")); } }
public override void OnLoad(XDataHolder stream) { LoadMapperValues(stream); // "bmt-" prefix is necessary to enable copying&pasting of actions, keys that don't have it are deleted upon copying // String can be empty when it shouldn't be because of a bug in Undosystem, so ignore that. if (stream.HasKey("bmt-automatron-actions") && stream.ReadString("bmt-automatron-actions") != "") { // Clear actions so they don't get duplicated if OnLoad is called by the UndoSystem actions.Clear(); DeserializeActions(stream.ReadString("bmt-automatron-actions")); } // Since earlier versions of the Automatron didn't use the prefix, also check for the presence of the key without // in order to preserve backwards-compatibility else if (stream.HasKey("automatron-actions") && stream.ReadString("automatron-actions") != "") { // Clear actions so they don't get duplicated if OnLoad is called by the UndoSystem actions.Clear(); DeserializeActions(stream.ReadString("automatron-actions")); } else { Debug.Log("OnLoad called without action data."); } }
public override void SaveConfiguration(XDataHolder BlockData) { if (Machine.Active().GetComponent <TargetScript>().previousTargetDic.ContainsKey(selfIndex)) { BlockData.Write("bmt-" + "CameraTarget", Machine.Active().GetComponent <TargetScript>().previousTargetDic[selfIndex]); } }
private void SaveConfiguration(MachineInfo Mi) { BesiegeConsoleController.ShowMessage("On save en"); BesiegeConsoleController.ShowMessage((Mi == null).ToString()); if (Mi == null) { return; } foreach (var blockinfo in Mi.Blocks) { if (blockinfo.Guid == BB.Guid) { XDataHolder bd = blockinfo.BlockData; try { BlockDataSaveEvent(bd); } catch { } SaveConfiguration(bd); bool flag = (!StatMaster.SavingXML ? false : OptionsMaster.BesiegeConfig.ExcludeDefaultSaveData); foreach (MapperType item in myMapperTypes) { if (!flag) { bd.Write(item.Serialize()); } } break; } } }
public void AfterEdit(MapperType mapper) { // We cannot use undo system for PIOs, because they are dymanic // trying to save them will result in exception on 'undo' while // getting mapper type inside OnEditField if (mapper is MCustom <string> ) { BlockMapper.OnEditField(BlockBehaviour, mapper); } else { Player localPlayer = Player.GetLocalPlayer(); if (localPlayer == null || localPlayer.IsHost) { return; } var tempdata = new XDataHolder(); BlockBehaviour.OnSave(tempdata); tempdata.Encode(out byte[] dataBytes); var message = ModContext.CpuInfoMessage.CreateMessage( this.BlockBehaviour, dataBytes ); ModNetworking.SendToHost(message); } }
private void SaveConfiguration(PlayerMachineInfo pmi) { #if DEBUG ConsoleController.ShowMessage("On save en"); #endif if (pmi == null) { return; } foreach (var blockinfo in pmi.Blocks) { if (blockinfo.Guid == BB.Guid) { XDataHolder bd = blockinfo.Data; try { BlockDataSaveEvent(bd); } catch { } SaveConfiguration(bd); //bool flag = (!StatMaster.SavingXML ? false : OptionsMaster.BesiegeConfig.ExcludeDefaultSaveData); //foreach (MapperType item in myMapperTypes) //{ // if (!flag) // { // bd.Write(item.Serialize()); // } //} break; } } }
public override void Apply(XDataHolder input) { if (input.HasKey("BlockID")) { var blockType = input.ReadInt("BlockID"); AddPiece.Instance?.SetBlockType((BlockType)blockType); } }
public override void OnLoad(XDataHolder data) { LoadMapperValues(data); if (data.WasSimulationStarted) { return; } }
public override void Apply(XDataHolder input) { AddPiece.PlacementOffset.position = input.ReadVector3("Position"); AddPiece.PlacementOffset.rotation = Quaternion.Euler( input.ReadVector3("Rotation") ); }
public void AfterEdit_ServerRecv(byte[] data) { var xholder = new XDataHolder(); xholder.Decode(data, 0); BlockBehaviour.OnLoad(xholder, CopyMode.All); //BlockBehaviour.ParentMachine.UndoSystem.EditBlockField(BlockBehaviour.Guid, xdata, xdata); }
public override void OnSave(XDataHolder data) { SpawnChild(); SaveMapperValues(data); if (blockToSpawn != null) { blockToSpawn.OnSave(data); } }
public override void OnSave(XDataHolder data) { base.OnSave(data); data.Write(Script.Serialize()); foreach (var key in PIO.Values) { data.Write(key.Serialize()); } }
public override void Apply(XDataHolder input) { input.Write(_defaultInput); foreach (var uiContainer in _containers) { if (_defaultInput.HasKey(uiContainer.Title)) { uiContainer.Display = _defaultInput.ReadBool(uiContainer.Title); } } }
public override void OnLoad(XDataHolder data) { LoadMapperValues(data); if (blockToSpawn == null && !FunnyMode.IsActive) { SpawnChild(); } if (blockToSpawn != null && !StatMaster.isSimulating) { blockToSpawn.gameObject.SetActive(true); blockToSpawn.OnLoad(data); blockToSpawn.gameObject.SetActive(false); } }
public PluginData( string name, Plugin plugin, XDataHolder input, UIContainer container, ValueInfo valueInfo ) { Name = name; Plugin = plugin; Input = input; UIContainer = container; ValueInfo = valueInfo; }
protected override void OnSimulateFixedUpdate() { if (countdown > 0) { countdown -= Time.fixedDeltaTime; } if (Key1.IsDown && countdown <= 0) { GameObject Nlock; if (FunnyMode.IsActive) { Nlock = (GameObject)Instantiate(funEnumerator.Current.Value.gameObject, this.transform.position + this.transform.forward, this.transform.rotation); if (!funEnumerator.MoveNext()) { funEnumerator = PrefabMaster.BlockPrefabs.GetEnumerator(); funEnumerator.MoveNext(); } } else { if (blockToSpawn == null) { SpawnChild(); } Nlock = (GameObject)Instantiate(blockToSpawn.gameObject, this.transform.position + this.transform.forward, this.transform.rotation); Nlock.SetActive(true); XDataHolder xDataHolder = new XDataHolder { WasSimulationStarted = true }; blockToSpawn.OnSave(xDataHolder); Nlock.GetComponent <BlockBehaviour>().OnLoad(xDataHolder); } Nlock.transform.localScale *= 生成大小.Value; Nlock.GetComponent <Rigidbody>().isKinematic = false; if (继承速度.IsActive) { Nlock.GetComponent <Rigidbody>().velocity = this.rigidbody.velocity; } Nlock.transform.SetParent(Machine.Active().SimulationMachine); Audio.volume = 0.05f * 10 / Vector3.Distance(this.transform.position, Camera.main.transform.position); Audio.Play(); countdown = 生成间隔.Value; } }
public void UpdateDataAndUI(Plugin plugin, XDataHolder holder) { for (int i = 0; i < _plugins.Count; i++) { if (_plugins[i].Plugin != plugin) { continue; } holder.Write(_plugins[i].Input); var uiObjects = GetObjects( plugin, _plugins[i].Input, _plugins[i].ValueInfo ); _plugins[i].UIContainer.UIObjects = uiObjects; } }
public override void Trigger(AutomatronBlock automatron) { try { valueID = int.Parse(blockID); } catch { valueID = 0; } for (int i = 0; i < 9; i++) { try { fValues[i / 3][i % 3] = float.Parse(sValues[i]); } catch { fValues[i / 3][i % 3] = 0; } } if (valueID == 0) { fValues[(int)value.pos][(int)dim.z] += 0.5f; } GameObject Nlock; if (blockToSpawn == null) { SpawnChild(); } Nlock = (GameObject)GameObject.Instantiate(blockToSpawn.gameObject); var st = Nlock.transform; var at = automatron.transform; st.parent = at; st.localPosition = fValues[(int)value.pos]; st.localRotation = Quaternion.Euler(fValues[(int)value.rot]); st.localScale = fValues[(int)value.scale]; Nlock.SetActive(true); XDataHolder xDataHolder = new XDataHolder { WasSimulationStarted = true }; blockToSpawn.OnSave(xDataHolder); Nlock.GetComponent <BlockBehaviour>().OnLoad(xDataHolder); Nlock.GetComponent <Rigidbody>().isKinematic = false; Nlock.transform.SetParent(Machine.Active().SimulationMachine); }
/// <summary> /// 加载配置 /// </summary> public virtual void LoadConfiguration(XDataHolder BlockData) { }
protected override void OnSimulateFixedUpdate() { if (countdown > 0) { countdown -= Time.fixedDeltaTime; } if (Key1.IsDown && countdown <= 0) { GameObject Nlock; if (FunnyMode.IsActive) { Nlock = (GameObject)Instantiate(funEnumerator.Current.Value.gameObject, this.transform.position + this.transform.forward, this.transform.rotation); if (!funEnumerator.MoveNext()) { funEnumerator = PrefabMaster.BlockPrefabs.GetEnumerator(); funEnumerator.MoveNext(); } } else { if (blockToSpawn == null) { SpawnChild(); } Nlock = (GameObject)Instantiate(blockToSpawn.gameObject, transform.position + this.transform.forward, this.transform.rotation); Nlock.SetActive(true); XDataHolder xDataHolder = new XDataHolder { WasSimulationStarted = true }; blockToSpawn.OnSave(xDataHolder); Nlock.GetComponent<BlockBehaviour>().OnLoad(xDataHolder); } Nlock.transform.localScale *= 生成大小.Value; Nlock.GetComponent<Rigidbody>().isKinematic = false; if (继承速度.IsActive) { Nlock.GetComponent<Rigidbody>().velocity = this.rigidbody.velocity; } Nlock.transform.SetParent(Machine.Active().SimulationMachine); Audio.volume = 0.05f * 10 / Vector3.Distance(this.transform.position, Camera.main.transform.position); Audio.Play(); countdown = 生成间隔.Value; } }
/// <summary> /// Apply the input for the UI /// </summary> /// <param name="input"> /// The input in the format specified by <see cref="DefaultInput"/> /// </param> public abstract void Apply(XDataHolder input);
public override void OnLoad(XDataHolder data) { LoadMapperValues(data); if (data.WasSimulationStarted) return; }
public override void OnLoad(XDataHolder stream) { base.OnLoad(stream); LoadMapperValues(stream); }
public override void OnSave(XDataHolder stream) { base.OnSave(stream); SaveMapperValues(stream); }
public override void OnSave(XDataHolder data) { SaveMapperValues(data); }
public override void OnSave(XDataHolder data) { SaveMapperValues(data); }
public override void Apply(XDataHolder input) { var buildingBlocks = Machine.Active()?.BuildingBlocks; var machine = Machine.Active().transform; if (buildingBlocks == null) { return; } var position = input.ReadVector3("Position"); var rotation = Quaternion.Euler(input.ReadVector3("Rotation")); var scale = input.ReadVector3("Scale"); var translator = new GameObject().transform; translator.position = machine.TransformPoint(position); translator.rotation = machine.rotation * rotation; translator.localScale = machine.TransformVector(scale); Vector3 Translate(Vector3 pos) { return(machine.InverseTransformPoint( translator.TransformPoint( pos ) )); } foreach (var block in buildingBlocks) { var dragged = block as GenericDraggedBlock; Vector3 start = Vector3.zero, end = Vector3.zero; if (dragged) { start = dragged.startPoint.position; end = dragged.endPoint.position; start = Translate(start); end = Translate(end); } var transform = block.transform; block.SetPosition(Translate(transform.position)); block.SetRotation(rotation * transform.rotation); block.SetScale( transform.InverseTransformVector( Vector3.Scale( transform.TransformVector( transform.localScale ), scale ) ) ); if (dragged) { var parentEuler = dragged.ParentMachine .boundingBoxController .transform .eulerAngles; dragged.SetPositionsGlobal( start, dragged.startPoint.eulerAngles - parentEuler, end, dragged.startPoint.eulerAngles - parentEuler, true ); } } }
public static Configuration FormatXDataToConfig(Configuration config = null) { XDataHolder xDataHolder = Modding.Configuration.GetData(); bool reWrite = true; bool needWrite = false; if (config == null) { reWrite = false; needWrite = true; config = new Configuration(); } for (int i = 0; i < Propertises.Count; i++) { var value = Propertises[i]; if (value is Propertise <int> ) { value = getValue(value as Propertise <int>); } else if (value is Propertise <bool> ) { value = getValue(value as Propertise <bool>); } else if (value is Propertise <float> ) { value = getValue(value as Propertise <float>); } else if (value is Propertise <string> ) { value = getValue(value as Propertise <string>); } else if (value is Propertise <Vector3> ) { value = getValue(value as Propertise <Vector3>); } Propertises[i] = value; } if (needWrite) { Modding.Configuration.Save(); } return(config); Propertise <T> getValue <T>(Propertise <T> propertise) { var key = propertise.Key; var defaultValue = propertise.Value; if (xDataHolder.HasKey(key) && !reWrite) { defaultValue = (T)Convert.ChangeType(typeSpecialAction[typeof(T)](xDataHolder, key), typeof(T)); } else { xDataHolder.Write(key, defaultValue); needWrite = true; } return(new Propertise <T>(key, defaultValue)); } }
private UIObject[] GetObjects( Plugin plugin, XDataHolder input, ValueInfo valueInfo ) { ///Create UI elements for each input var uiObjects = new List <UIObject>(); foreach (var data in input.ReadAll()) { switch (data.Type) { case "Single": uiObjects.Add(new UIObject(data.Key)); uiObjects.Add( new UIObject( data.RawValue, null, (single) => { input.Write(data.Key, (float)single); valueInfo.ValueChanged = true; }, true ) ); break; case "Integer": uiObjects.Add(new UIObject(data.Key)); uiObjects.Add( new UIObject( (float)(int)data.RawValue, null, (single) => { input.Write(data.Key, (int)(float)single); valueInfo.ValueChanged = true; }, true ) ); break; case "Vector3": void Put(object single, int i) { var v3 = input.ReadVector3(data.Key); v3[i] = (float)single; input.Write(data.Key, v3); valueInfo.ValueChanged = true; } uiObjects.Add(new UIObject(data.Key)); uiObjects.Add( new UIObject( ((Vector3)data.RawValue).x, null, f => Put(f, 0) ) ); uiObjects.Add( new UIObject( ((Vector3)data.RawValue).y, null, f => Put(f, 1) ) ); uiObjects.Add( new UIObject( ((Vector3)data.RawValue).z, null, f => Put(f, 2), true ) ); break; case "Boolean": uiObjects.Add(new UIObject(data.Key)); uiObjects.Add( new UIObject( data.RawValue, null, (boolean) => { input.Write(data.Key, (bool)boolean); valueInfo.ValueChanged = true; }, true ) ); break; } } if (uiObjects.Count > 0) { var lastObj = uiObjects[uiObjects.Count - 1]; lastObj.NewLine = true; uiObjects[uiObjects.Count - 1] = lastObj; } ///Create global UI elements ApplyRule applyRule = (ApplyRule)((int)plugin.ApplyRule % (int)ApplyRule.NoEnable); if (applyRule == ApplyRule.OnApply) { uiObjects.Add( new UIObject( null, "Apply", (b) => { valueInfo.WasApplied |= b is bool?(bool)b: false; } ) ); } if ((plugin.ApplyRule & ApplyRule.NoEnable) == ApplyRule.Disabled) { uiObjects.Add( new UIObject( "Enabled:" ) ); uiObjects.Add( new UIObject( plugin.Enabled, null, (b) => { plugin.Enabled = b is bool ?(bool)b : plugin.Enabled; valueInfo.ValueChanged = true; valueInfo.WasApplied = true; }, true ) ); } return(uiObjects.ToArray()); }
public override void Apply(XDataHolder input) { _scale = input.ReadVector3("Scale"); }
public override void OnLoad(XDataHolder data) { LoadMapperValues(data); if (blockToSpawn == null && !FunnyMode.IsActive) { SpawnChild(); } if (blockToSpawn != null && !StatMaster.isSimulating) { blockToSpawn.gameObject.SetActive(true); blockToSpawn.OnLoad(data); blockToSpawn.gameObject.SetActive(false); } }
public override void OnSave(XDataHolder data) { SpawnChild(); SaveMapperValues(data); if (blockToSpawn != null) { blockToSpawn.OnSave(data); } }