public override void WriteDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (EditorID != null) { ele.TryPathTo("EditorID", true, out subEle); EditorID.WriteXML(subEle, master); } if (ObjectBounds != null) { ele.TryPathTo("ObjectBounds", true, out subEle); ObjectBounds.WriteXML(subEle, master); } if (Name != null) { ele.TryPathTo("Name", true, out subEle); Name.WriteXML(subEle, master); } if (Model != null) { ele.TryPathTo("Model", true, out subEle); Model.WriteXML(subEle, master); } if (Script != null) { ele.TryPathTo("Script", true, out subEle); Script.WriteXML(subEle, master); } if (Destructable != null) { ele.TryPathTo("Destructable", true, out subEle); Destructable.WriteXML(subEle, master); } if (OpenSound != null) { ele.TryPathTo("OpenSound", true, out subEle); OpenSound.WriteXML(subEle, master); } if (CloseSound != null) { ele.TryPathTo("CloseSound", true, out subEle); CloseSound.WriteXML(subEle, master); } if (LoopingSound != null) { ele.TryPathTo("LoopingSound", true, out subEle); LoopingSound.WriteXML(subEle, master); } if (DoorFlags != null) { ele.TryPathTo("DoorFlags", true, out subEle); DoorFlags.WriteXML(subEle, master); } }
public override void WriteData(ESPWriter writer) { if (EditorID != null) { EditorID.WriteBinary(writer); } if (ObjectBounds != null) { ObjectBounds.WriteBinary(writer); } if (Name != null) { Name.WriteBinary(writer); } if (Model != null) { Model.WriteBinary(writer); } if (Script != null) { Script.WriteBinary(writer); } if (Contents != null) { Contents.Sort(); foreach (var item in Contents) { item.WriteBinary(writer); } } if (Destructable != null) { Destructable.WriteBinary(writer); } if (Data != null) { Data.WriteBinary(writer); } if (OpenSound != null) { OpenSound.WriteBinary(writer); } if (CloseSound != null) { CloseSound.WriteBinary(writer); } if (Random_LoopingSound != null) { Random_LoopingSound.WriteBinary(writer); } }
public override void WriteData(ESPWriter writer) { if (EditorID != null) { EditorID.WriteBinary(writer); } if (ObjectBounds != null) { ObjectBounds.WriteBinary(writer); } if (Name != null) { Name.WriteBinary(writer); } if (Model != null) { Model.WriteBinary(writer); } if (Script != null) { Script.WriteBinary(writer); } if (Destructable != null) { Destructable.WriteBinary(writer); } if (OpenSound != null) { OpenSound.WriteBinary(writer); } if (CloseSound != null) { CloseSound.WriteBinary(writer); } if (LoopingSound != null) { LoopingSound.WriteBinary(writer); } if (DoorFlags != null) { DoorFlags.WriteBinary(writer); } }
public void Toggle() { IsOpen = !IsOpen; if (IsOpen) { if (OpenSound != null) { OpenSound.Play(); } } else { if (CloseSound != null) { CloseSound.Play(); } } if (PauseWhileOpen) { Publish(new PauseStateChanged { IsPaused = IsOpen }); } if (UnlockCursorWhileOpen) { if (IsOpen) { MouseController.FreeCursor(); } else { MouseController.LockCursor(); } } UpdateState(); }
protected virtual void InitInventory(Block block) { if (block?.Attributes != null) { collisionSelectionBoxes = block.Attributes["collisionSelectionBoxes"]?[type]?.AsObject <Cuboidf[]>(); inventoryClassName = block.Attributes["inventoryClassName"].AsString(inventoryClassName); dialogTitleLangCode = block.Attributes["dialogTitleLangCode"][type].AsString(dialogTitleLangCode); quantitySlots = block.Attributes["quantitySlots"][type].AsInt(quantitySlots); quantityColumns = block.Attributes["quantityColumns"][type].AsInt(4); retrieveOnly = block.Attributes["retrieveOnly"][type].AsBool(false); if (block.Attributes["typedOpenSound"][type].Exists) { OpenSound = AssetLocation.Create(block.Attributes["typedOpenSound"][type].AsString(OpenSound.ToShortString()), block.Code.Domain); } if (block.Attributes["typedCloseSound"][type].Exists) { CloseSound = AssetLocation.Create(block.Attributes["typedCloseSound"][type].AsString(CloseSound.ToShortString()), block.Code.Domain); } } inventory = new InventoryGeneric(quantitySlots, null, null, null); inventory.BaseWeight = 1f; inventory.OnGetSuitability = (sourceSlot, targetSlot, isMerge) => (isMerge ? (inventory.BaseWeight + 3) : (inventory.BaseWeight + 1)) + (sourceSlot.Inventory is InventoryBasePlayer ? 1 : 0); inventory.OnGetAutoPullFromSlot = GetAutoPullFromSlot; if (block?.Attributes != null) { if (block.Attributes["spoilSpeedMulByFoodCat"][type].Exists == true) { inventory.PerishableFactorByFoodCategory = block.Attributes["spoilSpeedMulByFoodCat"][type].AsObject <Dictionary <EnumFoodCategory, float> >(); } if (block.Attributes["transitionSpeedMulByType"][type].Exists == true) { inventory.TransitionableSpeedMulByType = block.Attributes["transitionSpeedMulByType"][type].AsObject <Dictionary <EnumTransitionType, float> >(); } } inventory.PutLocked = retrieveOnly; inventory.OnInventoryClosed += OnInvClosed; inventory.OnInventoryOpened += OnInvOpened; }
public override void ReadData(ESPReader reader, long dataEnd) { while (reader.BaseStream.Position < dataEnd) { string subTag = reader.PeekTag(); switch (subTag) { case "EDID": if (EditorID == null) { EditorID = new SimpleSubrecord <String>(); } EditorID.ReadBinary(reader); break; case "OBND": if (ObjectBounds == null) { ObjectBounds = new ObjectBounds(); } ObjectBounds.ReadBinary(reader); break; case "FULL": if (Name == null) { Name = new SimpleSubrecord <String>(); } Name.ReadBinary(reader); break; case "MODL": if (Model == null) { Model = new Model(); } Model.ReadBinary(reader); break; case "SCRI": if (Script == null) { Script = new RecordReference(); } Script.ReadBinary(reader); break; case "DEST": if (Destructable == null) { Destructable = new Destructable(); } Destructable.ReadBinary(reader); break; case "SNAM": if (OpenSound == null) { OpenSound = new RecordReference(); } OpenSound.ReadBinary(reader); break; case "ANAM": if (CloseSound == null) { CloseSound = new RecordReference(); } CloseSound.ReadBinary(reader); break; case "BNAM": if (LoopingSound == null) { LoopingSound = new RecordReference(); } LoopingSound.ReadBinary(reader); break; case "FNAM": if (DoorFlags == null) { DoorFlags = new SimpleSubrecord <DoorFlags>(); } DoorFlags.ReadBinary(reader); break; default: throw new Exception(); } } }
public override void ReadDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("EditorID", false, out subEle)) { if (EditorID == null) { EditorID = new SimpleSubrecord <String>(); } EditorID.ReadXML(subEle, master); } if (ele.TryPathTo("ObjectBounds", false, out subEle)) { if (ObjectBounds == null) { ObjectBounds = new ObjectBounds(); } ObjectBounds.ReadXML(subEle, master); } if (ele.TryPathTo("Name", false, out subEle)) { if (Name == null) { Name = new SimpleSubrecord <String>(); } Name.ReadXML(subEle, master); } if (ele.TryPathTo("Model", false, out subEle)) { if (Model == null) { Model = new Model(); } Model.ReadXML(subEle, master); } if (ele.TryPathTo("Script", false, out subEle)) { if (Script == null) { Script = new RecordReference(); } Script.ReadXML(subEle, master); } if (ele.TryPathTo("Destructable", false, out subEle)) { if (Destructable == null) { Destructable = new Destructable(); } Destructable.ReadXML(subEle, master); } if (ele.TryPathTo("OpenSound", false, out subEle)) { if (OpenSound == null) { OpenSound = new RecordReference(); } OpenSound.ReadXML(subEle, master); } if (ele.TryPathTo("CloseSound", false, out subEle)) { if (CloseSound == null) { CloseSound = new RecordReference(); } CloseSound.ReadXML(subEle, master); } if (ele.TryPathTo("LoopingSound", false, out subEle)) { if (LoopingSound == null) { LoopingSound = new RecordReference(); } LoopingSound.ReadXML(subEle, master); } if (ele.TryPathTo("DoorFlags", false, out subEle)) { if (DoorFlags == null) { DoorFlags = new SimpleSubrecord <DoorFlags>(); } DoorFlags.ReadXML(subEle, master); } }
public override void ReadData(ESPReader reader, long dataEnd) { while (reader.BaseStream.Position < dataEnd) { string subTag = reader.PeekTag(); switch (subTag) { case "EDID": if (EditorID == null) { EditorID = new SimpleSubrecord <String>(); } EditorID.ReadBinary(reader); break; case "OBND": if (ObjectBounds == null) { ObjectBounds = new ObjectBounds(); } ObjectBounds.ReadBinary(reader); break; case "FULL": if (Name == null) { Name = new SimpleSubrecord <String>(); } Name.ReadBinary(reader); break; case "MODL": if (Model == null) { Model = new Model(); } Model.ReadBinary(reader); break; case "SCRI": if (Script == null) { Script = new RecordReference(); } Script.ReadBinary(reader); break; case "CNTO": if (Contents == null) { Contents = new List <InventoryItem>(); } InventoryItem tempCNTO = new InventoryItem(); tempCNTO.ReadBinary(reader); Contents.Add(tempCNTO); break; case "DEST": if (Destructable == null) { Destructable = new Destructable(); } Destructable.ReadBinary(reader); break; case "DATA": if (Data == null) { Data = new ContainerData(); } Data.ReadBinary(reader); break; case "SNAM": if (OpenSound == null) { OpenSound = new RecordReference(); } OpenSound.ReadBinary(reader); break; case "QNAM": if (CloseSound == null) { CloseSound = new RecordReference(); } CloseSound.ReadBinary(reader); break; case "RNAM": if (Random_LoopingSound == null) { Random_LoopingSound = new RecordReference(); } Random_LoopingSound.ReadBinary(reader); break; default: throw new Exception(); } } }
public override void ReadDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("EditorID", false, out subEle)) { if (EditorID == null) { EditorID = new SimpleSubrecord <String>(); } EditorID.ReadXML(subEle, master); } if (ele.TryPathTo("ObjectBounds", false, out subEle)) { if (ObjectBounds == null) { ObjectBounds = new ObjectBounds(); } ObjectBounds.ReadXML(subEle, master); } if (ele.TryPathTo("Name", false, out subEle)) { if (Name == null) { Name = new SimpleSubrecord <String>(); } Name.ReadXML(subEle, master); } if (ele.TryPathTo("Model", false, out subEle)) { if (Model == null) { Model = new Model(); } Model.ReadXML(subEle, master); } if (ele.TryPathTo("Script", false, out subEle)) { if (Script == null) { Script = new RecordReference(); } Script.ReadXML(subEle, master); } if (ele.TryPathTo("Contents", false, out subEle)) { if (Contents == null) { Contents = new List <InventoryItem>(); } foreach (XElement e in subEle.Elements()) { InventoryItem tempCNTO = new InventoryItem(); tempCNTO.ReadXML(e, master); Contents.Add(tempCNTO); } } if (ele.TryPathTo("Destructable", false, out subEle)) { if (Destructable == null) { Destructable = new Destructable(); } Destructable.ReadXML(subEle, master); } if (ele.TryPathTo("Data", false, out subEle)) { if (Data == null) { Data = new ContainerData(); } Data.ReadXML(subEle, master); } if (ele.TryPathTo("OpenSound", false, out subEle)) { if (OpenSound == null) { OpenSound = new RecordReference(); } OpenSound.ReadXML(subEle, master); } if (ele.TryPathTo("CloseSound", false, out subEle)) { if (CloseSound == null) { CloseSound = new RecordReference(); } CloseSound.ReadXML(subEle, master); } if (ele.TryPathTo("Random_LoopingSound", false, out subEle)) { if (Random_LoopingSound == null) { Random_LoopingSound = new RecordReference(); } Random_LoopingSound.ReadXML(subEle, master); } }
public override void WriteDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (EditorID != null) { ele.TryPathTo("EditorID", true, out subEle); EditorID.WriteXML(subEle, master); } if (ObjectBounds != null) { ele.TryPathTo("ObjectBounds", true, out subEle); ObjectBounds.WriteXML(subEle, master); } if (Name != null) { ele.TryPathTo("Name", true, out subEle); Name.WriteXML(subEle, master); } if (Model != null) { ele.TryPathTo("Model", true, out subEle); Model.WriteXML(subEle, master); } if (Script != null) { ele.TryPathTo("Script", true, out subEle); Script.WriteXML(subEle, master); } if (Contents != null) { ele.TryPathTo("Contents", true, out subEle); List <string> xmlNames = new List <string> { "Item" }; int i = 0; Contents.Sort(); foreach (var entry in Contents) { i = i % xmlNames.Count(); XElement newEle = new XElement(xmlNames[i]); entry.WriteXML(newEle, master); subEle.Add(newEle); i++; } } if (Destructable != null) { ele.TryPathTo("Destructable", true, out subEle); Destructable.WriteXML(subEle, master); } if (Data != null) { ele.TryPathTo("Data", true, out subEle); Data.WriteXML(subEle, master); } if (OpenSound != null) { ele.TryPathTo("OpenSound", true, out subEle); OpenSound.WriteXML(subEle, master); } if (CloseSound != null) { ele.TryPathTo("CloseSound", true, out subEle); CloseSound.WriteXML(subEle, master); } if (Random_LoopingSound != null) { ele.TryPathTo("Random_LoopingSound", true, out subEle); Random_LoopingSound.WriteXML(subEle, master); } }