Пример #1
0
        protected TLeafElement ReadLeaf(ExcelWorksheet sheet, int row, string parentKeyPath)
        {
            string leafName = sheet.Cells[row, Configuration.DataNameColumn].Value?.ToString().Trim();

            if (string.IsNullOrEmpty(leafName))
            {
                return(null);
            }
            TLeafElement leaf = new TLeafElement()
            {
                Name        = leafName,
                Description = sheet.Cells[row, Configuration.DataDescriptionColumn].Value?.ToString().Trim(),
                Guid        = GuidHelper.Create(Configuration.Guid_CompatibilityMode ? GuidHelper.LegacyGuids.DnsNamespace : LeafTypeGuid, (UseParentKeyInLeafGuid ? parentKeyPath + "++" : "") + leafName, false).ToString(),
                BaseType    = sheet.Cells[row, Configuration.BaseTypeColumn].Value?.ToString().Trim(),
                Type        = sheet.Cells[row, Configuration.DataTypeColumn].Value?.ToString().Trim().ToLower(),
            };

            ReadLeafProperties(leaf, sheet, row);
            try
            {
                if (leaf.BaseType is null && !string.IsNullOrEmpty(leaf.Type))
                {
                    DataTypeManager.SetDataType(leaf.Type, leaf);
                    SetLengthAndDecimals(sheet, row, leaf);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error parsing Data Type for row " + row);
                HandleException(sheet.Name, ex);
            }
            return(leaf);
        }
Пример #2
0
Файл: Class1.cs Проект: wpmyj/c3
        public override void OnAdd(IStation station)
        {
            //throw new NotImplementedException();
            Station st  = (Station)station;
            string  xml = CommuniPortConfigSerializer.Serialize(st.CommuniPortConfig);
            int     id  = DBI.Instance.InsertStation(st.Name, xml, st.Ordinal, st.Street, st.Remark);

            st.Guid = GuidHelper.Create((uint)id);
        }
Пример #3
0
Файл: Class1.cs Проект: wpmyj/c3
        /// <summary>
        ///
        /// </summary>
        /// <param name="row"></param>
        public StationSource(DataRow row)
        {
            if (row == null)
            {
                throw new ArgumentNullException("row");
            }

            this.DataRow = row;
            this.Guid    = GuidHelper.Create((UInt32)(int)row["StationID"]);
        }
Пример #4
0
Файл: Class1.cs Проект: wpmyj/c3
        public override IDeviceSource[] OnGetDeviceSources()
        {
            var s = new TDeviceSource();

            s.Address        = 123;
            s.DevcieTypeName = "Tdevice";
            s.Guid           = GuidHelper.Create(01);
            s.StationGuid    = GuidHelper.Create(11);

            return(new IDeviceSource[] { s });
        }
Пример #5
0
        public void t()
        {
            UInt32 //min = 0,
                max = UInt32.MaxValue;

            max = 1;

            Guid id = GuidHelper.Create(max);

            //Console.WriteLine();
            Assert.AreEqual(GuidHelper.ConvertToUInt32(id), max);
        }
Пример #6
0
Файл: TSpu.cs Проект: wpmyj/c3
        protected override IStationSource[] OnGetStationSources()
        {
            TStationSource s = new TStationSource();

            s.Guid = GuidHelper.Create(11);
            TStationSource s2 = new TStationSource();

            s2.Guid = GuidHelper.Create(12);
            TStationSource[] ss = new TStationSource[] {
                s, s2
            };
            return(ss);
        }
Пример #7
0
Файл: Class1.cs Проект: wpmyj/c3
        protected override void OnAdd(IDevice device)
        {
            Xd202 d = (Xd202)device;

            string s = string.Format(
                "insert into tblDevice(DeviceAddress, deviceType, stationID, DeviceName) values({0}, '{1}', {2}, '{3}')",
                d.Address,
                d.DeviceType.Type.Name,
                GuidHelper.ConvertToInt32(d.Station.Guid),
                d.Name
                );

            DBI.Instance.ExecuteScalar(s);
            d.Guid = GuidHelper.Create(GetMaxDeviceID(DBI.Instance));
        }
        private static void ItemDefinitionCopyBuilder(ItemDefinition sourceItemDefinition, string name, string weaponType, List <string> weaponTags)
        {
            Guid           newGuid             = GuidHelper.Create(ModGuidNamespace, name);
            ItemDefinition builtItemDefinition = ScriptableObject.CreateInstance <ItemDefinition>();

            Traverse.Create(builtItemDefinition).Field("name").SetValue(name);
            WeaponDescription sourceWeaponDescription = (WeaponDescription)Traverse.Create(sourceItemDefinition).Field("weaponDefinition").GetValue();

            Traverse.Create(sourceWeaponDescription).Field("weaponType").SetValue(weaponType);
            Traverse.Create(sourceWeaponDescription).Field("weaponTags").SetValue(weaponTags);

            builtItemDefinition.name = name;
            Traverse.Create(builtItemDefinition).Field("inDungeonEditor").SetValue(sourceItemDefinition.InDungeonEditor);
            Traverse.Create(builtItemDefinition).Field("merchantCategory").SetValue(sourceItemDefinition.MerchantCategory);
            Traverse.Create(builtItemDefinition).Field("weight").SetValue(sourceItemDefinition.Weight);
            Traverse.Create(builtItemDefinition).Field("slotTypes").SetValue(sourceItemDefinition.SlotTypes);
            Traverse.Create(builtItemDefinition).Field("slotsWhereActive").SetValue(sourceItemDefinition.SlotsWhereActive);
            Traverse.Create(builtItemDefinition).Field("forceEquipSlot").SetValue(sourceItemDefinition.ForceEquipSlot);
            Traverse.Create(builtItemDefinition).Field("stackSize").SetValue(sourceItemDefinition.StackSize);
            Traverse.Create(builtItemDefinition).Field("defaultStackCount").SetValue(sourceItemDefinition.DefaultStackCount);
            Traverse.Create(builtItemDefinition).Field("costs").SetValue(sourceItemDefinition.Costs);
            Traverse.Create(builtItemDefinition).Field("itemTags").SetValue(sourceItemDefinition.ItemTags);
            Traverse.Create(builtItemDefinition).Field("activeTags").SetValue(sourceItemDefinition.ActiveTags);
            Traverse.Create(builtItemDefinition).Field("inactiveTags").SetValue(sourceItemDefinition.InactiveTags);
            Traverse.Create(builtItemDefinition).Field("requiredAttunementClasses").SetValue(sourceItemDefinition.RequiredAttunementClasses);
            Traverse.Create(builtItemDefinition).Field("staticProperties").SetValue(sourceItemDefinition.StaticProperties);
            Traverse.Create(builtItemDefinition).Field("armorDefinition").SetValue(sourceItemDefinition.ArmorDescription);
            Traverse.Create(builtItemDefinition).Field("isWeapon").SetValue(sourceItemDefinition.IsWeapon);
            Traverse.Create(builtItemDefinition).Field("ammunitionDefinition").SetValue(sourceItemDefinition.AmmunitionDescription);
            Traverse.Create(builtItemDefinition).Field("usableDeviceDescription").SetValue(sourceItemDefinition.UsableDeviceDescription);
            Traverse.Create(builtItemDefinition).Field("toolDefinition").SetValue(sourceItemDefinition.ToolDescription);
            Traverse.Create(builtItemDefinition).Field("starterPackDefinition").SetValue(sourceItemDefinition.StarterPackDescription);
            Traverse.Create(builtItemDefinition).Field("containerItemDefinition").SetValue(sourceItemDefinition.ContainerItemDescription);
            Traverse.Create(builtItemDefinition).Field("lightSourceItemDefinition").SetValue(sourceItemDefinition.LightSourceItemDescription);
            Traverse.Create(builtItemDefinition).Field("focusItemDefinition").SetValue(sourceItemDefinition.FocusItemDescription);
            Traverse.Create(builtItemDefinition).Field("wealthPileDefinition").SetValue(sourceItemDefinition.WealthPileDescription);
            Traverse.Create(builtItemDefinition).Field("spellbookDefinition").SetValue(sourceItemDefinition.SpellbookDescription);
            Traverse.Create(builtItemDefinition).Field("documentDescription").SetValue(sourceItemDefinition.DocumentDescription);
            Traverse.Create(builtItemDefinition).Field("foodDescription").SetValue(sourceItemDefinition.FoodDescription);
            Traverse.Create(builtItemDefinition).Field("factionRelicDescription").SetValue(sourceItemDefinition.FactionRelicDescription);
            Traverse.Create(builtItemDefinition).Field("personalityFlagOccurences").SetValue(sourceItemDefinition.PersonalityFlagOccurences);
            Traverse.Create(builtItemDefinition).Field("soundEffectDescriptionOverride").SetValue(sourceItemDefinition.SoundEffectDescription);
            Traverse.Create(builtItemDefinition).Field("soundEffectOnHitDescriptionOverride").SetValue(sourceItemDefinition.SoundEffectOnHitDescription);
            Traverse.Create(builtItemDefinition).Field("itemPresentation").SetValue(sourceItemDefinition.ItemPresentation);
            Traverse.Create(builtItemDefinition).Field("guiPresentation").SetValue(sourceItemDefinition.GuiPresentation);
            Traverse.Create(builtItemDefinition).Field("guid").SetValue(newGuid.ToString());
            DatabaseRepository.GetDatabase <ItemDefinition>().Add(builtItemDefinition);
        }
Пример #9
0
Файл: Class1.cs Проект: wpmyj/c3
        protected override void OnAdd(IDevice device)
        {
            HDDevice d = (HDDevice)device;

            string s = @"insert into tblDevice(DeviceAddress, deviceType, stationID, DeviceName) 
                values(@DeviceAddress, @DeviceType, @StationID, @DeviceName)";

            ListDictionary list = new ListDictionary();

            list.Add("DeviceAddress", d.Address);
            list.Add("DeviceType", d.DeviceType.Type.Name);
            list.Add("StationID", GuidHelper.ConvertToInt32(d.Station.Guid));
            list.Add("DeviceName", d.Name);

            DBI.Instance.ExecuteScalar(s, list);
            d.Guid = GuidHelper.Create(GetMaxDeviceID(DBI.Instance));
        }
Пример #10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="device"></param>
        protected override void OnAdd(IDevice device)
        {
            string s = @"insert into tblDevice(DeviceAddress, DeviceName, deviceType, deviceExtend, DeviceRemark, stationID) 
                values(@DeviceAddress, @DeviceName, @DeviceType, @DeviceExtend, @DeviceRemark, @StationID)";

            ListDictionary list = new ListDictionary();

            list.Add("DeviceAddress", device.Address);
            list.Add("DeviceName", device.Name);
            list.Add("DeviceType", device.DeviceType.Type.Name);
            list.Add("DeviceExtend", device.GetStringParameters());
            list.Add("DeviceRemark", device.Remark);
            list.Add("StationID", GuidHelper.ConvertToInt32(device.Station.Guid));

            _dbi.ExecuteScalar(s, list);

            object obj = GetMaxDeviceID(_dbi);

            device.Guid = GuidHelper.Create(Convert.ToInt32(obj));
        }
        private static void WeaponTypeDefinitionCopyBuilder(WeaponTypeDefinition sourceWeaponTypeDefinition, string name, string weaponCategory)
        {
            Guid newGuid = GuidHelper.Create(ModGuidNamespace, name);
            WeaponTypeDefinition builtWeaponTypeDefinition = ScriptableObject.CreateInstance <WeaponTypeDefinition>();

            Traverse.Create(builtWeaponTypeDefinition).Field("weaponCategory").SetValue(weaponCategory);
            Traverse.Create(builtWeaponTypeDefinition).Field("name").SetValue(name);
            builtWeaponTypeDefinition.name = name;
            Traverse.Create(builtWeaponTypeDefinition).Field("isAttachedToBone").SetValue(sourceWeaponTypeDefinition.IsAttachedToBone);
            Traverse.Create(builtWeaponTypeDefinition).Field("animationTag").SetValue(sourceWeaponTypeDefinition.AnimationTag);
            Traverse.Create(builtWeaponTypeDefinition).Field("soundEffectDescription").SetValue(sourceWeaponTypeDefinition.SoundEffectDescription);
            Traverse.Create(builtWeaponTypeDefinition).Field("soundEffectOnHitDescription").SetValue(sourceWeaponTypeDefinition.SoundEffectOnHitDescription);
            Traverse.Create(builtWeaponTypeDefinition).Field("MeleeAttackerParticle").SetValue(sourceWeaponTypeDefinition.MeleeAttackerParticle);
            Traverse.Create(builtWeaponTypeDefinition).Field("MeleeImpactParticle").SetValue(sourceWeaponTypeDefinition.MeleeImpactParticle);
            Traverse.Create(builtWeaponTypeDefinition).Field("ThrowAttackerParticle").SetValue(sourceWeaponTypeDefinition.ThrowAttackerParticle);
            Traverse.Create(builtWeaponTypeDefinition).Field("ThrowImpactParticle").SetValue(sourceWeaponTypeDefinition.ThrowImpactParticle);
            Traverse.Create(builtWeaponTypeDefinition).Field("guiPresentation").SetValue(sourceWeaponTypeDefinition.GuiPresentation);
            Traverse.Create(builtWeaponTypeDefinition).Field("guid").SetValue(newGuid.ToString());
            DatabaseRepository.GetDatabase <WeaponTypeDefinition>().Add(builtWeaponTypeDefinition);
        }
Пример #12
0
        protected override void ProcessFile(ExcelWorksheet sheet, GroupStructure group)
        {
            Groups[group.Name] = group;

            int    row         = Configuration.DataStartRow;
            int    atts        = 0;
            string subtypeName = sheet.Cells[row, Configuration.DataNameColumn].Value?.ToString().Trim();

            while (!string.IsNullOrEmpty(subtypeName))
            {
                Console.WriteLine($"Processing subtype {subtypeName}");
                try
                {
                    GroupAttribute subtype = new GroupAttribute()
                    {
                        Name        = subtypeName,
                        Description = sheet.Cells[row, Configuration.DataDescriptionColumn].Value?.ToString().Trim(),
                        Guid        = GuidHelper.Create(GuidHelper.ObjClass.Attribute, subtypeName, false).ToString(),
                        Supertype   = sheet.Cells[row, Configuration.SupertypeColumn].Value?.ToString().Trim(),
                    };
                    if (Attributes.TryGetValue(subtypeName, out var other) && subtype.ToString() != other.ToString())
                    {
                        Console.WriteLine($"{subtype.Name} was already defined with a different supertype {other.ToString()}, taking into account the last one {subtype.ToString()}");
                    }
                    Attributes[subtypeName] = subtype;
                    atts++;
                    group.Items.Add(subtype);
                    row++;
                }
                catch (Exception ex) when(HandleException($"at row:{row}", ex, true))
                {
                }
                subtypeName = sheet.Cells[row, Configuration.DataNameColumn].Value?.ToString().Trim();
            }
            if (atts == 0)
            {
                throw new Exception($"Definition without content, check the {nameof(Configuration.DataStartRow)} and {nameof(Configuration.DataStartColumn)} values on the config file");
            }
        }
Пример #13
0
Файл: Class1.cs Проект: wpmyj/c3
        /// <summary>
        ///
        /// </summary>
        /// <param name="stationSource"></param>
        /// <returns></returns>
        protected override IStation OnCreate(IStationSource stationSource)
        {
            StationSource source = stationSource as StationSource;
            DataRow       row    = source.DataRow;

            string stationName = row["StationName"].ToString();
            string xml         = row["StationCPConfig"].ToString().Trim();
            int    stationID   = (int)row["StationID"];
            int    ordinal     = Convert.ToInt32(row["StationOrdinal"]);
            string street      = row["Street"].ToString().Trim();

            Station st = new Station();

            st.Name              = stationName;
            st.Ordinal           = ordinal;
            st.Street            = street;
            st.Guid              = GuidHelper.Create((uint)stationID);
            st.Spu               = this.Spu;
            st.StationSource     = stationSource;
            st.StationType       = this.Spu.StationType;
            st.CommuniPortConfig = CommuniPortConfigSerializer.Deserialize(xml);

            return(st);
        }
Пример #14
0
 public static string NewImageFileName()
 {
     return(GuidHelper.Create() + ".png");
 }
Пример #15
0
        protected override void ProcessFile(ExcelWorksheet sheet, TLevelElement obj)
        {
            Dictionary <int, TLevelElement> levels = new Dictionary <int, TLevelElement>();
            TLevelElement level = obj;

            levels[0]          = level;
            Levels[level.Name] = level;

            int row  = Configuration.DataStartRow;
            int atts = 0;

            while (sheet.Cells[row, Configuration.DataStartColumn].Value != null)
            {
                level = ReadLevel(row, sheet, level, levels, out bool isLevel);
                if (!isLevel)
                {
                    try
                    {
                        TLeafElement leaf = ReadLeaf(sheet, row, level.KeyPath);
                        if (leaf.BaseType != null && leaf.Type != null && !Domains.ContainsKey(leaf.BaseType))
                        {
                            DataTypeElement domain = new DataTypeElement
                            {
                                Name = leaf.BaseType,
                                Guid = GuidHelper.Create(GuidHelper.ObjClass.Domain, leaf.BaseType, false).ToString()
                            };
                            DataTypeManager.SetDataType(leaf.Type, domain);
                            SetLengthAndDecimals(sheet, row, domain);
                            Domains[domain.Name] = domain;
                        }
                        if (leaf != null)
                        {
                            if (Leafs.TryGetValue(leaf.Name, out var other) && leaf.ToString() != other.ToString())
                            {
                                Console.WriteLine($"{leaf.Name} was already defined with a different data type {other.ToString()}, taking into account the last one {leaf.ToString()}");
                            }
                            Leafs[leaf.Name] = leaf;
                            atts++;
                            level.Items.Add(leaf);
                            Console.WriteLine($"Processing Attribute {leaf.Name}");
                            row++;
                        }
                        else
                        {
                            break;
                        }
                    }
                    catch (Exception ex) when(HandleException($"at row:{row}", ex, true))
                    {
                    }
                }
                else
                {
                    ReadLevelProperties(level, sheet, row);
                    row++;
                }
            }
            if (atts == 0)
            {
                throw new Exception($"Definition without content, check the {nameof(Configuration.DataStartRow)} and {nameof(Configuration.DataStartColumn)} values on the config file");
            }
        }
Пример #16
0
        private TLevelElement ReadLevel(int row, ExcelWorksheet sheet, TLevelElement level, Dictionary <int, TLevelElement> levels, out bool isLevel)
        {
            int    id;
            string idValue = sheet.Cells[row, Configuration.LevelIdColumn].Value?.ToString();

            if (idValue is null)
            {
                id = -1;
            }
            else
            {
                try
                {
                    id = int.Parse(sheet.Cells[row, Configuration.LevelIdColumn].Value?.ToString());
                }
                catch (Exception ex)
                {
                    throw new Exception($"Invalid identifier for level at {row}, {Configuration.LevelIdColumn} " + ex.Message, ex);
                }
            }
            isLevel = false;
            if (sheet.Cells[row, Configuration.LevelCheckColumn].Value?.ToString().ToLower().Trim() == Configuration.LevelIdentifierKeyword.ToLower().Trim())             //is a level
            {
                isLevel = true;

                if (id == 0)
                {
                    return(levels[0]);
                }

                int parentId = 0;
                // Read Level Id
                parentId = GetParentLevelId(sheet, row);
                string levelName = sheet.Cells[row, Configuration.DataNameColumn].Value?.ToString();
                if (levelName is null)
                {
                    throw new Exception($"Could not find the Level name at [{row} , {Configuration.DataNameColumn}], please take a look at the configuration file ");
                }
                string levelDesc = sheet.Cells[row, Configuration.DataDescriptionColumn].Value?.ToString();

                TLevelElement parent = levels[parentId];

                TLevelElement newLevel = CreateLevelElement(
                    name: levelName,
                    guid: GuidHelper.Create(Configuration.Guid_CompatibilityMode ? GuidHelper.LegacyGuids.IsoOidNamespace : LevelTypeGuid, (parent.KeyPath is string parentKeyPath ? parentKeyPath + "::" : "") + levelName, false),
                    description: levelDesc,
                    parentKeyPath: parent.KeyPath
                    );
                Debug.Assert(id >= 1);
                levels[id] = newLevel;
                parent.Items.Add(newLevel);
                return(newLevel);
            }
            else
            {
                if (id == 0)
                {
                    throw new Exception($"Invalid identifier for item at {row}, {Configuration.LevelIdColumn}. Only the root level element can have id 0 ");
                }

                if (sheet.Cells[row, Configuration.LevelParentIdColumn].Value != null)                 // Explicit level id
                {
                    int parentLevel = GetParentLevelId(sheet, row);
                    if (parentLevel >= 0 && levels.ContainsKey(parentLevel))
                    {
                        return(levels[parentLevel]);
                    }
                }
                return(level);                //continue in the same level, there is no level at this row, so assume the same.
            }
        }