public MySqlSmartScriptLine(ISmartScriptLine line) { EntryOrGuid = line.EntryOrGuid; ScriptSourceType = line.ScriptSourceType; Id = line.Id; Link = line.Link; EventType = line.EventType; EventPhaseMask = line.EventPhaseMask; EventChance = line.EventChance; EventFlags = line.EventFlags; EventParam1 = line.EventParam1; EventParam2 = line.EventParam2; EventParam3 = line.EventParam3; EventParam4 = line.EventParam4; EventCooldownMin = line.EventCooldownMin; EventCooldownMax = line.EventCooldownMax; ActionType = line.ActionType; ActionParam1 = line.ActionParam1; ActionParam2 = line.ActionParam2; ActionParam3 = line.ActionParam3; ActionParam4 = line.ActionParam4; ActionParam5 = line.ActionParam5; ActionParam6 = line.ActionParam6; TargetType = line.TargetType; TargetParam1 = line.TargetParam1; TargetParam2 = line.TargetParam2; TargetParam3 = line.TargetParam3; TargetX = line.TargetX; TargetY = line.TargetY; TargetZ = line.TargetZ; TargetO = line.TargetO; Comment = line.Comment; }
public static long GetActionParam(this ISmartScriptLine line, int i) { switch (i) { case 0: return(line.ActionParam1); case 1: return(line.ActionParam2); case 2: return(line.ActionParam3); case 3: return(line.ActionParam4); case 4: return(line.ActionParam5); case 5: return(line.ActionParam6); } throw new IndexOutOfRangeException(); }
private int GetActionParameter(ISmartScriptLine line, int i) { // ugly but DB is in such form switch (i) { case 0: return(line.ActionParam1); case 1: return(line.ActionParam2); case 2: return(line.ActionParam3); case 3: return(line.ActionParam4); case 4: return(line.ActionParam5); case 5: return(line.ActionParam6); } throw new ArgumentException("Action parameter out of range"); }
private object GenerateSingleSai(IMultiQuery query, ISmartScriptLine line) { IRawText entryOrGuid = query.Raw("@ENTRY"); if (line.EntryOrGuid != script.EntryOrGuid) { if (line.EntryOrGuid / 100 == script.EntryOrGuid) { string plus = ""; if (line.EntryOrGuid % 100 != 0) { plus = " + " + (line.EntryOrGuid % 100); } entryOrGuid = query.Raw("@ENTRY * 100" + plus); } else { entryOrGuid = query.Raw(line.EntryOrGuid.ToString()); } } return(new { entryorguid = entryOrGuid, source_type = (int)line.ScriptSourceType, id = line.Id, link = line.Link, event_type = line.EventType, event_phase_mask = line.EventPhaseMask, event_chance = line.EventChance, event_flags = line.EventFlags, event_param1 = line.EventParam1, event_param2 = line.EventParam2, event_param3 = line.EventParam3, event_param4 = line.EventParam4, action_type = line.ActionType, action_param1 = line.ActionParam1, action_param2 = line.ActionParam2, action_param3 = line.ActionParam3, action_param4 = line.ActionParam4, action_param5 = line.ActionParam5, action_param6 = line.ActionParam6, target_type = line.TargetType, target_param1 = line.TargetParam1, target_param2 = line.TargetParam2, target_param3 = line.TargetParam3, target_x = line.TargetX, target_y = line.TargetY, target_z = line.TargetZ, target_o = line.TargetO, comment = line.Comment }); }
private SmartAction SafeActionFactory(ISmartScriptLine line) { try { return(smartFactory.ActionFactory(line)); } catch (Exception e) { System.Windows.MessageBox.Show($"Action {line.ActionType} unknown, skipping action"); } return(null); }
private SmartEvent SafeEventFactory(ISmartScriptLine line) { try { return(smartFactory.EventFactory(line)); } catch (Exception e) { System.Windows.MessageBox.Show($"Event {line.EventType} unknown, skipping action"); } return(null); }
private string GenerateSingleSai(ISmartScriptLine line) { //if (action.Id == 188) // ACTION DEBUG MESSAGE // comment = action.Comment; object data = new { entryorguid = "@ENTRY", source_type = ((int)_script.SourceType).ToString(), id = line.Id.ToString(), linkto = line.Link.ToString(), event_id = line.EventType.ToString(), phasemask = line.EventPhaseMask.ToString(), chance = line.EventChance.ToString(), flags = line.EventFlags.ToString(), event_param1 = line.EventParam1.ToString(), event_param2 = line.EventParam2.ToString(), event_param3 = line.EventParam3.ToString(), event_param4 = line.EventParam4.ToString(), event_cooldown_min = line.EventCooldownMin.ToString(), event_cooldown_max = line.EventCooldownMax.ToString(), action_id = line.ActionType.ToString(), action_param1 = line.ActionParam1.ToString(), action_param2 = line.ActionParam2.ToString(), action_param3 = line.ActionParam3.ToString(), action_param4 = line.ActionParam4.ToString(), action_param5 = line.ActionParam5.ToString(), action_param6 = line.ActionParam6.ToString(), action_source_id = line.SourceType.ToString(), source_param1 = line.SourceParam1.ToString(), source_param2 = line.SourceParam2.ToString(), source_param3 = line.SourceParam3.ToString(), source_condition_id = line.SourceConditionId.ToString(), target_id = line.TargetType.ToString(), target_param1 = line.TargetParam1.ToString(), target_param2 = line.TargetParam2.ToString(), target_param3 = line.TargetParam3.ToString(), target_condition_id = line.TargetConditionId.ToString(), x = line.TargetX.ToString(CultureInfo.InvariantCulture), y = line.TargetY.ToString(CultureInfo.InvariantCulture), z = line.TargetZ.ToString(CultureInfo.InvariantCulture), o = line.TargetO.ToString(CultureInfo.InvariantCulture), comment = line.Comment }; return(SmartFormat.Smart.Format(SAI_SQL, data)); }
private SmartSource SourceFactory(ISmartScriptLine line) { SmartSource source = SourceFactory(line.SourceType); source.Condition.SetValue(line.SourceConditionId); for (int i = 0; i < SmartSource.SmartSourceParametersCount; ++i) { source.SetParameter(i, GetSourceParameter(line, i)); } return(source); }
private SmartSource SourceFactory(ISmartScriptLine line) { SmartSource source = SourceFactory(line.SourceType); source.Condition.Value = line.SourceConditionId; for (var i = 0; i < SmartSource.SmartSourceParametersCount; ++i) { source.GetParameter(i).Value = line.GetSourceParam(i); } return(source); }
public static string ToSqlString(this ISmartScriptLine line) { object data = new { entryorguid = line.EntryOrGuid.ToString(), source_type = line.SourceType.ToString(), id = line.Id.ToString(), linkto = line.Link.ToString(), event_id = line.EventType.ToString(), phasemask = line.EventPhaseMask.ToString(), chance = line.EventChance.ToString(), flags = line.EventFlags.ToString(), event_param1 = line.EventParam1.ToString(), event_param2 = line.EventParam2.ToString(), event_param3 = line.EventParam3.ToString(), event_param4 = line.EventParam4.ToString(), event_cooldown_min = line.EventCooldownMin.ToString(), event_cooldown_max = line.EventCooldownMax.ToString(), action_id = line.ActionType.ToString(), action_param1 = line.ActionParam1.ToString(), action_param2 = line.ActionParam2.ToString(), action_param3 = line.ActionParam3.ToString(), action_param4 = line.ActionParam4.ToString(), action_param5 = line.ActionParam5.ToString(), action_param6 = line.ActionParam6.ToString(), action_source_id = line.SourceType.ToString(), source_param1 = line.SourceParam1.ToString(), source_param2 = line.SourceParam2.ToString(), source_param3 = line.SourceParam3.ToString(), source_condition_id = line.SourceConditionId.ToString(), target_id = line.TargetType.ToString(), target_param1 = line.TargetParam1.ToString(), target_param2 = line.TargetParam2.ToString(), target_param3 = line.TargetParam3.ToString(), target_condition_id = line.TargetConditionId.ToString(), x = line.TargetX.ToString(CultureInfo.InvariantCulture), y = line.TargetY.ToString(CultureInfo.InvariantCulture), z = line.TargetZ.ToString(CultureInfo.InvariantCulture), o = line.TargetO.ToString(CultureInfo.InvariantCulture), comment = line.Comment }; return(SmartFormat.Smart.Format(SAI_SQL, data)); }
public SmartAction ActionFactory(ISmartScriptLine line) { SmartSource source = SourceFactory(line); SmartTarget target = TargetFactory(line); SmartAction action = ActionFactory(line.ActionType, source, target); for (int i = 0; i < SmartAction.SmartActionParametersCount; ++i) { action.SetParameter(i, GetActionParameter(line, i)); } return(action); }
public static long GetTargetParam(this ISmartScriptLine line, int i) { switch (i) { case 0: return(line.TargetParam1); case 1: return(line.TargetParam2); case 2: return(line.TargetParam3); } throw new IndexOutOfRangeException(); }
private int GetTargetParameter(ISmartScriptLine line, int i) { // ugly but DB is in such form switch (i) { case 0: return(line.TargetParam1); case 1: return(line.TargetParam2); case 2: return(line.TargetParam3); } throw new ArgumentException("Target parameter out of range"); }
public SmartEvent EventFactory(ISmartScriptLine line) { SmartEvent ev = EventFactory(line.EventType); ev.Chance.SetValue(line.EventChance); ev.Phases.SetValue(line.EventPhaseMask); ev.Flags.SetValue(line.EventFlags); ev.CooldownMin.SetValue(line.EventCooldownMin); ev.CooldownMax.SetValue(line.EventCooldownMax); for (int i = 0; i < SmartEvent.SmartEventParamsCount; ++i) { ev.SetParameter(i, GetEventParameter(line, i)); } return(ev); }
public SmartEvent EventFactory(ISmartScriptLine line) { SmartEvent ev = EventFactory(line.EventType); ev.Chance.Value = line.EventChance; ev.Phases.Value = line.EventPhaseMask; ev.Flags.Value = line.EventFlags; ev.CooldownMin.Value = line.EventCooldownMin; ev.CooldownMax.Value = line.EventCooldownMax; for (var i = 0; i < SmartEvent.SmartEventParamsCount; ++i) { ev.GetParameter(i).Value = line.GetEventParam(i); } return(ev); }
public SmartTarget TargetFactory(ISmartScriptLine line) { SmartTarget target = TargetFactory(line.TargetType); target.X = line.TargetX; target.Y = line.TargetY; target.Z = line.TargetZ; target.O = line.TargetO; target.Condition.Value = (line.TargetConditionId); for (var i = 0; i < SmartSource.SmartSourceParametersCount; ++i) { target.GetParameter(i).Value = line.GetTargetParam(i); } return(target); }
public SmartTarget TargetFactory(ISmartScriptLine line) { SmartTarget target = TargetFactory(line.TargetType); target.X = line.TargetX; target.Y = line.TargetY; target.Z = line.TargetZ; target.O = line.TargetO; target.Condition.SetValue(line.TargetConditionId); for (int i = 0; i < SmartTarget.SmartSourceParametersCount; ++i) { target.SetParameter(i, GetTargetParameter(line, i)); } return(target); }
private bool TryParseGlobalVariable(SmartScript script, ISmartScriptLine line) { if (line.EventType != SmartConstants.EventAiInitialize) { return(false); } if (line.ActionType != SmartConstants.ActionNone) { return(false); } if (!line.Comment.StartsWith("#define")) { return(false); } Match match = Regex.Match(line.Comment, @"#define ([A-Za-z]+) (\d+) (.*?)(?: -- (.*?))?$", RegexOptions.IgnoreCase); if (!match.Success) { return(false); } if (!Enum.TryParse(typeof(GlobalVariableType), match.Groups[1].Value, out var enm) || enm == null) { return(false); } if (!long.TryParse(match.Groups[2].Value, out var key)) { return(false); } var variable = new GlobalVariable() { Name = match.Groups[3].Value, Comment = match.Groups.Count == 5 ? match.Groups[4].Value : null, Key = key, VariableType = (GlobalVariableType)enm }; script.GlobalVariables.Add(variable); return(true); }
public static int GetEventParam(this ISmartScriptLine line, int i) { switch (i) { case 0: return(line.EventParam1); case 1: return(line.EventParam2); case 2: return(line.EventParam3); case 3: return(line.EventParam4); } throw new IndexOutOfRangeException(); }
public static bool TryToISmartScriptLine(this string str, out ISmartScriptLine line) { line = new AbstractSmartScriptLine(); Match m = SAI_LINE_REGEX.Match(str); if (!m.Success || m.Groups.Count != 28) { return(false); } line.EntryOrGuid = int.Parse(m.Groups[1].ToString()); line.ScriptSourceType = int.Parse(m.Groups[2].ToString()); line.Id = int.Parse(m.Groups[3].ToString()); line.Link = int.Parse(m.Groups[4].ToString()); line.EventType = int.Parse(m.Groups[5].ToString()); line.EventPhaseMask = int.Parse(m.Groups[6].ToString()); line.EventChance = int.Parse(m.Groups[7].ToString()); line.EventFlags = int.Parse(m.Groups[8].ToString()); line.EventParam1 = int.Parse(m.Groups[9].ToString()); line.EventParam2 = int.Parse(m.Groups[10].ToString()); line.EventParam3 = int.Parse(m.Groups[11].ToString()); line.EventParam4 = int.Parse(m.Groups[12].ToString()); line.ActionType = int.Parse(m.Groups[13].ToString()); line.ActionParam1 = int.Parse(m.Groups[14].ToString()); line.ActionParam2 = int.Parse(m.Groups[15].ToString()); line.ActionParam3 = int.Parse(m.Groups[16].ToString()); line.ActionParam4 = int.Parse(m.Groups[17].ToString()); line.ActionParam5 = int.Parse(m.Groups[18].ToString()); line.ActionParam6 = int.Parse(m.Groups[19].ToString()); line.TargetType = int.Parse(m.Groups[20].ToString()); line.TargetParam1 = int.Parse(m.Groups[21].ToString()); line.TargetParam2 = int.Parse(m.Groups[22].ToString()); line.TargetParam3 = int.Parse(m.Groups[23].ToString()); line.TargetX = float.Parse(m.Groups[24].ToString(), CultureInfo.InvariantCulture); line.TargetY = float.Parse(m.Groups[25].ToString(), CultureInfo.InvariantCulture); line.TargetZ = float.Parse(m.Groups[26].ToString(), CultureInfo.InvariantCulture); line.TargetO = float.Parse(m.Groups[27].ToString(), CultureInfo.InvariantCulture); line.Comment = m.Groups[28].ToString(); return(true); }
public SmartAction ActionFactory(ISmartScriptLine line) { SmartSource source = SourceFactory(line); SmartTarget target = TargetFactory(line); var raw = smartDataManager.GetRawData(SmartType.SmartAction, line.ActionType); if (raw.ImplicitSource != null) { UpdateSource(source, smartDataManager.GetDataByName(SmartType.SmartSource, raw.ImplicitSource).Id); } SmartAction action = ActionFactory(line.ActionType, source, target); for (var i = 0; i < SmartAction.SmartActionParametersCount; ++i) { action.GetParameter(i).Value = line.GetActionParam(i); } return(action); }
public SmartAction ActionFactory(ISmartScriptLine line) { SmartSource source = SourceFactory(line); SmartTarget target = TargetFactory(line); var raw = smartDataManager.GetRawData(SmartType.SmartAction, line.ActionType); if (raw.ImplicitSource != null) { UpdateSource(source, smartDataManager.GetDataByName(SmartType.SmartSource, raw.ImplicitSource).Id); } SmartAction action = ActionFactory(line.ActionType, source, target); for (var i = 0; i < SmartAction.SmartActionParametersCount; ++i) { action.GetParameter(i).Value = line.GetActionParam(i); } if (raw.SourceStoreInAction) { try { UpdateSource(source, smartDataManager.GetRawData(SmartType.SmartSource, (int)action.GetParameter(2).Value).Id); source.GetParameter(0).Value = action.GetParameter(3).Value; source.GetParameter(1).Value = action.GetParameter(4).Value; source.GetParameter(2).Value = action.GetParameter(5).Value; action.GetParameter(2).Value = 0; action.GetParameter(3).Value = 0; action.GetParameter(4).Value = 0; action.GetParameter(5).Value = 0; } catch (Exception) { } } return(action); }
private object GenerateSingleSai(IMultiQuery query, ISmartScriptLine line) { return(new { entryorguid = query.Variable("ENTRY"), source_type = (int)script.SourceType, id = line.Id, link = line.Link, event_type = line.EventType, event_phase_mask = line.EventPhaseMask, event_chance = line.EventChance, event_flags = line.EventFlags, event_param1 = line.EventParam1, event_param2 = line.EventParam2, event_param3 = line.EventParam3, event_param4 = line.EventParam4, action_type = line.ActionType, action_param1 = line.ActionParam1, action_param2 = line.ActionParam2, action_param3 = line.ActionParam3, action_param4 = line.ActionParam4, action_param5 = line.ActionParam5, action_param6 = line.ActionParam6, target_type = line.TargetType, target_param1 = line.TargetParam1, target_param2 = line.TargetParam2, target_param3 = line.TargetParam3, target_x = line.TargetX, target_y = line.TargetY, target_z = line.TargetZ, target_o = line.TargetO, comment = line.Comment }); }
protected override ISolutionItem GenerateSolutionItem(ISmartScriptLine line) { return(new SmartScriptSolutionItem(line.EntryOrGuid, (SmartScriptType)line.ScriptSourceType)); }
protected abstract ISolutionItem GenerateSolutionItem(ISmartScriptLine line);