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; } }
public void UpdateEvent(SmartEvent ev, int id) { if (ev.Id == id) { return; } SmartGenericJsonData raw = smartDataManager.GetRawData(SmartType.SmartEvent, id); SetParameterObjects(ev, raw, true); }
public void UpdateSource(SmartSource smartSource, int id) { if (smartSource.Id == id) { return; } SmartGenericJsonData raw = smartDataManager.GetRawData(SmartType.SmartSource, id); SetParameterObjects(smartSource, raw, true); }
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); }
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); }
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); }
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); }
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); }
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); }
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(); } }
private bool IsSmartValidForCore(SmartGenericJsonData data) { return(data.Tags == null || data.Tags.Contains(coreVersion.Current.Tag)); }
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))); }