Skip to content

Commit

Permalink
[SmartScript] Add support for QuestScripts
Browse files Browse the repository at this point in the history
  • Loading branch information
BAndysc committed Mar 8, 2021
1 parent 6af92cc commit edfe6bf
Show file tree
Hide file tree
Showing 9 changed files with 39 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ public SmartScript Script
set => SetProperty(ref script, value);
}

public SmartScriptEditorViewModel(IHistoryManager history,
public SmartScriptEditorViewModel(SmartScriptSolutionItem item,
IHistoryManager history,
IDatabaseProvider database,
IEventAggregator eventAggregator,
ISmartDataManager smartDataManager,
Expand Down Expand Up @@ -717,6 +718,8 @@ public SmartScript Script
args.Sql = new SmartScriptExporter(script, smartFactory, smartDataManager).GetSql();
}
}));

SetSolutionItem(item);
}

public string Name => itemNameRegistry.GetName(item);
Expand Down Expand Up @@ -807,7 +810,7 @@ public string Title
public ICommand Save => SaveCommand;
public AsyncAwaitBestPractices.MVVM.IAsyncCommand CloseCommand { get; set; }

internal void SetSolutionItem(SmartScriptSolutionItem item)
private void SetSolutionItem(SmartScriptSolutionItem item)
{
Debug.Assert(this.item == null);
this.item = item;
Expand Down
4 changes: 2 additions & 2 deletions WDE.SmartScriptEditor/Exporter/SmartScriptExporter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,8 @@ private void BuildUpdate()
sql.AppendLine("UPDATE gameobject_template SET AIName=\"SmartGameObjectAI\" WHERE entry=@ENTRY;");
break;
case SmartScriptType.Quest:
sql.AppendLine("DELETE FROM quest_scripts WHERE questId = @ENTRY;");
sql.AppendLine("INSERT INTO quest_scripts(questId, ScriptName) VALUES(@ENTRY, \"SmartQuest\");");
sql.AppendLine("INSERT IGNORE INTO quest_template_addon (ID) VALUES (@ENTRY);");
sql.AppendLine("UPDATE quest_template_addon SET ScriptName=\"SmartQuest\" WHERE ID=@ENTRY;");
break;
case SmartScriptType.Spell:
sql.AppendLine("DELETE FROM spell_script_names WHERE spell_id = @ENTRY And ScriptName=\"SmartSpell\";");
Expand Down
3 changes: 1 addition & 2 deletions WDE.SmartScriptEditor/Providers/SmartScriptEditorProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@ public SmartScriptEditorProvider(ISolutionItemNameRegistry solutionItemNameRegis

public IDocument GetEditor(SmartScriptSolutionItem item)
{
SmartScriptEditorViewModel vm = containerProvider.Resolve<SmartScriptEditorViewModel>();
vm.SetSolutionItem(item);
SmartScriptEditorViewModel vm = containerProvider.Resolve<SmartScriptEditorViewModel>((typeof(SmartScriptSolutionItem), item));

return vm;
}
Expand Down
16 changes: 11 additions & 5 deletions WDE.SmartScriptEditor/SmartData/events.json
Original file line number Diff line number Diff line change
Expand Up @@ -1861,16 +1861,22 @@
"Quest"
],
"name": "SMART_EVENT_QUEST_ACCEPTED",
"description": "When player accepted quest",
"description": "On quest accepted",
"name_readable": "On quest accept"
},
{
"id": 48,
"valid_types": [
"Quest"
],
"parameters": [
{
"type": "Parameter",
"name": "Objective id"
}
],
"name": "SMART_EVENT_QUEST_OBJ_COPLETETION",
"description": "When player completed objective",
"description": "On quest objective {pram1} completed",
"name_readable": "On quest objective completion"
},
{
Expand All @@ -1879,7 +1885,7 @@
"Quest"
],
"name": "SMART_EVENT_QUEST_COMPLETION",
"description": "When player completed quest",
"description": "On quest completed",
"name_readable": "On quest complete"
},
{
Expand All @@ -1888,7 +1894,7 @@
"Quest"
],
"name": "SMART_EVENT_QUEST_REWARDED",
"description": "When player rewarded quest",
"description": "On quest rewarded",
"name_readable": "On quest reward"
},
{
Expand All @@ -1897,7 +1903,7 @@
"Quest"
],
"name": "SMART_EVENT_QUEST_FAIL",
"description": "When player failed quest",
"description": "On quest failed",
"name_readable": "On quest fail"
},
{
Expand Down
1 change: 1 addition & 0 deletions WDE.Trinity/TrinityMasterVersion.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public class TrinityMasterVersion : ICoreVersion, IDatabaseFeatures, ISmartScrip
{
SmartScriptType.Creature,
SmartScriptType.GameObject,
SmartScriptType.Quest,
SmartScriptType.AreaTrigger,
SmartScriptType.TimedActionList,
SmartScriptType.AreaTriggerEntity,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,16 @@ await model.GameObjectTemplate.Where(p => p.Entry == (uint)entryOrGuid)
.Set(p => p.ScriptName, "")
.UpdateAsync();
break;
case SmartScriptType.Quest:
var addonExists = await model.QuestTemplateAddon.Where(p => p.Entry == (uint)entryOrGuid).AnyAsync();
if (!addonExists)
await model.QuestTemplateAddon.InsertAsync(() => new MySqlQuestTemplateAddon()
{Entry = (uint)entryOrGuid});
await model.QuestTemplateAddonWithScriptName
.Where(p => p.Entry == (uint) entryOrGuid)
.Set(p => p.ScriptName, "SmartQuest")
.UpdateAsync();
break;
case SmartScriptType.AreaTrigger:
await model.AreaTriggerScript.Where(p => p.Id == entryOrGuid).DeleteAsync();
await model.AreaTriggerScript.InsertAsync(() => new MySqlAreaTriggerScript(){Id = entryOrGuid, ScriptName = "SmartTrigger"});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,11 @@ public class MySqlQuestTemplateAddon
[Column(Name = "ExclusiveGroup")]
public int ExclusiveGroup { get; set; }
}

[Table(Name = "quest_template_addon")]
public class MySqlQuestTemplateAddonWithScriptName : MySqlQuestTemplateAddon
{
[Column(Name = "ScriptName")]
public string ScriptName { get; set; } = "";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public TrinityDatabase() : base("Trinity")
public ITable<MySqlGameObjectTemplate> GameObjectTemplate => GetTable<MySqlGameObjectTemplate>();
public ITable<MySqlQuestTemplate> QuestTemplate => GetTable<MySqlQuestTemplate>();
public ITable<MySqlQuestTemplateAddon> QuestTemplateAddon => GetTable<MySqlQuestTemplateAddon>();
public ITable<MySqlQuestTemplateAddonWithScriptName> QuestTemplateAddonWithScriptName => GetTable<MySqlQuestTemplateAddonWithScriptName>();
public ITable<MySqlAreaTriggerTemplate> AreaTriggerTemplate => GetTable<MySqlAreaTriggerTemplate>();
public ITable<MySqlGameEvent> GameEvents => GetTable<MySqlGameEvent>();
public ITable<MySqlConversationTemplate> ConversationTemplate => GetTable<MySqlConversationTemplate>();
Expand Down
1 change: 1 addition & 0 deletions WoWDatabaseEditorCore.Avalonia/Views/DialogWindow.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
ShowInTaskbar="False"
CanResize="{Binding Resizeable}"
utils:ViewBind.Model="{Binding}"
Title="{Binding Title}"
Name="ThisWindow"
prism:ViewModelLocator.AutoWireViewModel="False">
<controls:ExtendedWindow.KeyBindings>
Expand Down

0 comments on commit edfe6bf

Please sign in to comment.