Exemplo n.º 1
0
        private void SetParameterObjects(SmartBaseElement element, SmartGenericJsonData data, bool update = false)
        {
            if (data.DescriptionRules != null)
            {
                element.DescriptionRules = new List <DescriptionRule>();
                foreach (SmartDescriptionRulesJsonData rule in data.DescriptionRules)
                {
                    element.DescriptionRules.Add(new DescriptionRule(rule));
                }
            }
            else
            {
                element.DescriptionRules = null;
            }

            element.Id           = data.Id;
            element.ReadableHint = data.Description;

            for (var i = 0; i < element.ParametersCount; ++i)
            {
                element.GetParameter(i).Name   = "Parameter " + (i + 1) + " (unused)";
                element.GetParameter(i).IsUsed = false;
            }

            if (data.Parameters == null)
            {
                return;
            }

            for (var i = 0; i < data.Parameters.Count; ++i)
            {
                string key = data.Parameters[i].Type;
                if (data.Parameters[i].Values != null)
                {
                    key = $"{data.Name}_{i}";
                    if (!parameterFactory.IsRegisteredLong(key))
                    {
                        parameterFactory.Register(key, data.Parameters[i].Type == "FlagParameter" ? new FlagParameter()
                        {
                            Items = data.Parameters[i].Values
                        } : new Parameter()
                        {
                            Items = data.Parameters[i].Values
                        });
                    }
                }

                IParameter <long> parameter = parameterFactory.Factory(key);
                element.GetParameter(i).Name = data.Parameters[i].Name;
                if (!update)
                {
                    element.GetParameter(i).Value = data.Parameters[i].DefaultVal;
                }
                element.GetParameter(i).Parameter = parameter;
                element.GetParameter(i).IsUsed    = true;
            }
        }
Exemplo n.º 2
0
        public void UpdateEvent(SmartEvent ev, int id)
        {
            if (ev.Id == id)
            {
                return;
            }

            SmartGenericJsonData raw = smartDataManager.GetRawData(SmartType.SmartEvent, id);

            SetParameterObjects(ev, raw, true);
        }
Exemplo n.º 3
0
        public void UpdateSource(SmartSource smartSource, int id)
        {
            if (smartSource.Id == id)
            {
                return;
            }

            SmartGenericJsonData raw = smartDataManager.GetRawData(SmartType.SmartSource, id);

            SetParameterObjects(smartSource, raw, true);
        }
Exemplo n.º 4
0
        public void UpdateTarget(SmartTarget smartTarget, int id)
        {
            if (smartTarget.Id == id)
            {
                return;
            }

            SmartGenericJsonData raw = smartDataManager.GetRawData(SmartType.SmartTarget, id);

            SetParameterObjects(smartTarget, raw, true);
        }
        private void Add(SmartType type, SmartGenericJsonData data)
        {
            if (type == SmartType.SmartSource)
            {
                ActualAdd(SmartType.SmartTarget, data);
            }
            else if (type == SmartType.SmartTarget && !data.IsOnlyTarget)
            {
                ActualAdd(SmartType.SmartSource, data);
            }

            ActualAdd(type, data);
        }
Exemplo n.º 6
0
        public void UpdateAction(SmartAction smartAction, int id)
        {
            if (smartAction.Id == id)
            {
                return;
            }

            SmartGenericJsonData raw = smartDataManager.GetRawData(SmartType.SmartAction, id);

            smartAction.CommentParameter.IsUsed = raw.CommentField != null;
            smartAction.CommentParameter.Name   = raw.CommentField ?? "Comment";
            SetParameterObjects(smartAction, raw, true);
            UpdateTargetPositionVisibility(smartAction.Target);
        }
Exemplo n.º 7
0
        public SmartEvent EventFactory(int id)
        {
            if (!smartDataManager.Contains(SmartType.SmartEvent, id))
            {
                throw new InvalidSmartEventException(id);
            }

            SmartEvent ev = new(id);

            ev.Chance.Value = 100;
            SmartGenericJsonData raw = smartDataManager.GetRawData(SmartType.SmartEvent, id);

            SetParameterObjects(ev, raw);
            return(ev);
        }
Exemplo n.º 8
0
        public void UpdateAction(SmartAction smartAction, int id)
        {
            if (smartAction.Id == id)
            {
                return;
            }

            SmartGenericJsonData raw = smartDataManager.GetRawData(SmartType.SmartAction, id);

            smartAction.CommentParameter.IsUsed = id == SmartConstants.ActionComment;
            foreach (var t in smartAction.Target.Position)
            {
                t.IsUsed = raw.UsesTargetPosition;
            }
            SetParameterObjects(smartAction, raw, true);
        }
Exemplo n.º 9
0
        public void UpdateSource(SmartSource smartSource, int id)
        {
            if (smartSource.Id == id)
            {
                return;
            }

            SmartGenericJsonData raw = smartDataManager.GetRawData(SmartType.SmartSource, id);

            if (raw.ReplaceWithId.HasValue)
            {
                UpdateSource(smartSource, raw.ReplaceWithId.Value);
                return;
            }

            SetParameterObjects(smartSource, raw, true);
        }
Exemplo n.º 10
0
        public void UpdateTarget(SmartTarget smartTarget, int id)
        {
            if (smartTarget.Id == id)
            {
                return;
            }

            SmartGenericJsonData raw = smartDataManager.GetRawData(SmartType.SmartTarget, id);

            if (raw.ReplaceWithId.HasValue)
            {
                UpdateTarget(smartTarget, raw.ReplaceWithId.Value);
                return;
            }

            SetParameterObjects(smartTarget, raw, true);
            UpdateTargetPositionVisibility(smartTarget);
        }
Exemplo n.º 11
0
        private void SetParameterObjects(SmartBaseElement element, SmartGenericJsonData data)
        {
            element.ReadableHint = data.Description;
            if (data.Parameters == null)
            {
                return;
            }

            for (int i = 0; i < data.Parameters.Count; ++i)
            {
                var parameter = _parameterFactory.Factory(data.Parameters[i].Type, data.Parameters[i].Name, data.Parameters[i].DefaultVal);
                parameter.Description = data.Parameters[i].Description;
                if (data.Parameters[i].Values != null)
                {
                    parameter.Items = data.Parameters[i].Values;
                }
                element.SetParameterObject(i, parameter);
            }
        }
        private void ActualAdd(SmartType type, SmartGenericJsonData data)
        {
            if (!_smartIdData.ContainsKey(type))
            {
                _smartIdData[type]   = new Dictionary <int, SmartGenericJsonData>();
                _smartNameData[type] = new Dictionary <string, SmartGenericJsonData>();
            }

            if (!_smartIdData[type].ContainsKey(data.Id))
            {
                if (data.ValidTypes != null && data.ValidTypes.Contains(0))
                {
                    data.ValidTypes.Add(SmartScriptType.Creature);
                }
                _smartIdData[type].Add(data.Id, data);
                _smartNameData[type].Add(data.Name, data);
            }
            else
            {
                throw new SmartDataWithSuchIdExists();
            }
        }
Exemplo n.º 13
0
 private bool IsSmartValidForCore(SmartGenericJsonData data)
 {
     return(data.Tags == null || data.Tags.Contains(coreVersion.Current.Tag));
 }
Exemplo n.º 14
0
 private bool IsSmartValidForCore(SmartGenericJsonData data)
 {
     return(data.Tags == null || data.Tags.Contains(coreVersion.Current.Tag) || (coreVersion.Current.SmartScriptFeatures.ForceLoadTag != null && data.Tags.Contains(coreVersion.Current.SmartScriptFeatures.ForceLoadTag)));
 }