Exemple #1
0
        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);
     }
 }
Exemple #3
0
 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);
     }
 }
Exemple #4
0
        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();
        }
Exemple #5
0
        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;
        }
Exemple #6
0
        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();
                }
            }
        }
Exemple #7
0
        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);
            }
        }