Пример #1
0
        private static uint ImportBehavior(BehaviorXml details, AccessDatabase database)
        {
            var behaviorTable = database["BehaviorTemplate"];

            var entry = behaviorTable.Create();

            var behavior = new BehaviorTemplateTable(entry);

            behavior.effectID = (int)details.Effect;

            behavior.templateID = (int)details.Type;

            foreach (var detailsParameter in details.Parameters)
            {
                var parameterTable = database["BehaviorParameter"];

                var parameterEntry = parameterTable.Create(behavior.behaviorID);

                var parameter = new BehaviorParameterTable(parameterEntry);

                parameter.parameterID = detailsParameter.Name;

                if (detailsParameter.Behavior)
                {
                    parameter.value = detailsParameter.Next == null ? 0 : ImportBehavior(detailsParameter.Next, database);
                }
                else
                {
                    parameter.value = detailsParameter.Value;
                }
            }

            return((uint)behavior.behaviorID);
        }
Пример #2
0
        public T GetParameter <T>(AccessDatabase database, string name) where T : struct
        {
            var table = database["BehaviorParameter"];

            foreach (var column in table.SeekMultiple((int)Id))
            {
                var entry = new BehaviorParameterTable(column);

                if (entry.parameterID == name)
                {
                    return((T)Convert.ChangeType(entry.value, typeof(T)));
                }
            }

            return(default);