1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00

Updated Nuget packages

Added WoW game state support (AFK/DND, logged out)
Added buff duration/progress
This commit is contained in:
SpoinkyNL 2017-09-12 11:21:09 +02:00
parent 3b28170217
commit dfb1f9f19d
22 changed files with 377 additions and 153 deletions

View File

@ -10,7 +10,7 @@
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
@ -30,7 +30,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="SharpDX" publicKeyToken="b4dcf0f35e5521f1" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.2.0" newVersion="3.0.2.0" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" />
@ -44,6 +44,10 @@
<assemblyIdentity name="DeltaCompressionDotNet.MsDelta" publicKeyToken="46b2138a390abf55" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="SharpCompress" publicKeyToken="afb0a02973931d96" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-0.18.1.0" newVersion="0.18.1.0" />
</dependentAssembly>
</assemblyBinding></runtime>
</configuration>

View File

@ -140,32 +140,23 @@
<Private>True</Private>
</Reference>
<Reference Include="Caliburn.Micro, Version=3.0.3.0, Culture=neutral, PublicKeyToken=8e5891231f2ed21f, processorArchitecture=MSIL">
<HintPath>..\packages\Caliburn.Micro.Core.3.0.3\lib\net45\Caliburn.Micro.dll</HintPath>
<Private>True</Private>
<HintPath>..\packages\Caliburn.Micro.Core.3.1.0\lib\net45\Caliburn.Micro.dll</HintPath>
</Reference>
<Reference Include="Caliburn.Micro.Platform, Version=3.0.3.0, Culture=neutral, PublicKeyToken=8e5891231f2ed21f, processorArchitecture=MSIL">
<HintPath>..\packages\Caliburn.Micro.3.0.3\lib\net45\Caliburn.Micro.Platform.dll</HintPath>
<Private>True</Private>
<HintPath>..\packages\Caliburn.Micro.3.1.0\lib\net45\Caliburn.Micro.Platform.dll</HintPath>
</Reference>
<Reference Include="Caliburn.Micro.Platform.Core, Version=3.0.3.0, Culture=neutral, PublicKeyToken=8e5891231f2ed21f, processorArchitecture=MSIL">
<HintPath>..\packages\Caliburn.Micro.3.0.3\lib\net45\Caliburn.Micro.Platform.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Castle.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<HintPath>..\packages\Castle.Core.4.0.0\lib\net45\Castle.Core.dll</HintPath>
<Private>True</Private>
<HintPath>..\packages\Caliburn.Micro.3.1.0\lib\net45\Caliburn.Micro.Platform.Core.dll</HintPath>
</Reference>
<Reference Include="Corale.Colore, Version=5.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Colore.5.1.0\lib\net35\Corale.Colore.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="CSCore, Version=1.1.6245.30570, Culture=neutral, PublicKeyToken=5a08f2b6f4415dea, processorArchitecture=MSIL">
<HintPath>..\packages\CSCore.1.2.0\lib\net35-client\CSCore.dll</HintPath>
<Private>True</Private>
<Reference Include="CSCore, Version=1.2.1.1, Culture=neutral, PublicKeyToken=5a08f2b6f4415dea, processorArchitecture=MSIL">
<HintPath>..\packages\CSCore.1.2.1.1\lib\net35-client\CSCore.dll</HintPath>
</Reference>
<Reference Include="CUE.NET, Version=1.1.3.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\CUE.NET.1.1.3.0\lib\net45\CUE.NET.dll</HintPath>
<Private>True</Private>
<Reference Include="CUE.NET, Version=1.1.3.1, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\CUE.NET.1.1.3.1\lib\net45\CUE.NET.dll</HintPath>
</Reference>
<Reference Include="DeltaCompressionDotNet, Version=1.1.0.0, Culture=neutral, PublicKeyToken=1d14d6e5194e7f4a, processorArchitecture=MSIL">
<HintPath>..\packages\DeltaCompressionDotNet.1.1.0\lib\net20\DeltaCompressionDotNet.dll</HintPath>
@ -180,8 +171,7 @@
<Private>True</Private>
</Reference>
<Reference Include="DynamicExpresso.Core, Version=1.3.3.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\DynamicExpresso.Core.1.3.3.5\lib\net40\DynamicExpresso.Core.dll</HintPath>
<Private>True</Private>
<HintPath>..\packages\DynamicExpresso.Core.1.3.3.6\lib\net40\DynamicExpresso.Core.dll</HintPath>
</Reference>
<Reference Include="Gma.System.MouseKeyHook, Version=5.4.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MouseKeyHook.5.4.0\lib\net40\Gma.System.MouseKeyHook.dll</HintPath>
@ -197,7 +187,6 @@
</Reference>
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\squirrel.windows.1.4.4\lib\Net45\ICSharpCode.SharpZipLib.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.2.0.8\lib\net45-full\log4net.dll</HintPath>
@ -205,7 +194,6 @@
</Reference>
<Reference Include="MahApps.Metro, Version=1.4.3.0, Culture=neutral, PublicKeyToken=f4fb5a3c4d1e5b4f, processorArchitecture=MSIL">
<HintPath>..\packages\MahApps.Metro.1.4.3\lib\net45\MahApps.Metro.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Mono.Cecil, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
<HintPath>..\packages\Mono.Cecil.0.9.6.4\lib\net45\Mono.Cecil.dll</HintPath>
@ -227,9 +215,8 @@
<HintPath>..\packages\MoonSharp.2.0.0.0\lib\net40-client\MoonSharp.Interpreter.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="Ninject, Version=3.2.0.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7, processorArchitecture=MSIL">
<HintPath>..\packages\Ninject.3.2.2.0\lib\net45-full\Ninject.dll</HintPath>
@ -248,12 +235,10 @@
<Private>True</Private>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.4.4\lib\net45\NLog.dll</HintPath>
<Private>True</Private>
<HintPath>..\packages\NLog.4.4.12\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="NuGet.Squirrel, Version=3.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\squirrel.windows.1.4.4\lib\Net45\NuGet.Squirrel.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="PcapDotNet.Base, Version=1.0.4.25027, Culture=neutral, PublicKeyToken=06a20bc2fabb1931, processorArchitecture=MSIL">
<HintPath>..\packages\Pcap.Net.x64.1.0.4.1\lib\net45\PcapDotNet.Base.dll</HintPath>
@ -271,25 +256,21 @@
<HintPath>..\packages\Process.NET.1.0.8\lib\Process.NET.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="SharpDX, Version=3.1.1.0, Culture=neutral, PublicKeyToken=b4dcf0f35e5521f1, processorArchitecture=MSIL">
<HintPath>..\packages\SharpDX.3.1.1\lib\net45\SharpDX.dll</HintPath>
<Private>True</Private>
<Reference Include="SharpDX, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b4dcf0f35e5521f1, processorArchitecture=MSIL">
<HintPath>..\packages\SharpDX.4.0.1\lib\net45\SharpDX.dll</HintPath>
</Reference>
<Reference Include="SharpDX.Direct3D9, Version=3.1.1.0, Culture=neutral, PublicKeyToken=b4dcf0f35e5521f1, processorArchitecture=MSIL">
<HintPath>..\packages\SharpDX.Direct3D9.3.1.1\lib\net45\SharpDX.Direct3D9.dll</HintPath>
<Private>True</Private>
<Reference Include="SharpDX.Direct3D9, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b4dcf0f35e5521f1, processorArchitecture=MSIL">
<HintPath>..\packages\SharpDX.Direct3D9.4.0.1\lib\net45\SharpDX.Direct3D9.dll</HintPath>
</Reference>
<Reference Include="Splat, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Splat.2.0.0\lib\Net45\Splat.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="SpotifyAPI, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\SpotifyAPI-NET.2.13.1\lib\SpotifyAPI.dll</HintPath>
<Private>True</Private>
<HintPath>..\packages\SpotifyAPI-NET.2.16.0\lib\SpotifyAPI.dll</HintPath>
</Reference>
<Reference Include="Squirrel, Version=1.4.3.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\squirrel.windows.1.4.4\lib\Net45\Squirrel.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.Composition" />
@ -303,7 +284,6 @@
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\MahApps.Metro.1.4.3\lib\net45\System.Windows.Interactivity.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" />
@ -1127,12 +1107,12 @@
<Folder Include="Resources\Lua\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\CUE.NET.1.1.3.0\build\net45\CUE.NET.targets" Condition="Exists('..\packages\CUE.NET.1.1.3.0\build\net45\CUE.NET.targets')" />
<Import Project="..\packages\CUE.NET.1.1.3.1\build\net45\CUE.NET.targets" Condition="Exists('..\packages\CUE.NET.1.1.3.1\build\net45\CUE.NET.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\CUE.NET.1.1.3.0\build\net45\CUE.NET.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CUE.NET.1.1.3.0\build\net45\CUE.NET.targets'))" />
<Error Condition="!Exists('..\packages\CUE.NET.1.1.3.1\build\net45\CUE.NET.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CUE.NET.1.1.3.1\build\net45\CUE.NET.targets'))" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.

View File

@ -7,7 +7,6 @@ using Artemis.Profiles;
using Artemis.Profiles.Lua;
using Artemis.Profiles.Lua.Modules;
using Artemis.Profiles.Lua.Modules.Gui;
using Castle.Core.Internal;
using MoonSharp.Interpreter;
using Ninject;
using Ninject.Extensions.Logging;
@ -64,7 +63,7 @@ namespace Artemis.Managers
LuaScript.Globals[luaModule.ModuleName] = luaModule;
// If there is no LUA script, don't bother executing the string
if (ProfileModel.LuaScript.IsNullOrEmpty())
if (string.IsNullOrEmpty(ProfileModel.LuaScript))
return;
try

View File

@ -12,6 +12,7 @@ namespace Artemis.Modules.Games.WoW.Models
public int Stacks { get; set; }
public DateTime StartTime { set; get; }
public DateTime EndTime { get; set; }
public float Progress { get; set; }
public void ApplyJson(JToken buffJson)
{
@ -20,7 +21,25 @@ namespace Artemis.Modules.Games.WoW.Models
if (buffJson["c"] != null)
Stacks = buffJson["c"].Value<int>();
// TODO: Duration
if (buffJson["e"] != null)
{
var expires = buffJson["e"].Value<int>();
var tickCount = Environment.TickCount;
var timeLeft = expires - tickCount;
EndTime = DateTime.Now.AddMilliseconds(timeLeft);
}
if (buffJson["d"] != null)
StartTime = EndTime.AddSeconds(buffJson["d"].Value<int>() * -1);
}
public void UpdateProgress()
{
var elapsed = DateTime.Now - StartTime;
var total = EndTime - StartTime;
Progress = (float) (elapsed.TotalMilliseconds / total.TotalMilliseconds);
if (Progress > 1)
Progress = 1;
}
}
}

View File

@ -8,4 +8,4 @@ namespace Artemis.Modules.Games.WoW.Models
public string Name { get; set; }
public int Id { get; set; }
}
}
}

View File

@ -1,5 +1,4 @@
using System.Collections.Generic;
using System.Linq;
using Artemis.Utilities;
using MoonSharp.Interpreter;
using Newtonsoft.Json.Linq;
@ -37,7 +36,7 @@ namespace Artemis.Modules.Games.WoW.Models
public List<WoWAura> Buffs { get; }
public List<WoWAura> Debuffs { get; }
public List<WoWSpell> RecentIntantCasts { get; private set; }
public List<WoWSpell> RecentIntantCasts { get; }
public void ApplyJson(JToken json)
{
@ -68,22 +67,28 @@ namespace Artemis.Modules.Games.WoW.Models
{
if (buffs)
{
Buffs.Clear();
foreach (var auraJson in json.Children())
lock (Buffs)
{
var aura = new WoWAura();
aura.ApplyJson(auraJson);
Buffs.Add(aura);
Buffs.Clear();
foreach (var auraJson in json.Children())
{
var aura = new WoWAura();
aura.ApplyJson(auraJson);
Buffs.Add(aura);
}
}
}
else
{
Debuffs.Clear();
foreach (var auraJson in json.Children())
lock (Debuffs)
{
var aura = new WoWAura();
aura.ApplyJson(auraJson);
Debuffs.Add(aura);
Debuffs.Clear();
foreach (var auraJson in json.Children())
{
var aura = new WoWAura();
aura.ApplyJson(auraJson);
Debuffs.Add(aura);
}
}
}
}
@ -113,6 +118,17 @@ namespace Artemis.Modules.Games.WoW.Models
{
CastBar.UpdateProgress();
ClearInstantCasts();
lock (Buffs)
{
foreach (var buff in Buffs)
buff.UpdateProgress();
}
lock (Debuffs)
{
foreach (var debuff in Debuffs)
debuff.UpdateProgress();
}
}
}
}

View File

@ -1,5 +1,9 @@
Artemis = LibStub("AceAddon-3.0"):NewAddon("Artemis", "AceConsole-3.0", "AceEvent-3.0", "AceTimer-3.0", "AceComm-3.0")
json = LibStub("json")
-- Hook onto logout because it seems PLAYER_LOGOUT fires on reload as well
local _Logout = Logout
local debugging = false
local lastLine = {}
local channeling = {}
@ -14,10 +18,12 @@ channeling["player"] = false
channeling["target"] = false
function Artemis:OnEnable()
-- Register all the various events that Artemis will want to know about
Artemis:RegisterEvent("PLAYER_ENTERING_WORLD")
Artemis:RegisterEvent("PLAYER_LEVEL_UP")
Artemis:RegisterEvent("PLAYER_FLAGS_CHANGED")
Artemis:RegisterEvent("ACHIEVEMENT_EARNED")
Artemis:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED")
Artemis:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED")
Artemis:RegisterEvent("UNIT_TARGET")
Artemis:RegisterEvent("UNIT_HEALTH")
Artemis:RegisterEvent("UNIT_POWER")
@ -33,7 +39,11 @@ function Artemis:OnEnable()
Artemis:RegisterEvent("ZONE_CHANGED")
Artemis:RegisterEvent("ZONE_CHANGED_NEW_AREA")
-- Register the chat command /artemis <something>
Artemis:RegisterChatCommand("artemis", "HandleChatCommand")
-- Create a loop that'll periodically send character data in case of an Artemis restart/late start
Artemis:ScheduleRepeatingTimer("PeriodicUpdate", 30)
end
function Artemis:HandleChatCommand(input)
@ -71,10 +81,10 @@ function Artemis:Transmit(prefix, data, prio)
lastTransmitTime = GetTime()
if debugging == true then
if prefixCounts[prefix] == nill then
prefixCounts[prefix] = 0
end
prefixCounts[prefix] = prefixCounts[prefix] + 1
if prefixCounts[prefix] == nill then
prefixCounts[prefix] = 0
end
prefixCounts[prefix] = prefixCounts[prefix] + 1
end
if debugging == true then
@ -118,14 +128,14 @@ function Artemis:GetUnitDetails(unit)
end
function Artemis:GetPlayerDetails()
local details = Artemis:GetUnitDetails("player")
local details = Artemis:GetUnitDetails("player")
local id, name, _, _, role = GetSpecializationInfo(GetSpecialization())
details.realm = GetRealmName()
details.realm = GetRealmName()
details.achievementPoints = GetTotalAchievementPoints(false)
details.s = {id = id, n = name, r = role}
return details
details.s = {id = id, n = name, r = role}
return details
end
function Artemis:GetUnitAuras(unit, filter)
@ -150,15 +160,45 @@ function Artemis:GetUnitAuras(unit, filter)
return auras
end
function Artemis:PLAYER_ENTERING_WORLD(...)
function Artemis:PeriodicUpdate()
-- Don't do this in combat, enough data going out at that time already
if InCombatLockdown() then
return
end
Artemis:Transmit("player", Artemis:GetPlayerDetails())
Artemis:TransmitUnitState("player", true);
end
function Artemis:PLAYER_ENTERING_WORLD(...)
Artemis:Transmit("player", Artemis:GetPlayerDetails())
Artemis:TransmitUnitState("player", true);
end
function Logout()
Artemis:Transmit("gameState", "loggedOut")
return _Logout()
end
function Artemis:PLAYER_LEVEL_UP(...)
Artemis:Transmit("player", Artemis:GetPlayerDetails())
end
function Artemis:PLAYER_FLAGS_CHANGED(...)
local _, unitID = ...
if unitID == "player" then
-- AFK overwrites DND
if UnitIsAFK("player") then
Artemis:Transmit("gameState", "afk")
return
end
if UnitIsDND("player") then
Artemis:Transmit("gameState", "dnd")
return
end
Artemis:Transmit("gameState", "ingame")
end
end
function Artemis:ACHIEVEMENT_EARNED(...)
Artemis:Transmit("player", Artemis:GetPlayerDetails())
end
@ -206,18 +246,18 @@ function Artemis:UNIT_AURA(...)
local buffs = Artemis:GetUnitAuras(source, "PLAYER|HELPFUL")
local debuffs = Artemis:GetUnitAuras(source, "PLAYER|HARMFUL")
local newBuffs = json.encode(buffs)
local newDebuffs = json.encode(debuffs)
local newBuffs = json.encode(buffs)
local newDebuffs = json.encode(debuffs)
if not (lastBuffs == newBuffs) then
Artemis:Transmit("buffs", buffs)
end
if not (lastDebuffs == newDebuffs) then
Artemis:Transmit("debuffs", debuffs)
end
Artemis:Transmit("buffs", buffs)
end
if not (lastDebuffs == newDebuffs) then
Artemis:Transmit("debuffs", debuffs)
end
lastBuffs = newBuffs
lastBuffs = newBuffs
lastDebuffs = newDebuffs
end

View File

@ -1,4 +1,4 @@
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
..\FrameXML\UI.xsd">
<Script file="AceAddon-3.0.lua"/>
</Ui>
<Script file="AceAddon-3.0.lua" />
</Ui>

View File

@ -1,5 +1,5 @@
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
..\FrameXML\UI.xsd">
<Script file="ChatThrottleLib.lua"/>
<Script file="AceComm-3.0.lua"/>
</Ui>
<Script file="ChatThrottleLib.lua" />
<Script file="AceComm-3.0.lua" />
</Ui>

View File

@ -1,4 +1,4 @@
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
..\FrameXML\UI.xsd">
<Script file="AceConsole-3.0.lua"/>
</Ui>
<Script file="AceConsole-3.0.lua" />
</Ui>

View File

@ -1,4 +1,4 @@
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
..\FrameXML\UI.xsd">
<Script file="AceEvent-3.0.lua"/>
</Ui>
<Script file="AceEvent-3.0.lua" />
</Ui>

View File

@ -1,4 +1,4 @@
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
..\FrameXML\UI.xsd">
<Script file="AceTimer-3.0.lua"/>
</Ui>
<Script file="AceTimer-3.0.lua" />
</Ui>

View File

@ -1,9 +1,9 @@
<Ui xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd">
<Script file="Libs\LibStub\LibStub.lua"/>
<Include file="Libs\AceAddon-3.0\AceAddon-3.0.xml"/>
<Include file="Libs\AceConsole-3.0\AceConsole-3.0.xml"/>
<Include file="Libs\AceEvent-3.0\AceEvent-3.0.xml"/>
<Include file="Libs\AceTimer-3.0\AceTimer-3.0.xml"/>
<Include file="Libs\AceComm-3.0\AceComm-3.0.xml"/>
<Include file="Libs\json.lua"/>
<Script file="Libs\LibStub\LibStub.lua" />
<Include file="Libs\AceAddon-3.0\AceAddon-3.0.xml" />
<Include file="Libs\AceConsole-3.0\AceConsole-3.0.xml" />
<Include file="Libs\AceEvent-3.0\AceEvent-3.0.xml" />
<Include file="Libs\AceTimer-3.0\AceTimer-3.0.xml" />
<Include file="Libs\AceComm-3.0\AceComm-3.0.xml" />
<Include file="Libs\json.lua" />
</Ui>

View File

@ -19,5 +19,15 @@ namespace Artemis.Modules.Games.WoW
public string Realm { get; set; }
public string Zone { get; set; }
public string SubZone { get; set; }
public WoWState State { get; set; }
}
public enum WoWState
{
LoggedOut,
Ingame,
Afk,
Dnd
}
}

View File

@ -3,7 +3,6 @@ using Artemis.Managers;
using Artemis.Modules.Abstract;
using Artemis.Modules.Games.WoW.Models;
using Newtonsoft.Json.Linq;
using static Artemis.Modules.Games.WoW.WowPacketScanner;
namespace Artemis.Modules.Games.WoW
{
@ -56,6 +55,9 @@ namespace Artemis.Modules.Games.WoW
var dataModel = (WoWDataModel) DataModel;
switch (command)
{
case "gameState":
ParseGameState(data, dataModel);
break;
case "player":
ParsePlayer(json, dataModel);
break;
@ -99,9 +101,25 @@ namespace Artemis.Modules.Games.WoW
}
}
private void ParseGameState(string data, WoWDataModel dataModel)
{
if (data == "\"ingame\"")
dataModel.State = WoWState.Ingame;
else if (data == "\"afk\"")
dataModel.State = WoWState.Afk;
else if (data == "\"dnd\"")
dataModel.State = WoWState.Dnd;
else if (data == "\"loggedOut\"")
dataModel.State = WoWState.LoggedOut;
}
private void ParsePlayer(JToken json, WoWDataModel dataModel)
{
dataModel.Player.ApplyJson(json);
// At this point class/race data is available so no point pretending to be logged out
if (dataModel.State == WoWState.LoggedOut)
dataModel.State = WoWState.Ingame;
}
private void ParseTarget(JToken json, WoWDataModel dataModel)

View File

@ -164,6 +164,7 @@
<xs:element name="whenEqual" type="whenEqual" />
<xs:element name="whenNotContains" type="whenNotContains" />
<xs:element name="whenNotEqual" type="whenNotEqual" />
<xs:element name="whenRepeated" type="whenRepeated" />
</xs:choice>
</xs:complexType>
<xs:simpleType name="NLogLevel">
@ -326,6 +327,7 @@
<xs:extension base="WrapperTargetBase">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="asyncFlush" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="condition" minOccurs="0" maxOccurs="1" type="Condition" />
<xs:element name="optimizeBufferReuse" minOccurs="0" maxOccurs="1" type="xs:boolean" />
</xs:choice>
@ -334,6 +336,11 @@
<xs:documentation>Name of the target.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="asyncFlush" type="xs:boolean">
<xs:annotation>
<xs:documentation>Delay the flush until the LogEvent has been confirmed as written</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="condition" type="Condition">
<xs:annotation>
<xs:documentation>Condition expression. Log events who meet this condition will cause a flush on the wrapped target.</xs:documentation>
@ -403,13 +410,14 @@
<xs:element name="address" minOccurs="0" maxOccurs="1" type="Layout" />
<xs:element name="maxQueueSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="parameter" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.NLogViewerParameterInfo" />
<xs:element name="includeMdc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="includeNdc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="includeSourceInfo" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="includeNLogData" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="includeNdc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="includeMdc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="includeCallSite" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="appInfo" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="ndcItemSeparator" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="includeMdlc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="optimizeBufferReuse" minOccurs="0" maxOccurs="1" type="xs:boolean" />
</xs:choice>
<xs:attribute name="name" type="xs:string">
@ -477,9 +485,9 @@
<xs:documentation>Maximum queue size.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="includeMdc" type="xs:boolean">
<xs:attribute name="includeNdc" type="xs:boolean">
<xs:annotation>
<xs:documentation>Indicates whether to include dictionary contents.</xs:documentation>
<xs:documentation>Indicates whether to include stack contents.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="includeSourceInfo" type="xs:boolean">
@ -492,9 +500,9 @@
<xs:documentation>Indicates whether to include NLog-specific extensions to log4j schema.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="includeNdc" type="xs:boolean">
<xs:attribute name="includeMdc" type="xs:boolean">
<xs:annotation>
<xs:documentation>Indicates whether to include stack contents.</xs:documentation>
<xs:documentation>Indicates whether to include dictionary contents.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="includeCallSite" type="xs:boolean">
@ -512,6 +520,11 @@
<xs:documentation>NDC item separator.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="includeMdlc" type="xs:boolean">
<xs:annotation>
<xs:documentation>Indicates whether to include dictionary contents.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="optimizeBufferReuse" type="xs:boolean">
<xs:annotation>
<xs:documentation>Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit</xs:documentation>
@ -1001,6 +1014,7 @@
<xs:element name="source" minOccurs="0" maxOccurs="1" type="Layout" />
<xs:element name="onOverflow" minOccurs="0" maxOccurs="1" type="NLog.Targets.EventLogTargetOverflowAction" />
<xs:element name="entryType" minOccurs="0" maxOccurs="1" type="Layout" />
<xs:element name="maxKilobytes" minOccurs="0" maxOccurs="1" type="xs:long" />
<xs:element name="maxMessageLength" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="optimizeBufferReuse" minOccurs="0" maxOccurs="1" type="xs:boolean" />
</xs:choice>
@ -1049,6 +1063,11 @@
<xs:documentation>Optional entrytype. When not set, or when not convertable to then determined by </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="maxKilobytes" type="xs:long">
<xs:annotation>
<xs:documentation>Maximum Event log size in kilobytes. If null, the value won't be set. Default is 512 Kilobytes as specified by Eventlog API</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="maxMessageLength" type="xs:integer">
<xs:annotation>
<xs:documentation>Message length limit to write to the Event Log.</xs:documentation>
@ -1117,18 +1136,19 @@
<xs:element name="discardAll" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="fileNameKind" minOccurs="0" maxOccurs="1" type="NLog.Targets.FilePathKind" />
<xs:element name="forceMutexConcurrentWrites" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="maxLogFilenames" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="writeFooterOnArchivingOnly" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="fileName" minOccurs="0" maxOccurs="1" type="Layout" />
<xs:element name="archiveDateFormat" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="archiveOldFileOnStartup" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="createDirs" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="enableFileDelete" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="fileAttributes" minOccurs="0" maxOccurs="1" type="NLog.Targets.Win32FileAttributes" />
<xs:element name="deleteOldFileOnStartup" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="replaceFileContentsOnEachWrite" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="enableFileDelete" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="concurrentWriteAttempts" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="concurrentWrites" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="keepFileOpen" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="maxLogFilenames" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="networkWrites" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="openFileCacheSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="openFileCacheTimeout" minOccurs="0" maxOccurs="1" type="xs:integer" />
@ -1136,7 +1156,6 @@
<xs:element name="bufferSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="autoFlush" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="concurrentWriteAttemptDelay" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="concurrentWriteAttempts" minOccurs="0" maxOccurs="1" type="xs:integer" />
</xs:choice>
<xs:attribute name="name" type="xs:string">
<xs:annotation>
@ -1228,6 +1247,11 @@
<xs:documentation>Value indicationg whether file creation calls should be synchronized by a system global mutex.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="maxLogFilenames" type="xs:integer">
<xs:annotation>
<xs:documentation>Maximum number of log filenames that should be stored as existing.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="writeFooterOnArchivingOnly" type="xs:boolean">
<xs:annotation>
<xs:documentation>Indicates whether the footer should be written only when the file is archived.</xs:documentation>
@ -1253,11 +1277,6 @@
<xs:documentation>Indicates whether to create directories if they do not exist.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="enableFileDelete" type="xs:boolean">
<xs:annotation>
<xs:documentation>Indicates whether to enable log file(s) to be deleted.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="fileAttributes" type="NLog.Targets.Win32FileAttributes">
<xs:annotation>
<xs:documentation>File attributes (Windows only).</xs:documentation>
@ -1273,6 +1292,16 @@
<xs:documentation>Indicates whether to replace file contents on each write instead of appending log message at the end.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="enableFileDelete" type="xs:boolean">
<xs:annotation>
<xs:documentation>Indicates whether to enable log file(s) to be deleted.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="concurrentWriteAttempts" type="xs:integer">
<xs:annotation>
<xs:documentation>Number of times the write is appended on the file before NLog discards the log message.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="concurrentWrites" type="xs:boolean">
<xs:annotation>
<xs:documentation>Indicates whether concurrent writes to the log file by multiple processes on the same host.</xs:documentation>
@ -1283,11 +1312,6 @@
<xs:documentation>Indicates whether to keep log file open instead of opening and closing it on each logging event.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="maxLogFilenames" type="xs:integer">
<xs:annotation>
<xs:documentation>Maximum number of log filenames that should be stored as existing.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="networkWrites" type="xs:boolean">
<xs:annotation>
<xs:documentation>Indicates whether concurrent writes to the log file by multiple processes on different network hosts.</xs:documentation>
@ -1323,11 +1347,6 @@
<xs:documentation>Delay in milliseconds to wait before attempting to write to the file again.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="concurrentWriteAttempts" type="xs:integer">
<xs:annotation>
<xs:documentation>Number of times the write is appended on the file before NLog discards the log message.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
@ -1587,6 +1606,7 @@
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
<xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="parameterType" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="type" minOccurs="0" maxOccurs="1" type="xs:string" />
</xs:choice>
<xs:attribute name="layout" type="SimpleLayoutAttribute">
@ -1599,11 +1619,16 @@
<xs:documentation>Name of the parameter.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="type" type="xs:string">
<xs:attribute name="parameterType" type="xs:string">
<xs:annotation>
<xs:documentation>Type of the parameter.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="type" type="xs:string">
<xs:annotation>
<xs:documentation>Type of the parameter. Obsolete alias for </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="Mail">
<xs:complexContent>
@ -2020,13 +2045,14 @@
<xs:element name="address" minOccurs="0" maxOccurs="1" type="Layout" />
<xs:element name="maxQueueSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="parameter" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.NLogViewerParameterInfo" />
<xs:element name="includeMdc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="includeNdc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="includeSourceInfo" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="includeNLogData" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="includeNdc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="includeMdc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="includeCallSite" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="appInfo" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="ndcItemSeparator" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="includeMdlc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="optimizeBufferReuse" minOccurs="0" maxOccurs="1" type="xs:boolean" />
</xs:choice>
<xs:attribute name="name" type="xs:string">
@ -2094,9 +2120,9 @@
<xs:documentation>Maximum queue size.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="includeMdc" type="xs:boolean">
<xs:attribute name="includeNdc" type="xs:boolean">
<xs:annotation>
<xs:documentation>Indicates whether to include dictionary contents.</xs:documentation>
<xs:documentation>Indicates whether to include stack contents.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="includeSourceInfo" type="xs:boolean">
@ -2109,9 +2135,9 @@
<xs:documentation>Indicates whether to include NLog-specific extensions to log4j schema.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="includeNdc" type="xs:boolean">
<xs:attribute name="includeMdc" type="xs:boolean">
<xs:annotation>
<xs:documentation>Indicates whether to include stack contents.</xs:documentation>
<xs:documentation>Indicates whether to include dictionary contents.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="includeCallSite" type="xs:boolean">
@ -2129,6 +2155,11 @@
<xs:documentation>NDC item separator.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="includeMdlc" type="xs:boolean">
<xs:annotation>
<xs:documentation>Indicates whether to include dictionary contents.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="optimizeBufferReuse" type="xs:boolean">
<xs:annotation>
<xs:documentation>Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit</xs:documentation>
@ -2487,8 +2518,10 @@
<xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="escapeDataNLogLegacy" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="escapeDataRfc3986" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="header" minOccurs="0" maxOccurs="unbounded" type="NLog.Targets.MethodCallParameter" />
<xs:element name="methodName" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="namespace" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="preAuthenticate" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="protocol" minOccurs="0" maxOccurs="1" type="NLog.Targets.WebServiceProtocol" />
<xs:element name="url" minOccurs="0" maxOccurs="1" type="xs:anyURI" />
<xs:element name="xmlRoot" minOccurs="0" maxOccurs="1" type="xs:string" />
@ -2534,6 +2567,11 @@
<xs:documentation>Web service namespace. Only used with Soap.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="preAuthenticate" type="xs:boolean">
<xs:annotation>
<xs:documentation>Indicates whether to pre-authenticate the HttpWebRequest (Requires 'Authorization' in parameters)</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="protocol" type="NLog.Targets.WebServiceProtocol">
<xs:annotation>
<xs:documentation>Protocol to be used when calling web service.</xs:documentation>
@ -2677,8 +2715,10 @@
<xs:element name="attribute" minOccurs="0" maxOccurs="unbounded" type="NLog.Layouts.JsonAttribute" />
<xs:element name="excludeProperties" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="includeAllProperties" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="includeMdc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="renderEmptyObject" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="suppressSpaces" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="includeMdlc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
</xs:choice>
<xs:attribute name="excludeProperties" type="xs:string">
<xs:annotation>
@ -2690,6 +2730,11 @@
<xs:documentation>Option to include all properties from the log events</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="includeMdc" type="xs:boolean">
<xs:annotation>
<xs:documentation>Indicates whether to include contents of the dictionary.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="renderEmptyObject" type="xs:boolean">
<xs:annotation>
<xs:documentation>Option to render the empty object value {}</xs:documentation>
@ -2700,12 +2745,18 @@
<xs:documentation>Option to suppress the extra spaces in the output json</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="includeMdlc" type="xs:boolean">
<xs:annotation>
<xs:documentation>Indicates whether to include contents of the dictionary.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NLog.Layouts.JsonAttribute">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="encode" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="escapeUnicode" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
<xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
</xs:choice>
@ -2714,6 +2765,11 @@
<xs:documentation>Determines wether or not this attribute will be Json encoded.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="escapeUnicode" type="xs:boolean">
<xs:annotation>
<xs:documentation>Indicates whether to escape non-ascii characters</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="layout" type="SimpleLayoutAttribute">
<xs:annotation>
<xs:documentation>Layout that will be rendered as the attribute's value.</xs:documentation>
@ -2754,7 +2810,26 @@
<xs:complexType name="Log4JXmlEventLayout">
<xs:complexContent>
<xs:extension base="Layout">
<xs:choice minOccurs="0" maxOccurs="unbounded" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="includeAllProperties" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="includeMdc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="includeMdlc" minOccurs="0" maxOccurs="1" type="xs:boolean" />
</xs:choice>
<xs:attribute name="includeAllProperties" type="xs:boolean">
<xs:annotation>
<xs:documentation>Option to include all properties from the log events</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="includeMdc" type="xs:boolean">
<xs:annotation>
<xs:documentation>Indicates whether to include contents of the dictionary.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="includeMdlc" type="xs:boolean">
<xs:annotation>
<xs:documentation>Indicates whether to include contents of the dictionary.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
@ -2929,6 +3004,74 @@
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="whenRepeated">
<xs:complexContent>
<xs:extension base="Filter">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="action" minOccurs="0" maxOccurs="1" type="FilterResult" />
<xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
<xs:element name="defaultFilterCacheSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="filterCountMessageAppendFormat" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="filterCountPropertyName" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="maxFilterCacheSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="maxLength" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="optimizeBufferDefaultLength" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="optimizeBufferReuse" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="timeoutSeconds" minOccurs="0" maxOccurs="1" type="xs:integer" />
</xs:choice>
<xs:attribute name="action" type="FilterResult">
<xs:annotation>
<xs:documentation>Action to be taken when filter matches.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="layout" type="SimpleLayoutAttribute">
<xs:annotation>
<xs:documentation>Layout to be used to filter log messages.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="defaultFilterCacheSize" type="xs:integer">
<xs:annotation>
<xs:documentation>Default number of unique filter values to expect, will automatically increase if needed</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="filterCountMessageAppendFormat" type="xs:string">
<xs:annotation>
<xs:documentation>Append FilterCount to the when an event is no longer filtered</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="filterCountPropertyName" type="xs:string">
<xs:annotation>
<xs:documentation>Insert FilterCount value into when an event is no longer filtered</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="maxFilterCacheSize" type="xs:integer">
<xs:annotation>
<xs:documentation>Max number of unique filter values to expect simultaneously</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="maxLength" type="xs:integer">
<xs:annotation>
<xs:documentation>Max length of filter values, will truncate if above limit</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="optimizeBufferDefaultLength" type="xs:integer">
<xs:annotation>
<xs:documentation>Default buffer size for the internal buffers</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="optimizeBufferReuse" type="xs:boolean">
<xs:annotation>
<xs:documentation>Reuse internal buffers, and doesn't have to constantly allocate new buffers</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="timeoutSeconds" type="xs:integer">
<xs:annotation>
<xs:documentation>How long before a filter expires, and logging is accepted again</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="AccurateLocal">
<xs:complexContent>
<xs:extension base="TimeSource">

View File

@ -53,7 +53,7 @@ using System.Windows;
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.10.0.0")]
[assembly: AssemblyFileVersion("1.10.0.0")]
[assembly: AssemblyVersion("1.11.0.0")]
[assembly: AssemblyFileVersion("1.11.0.0")]
[assembly: AssemblyMetadata("SquirrelAwareVersion", "1")]
[assembly: InternalsVisibleTo("Artemis.Explorables")]

View File

@ -26,7 +26,6 @@ using Artemis.Styles.DropTargetAdorners;
using Artemis.Utilities;
using Artemis.Utilities.ActiveWindowDetection;
using Caliburn.Micro;
using Castle.Components.DictionaryAdapter;
using GongSolutions.Wpf.DragDrop;
using MahApps.Metro;
using MahApps.Metro.Controls;
@ -637,7 +636,7 @@ namespace Artemis.ViewModels
return SelectedProfile.GetRenderLayers(null, false, true);
if (SelectedLayer == null || !SelectedLayer.Enabled)
return new EditableList<LayerModel>();
return new List<LayerModel>();
if (SelectedLayer.LayerType is FolderType)
drawLayers = SelectedLayer.GetRenderLayers(null, false, true);

View File

@ -3,7 +3,6 @@ using System.Linq;
using Artemis.Profiles.Layers.Models;
using Artemis.Utilities;
using Caliburn.Micro;
using Castle.Core.Internal;
namespace Artemis.ViewModels.Profiles
{
@ -219,7 +218,7 @@ namespace Artemis.ViewModels.Profiles
.DynamicProperties
.Where(p => p.LayerProperty != _property).ToList();
if (!Proposed.GameProperty.IsNullOrEmpty())
if (!string.IsNullOrEmpty(Proposed.GameProperty))
proposedProperties.DynamicProperties.Add(Proposed);
}
}

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Betwixt" version="1.4.1" targetFramework="net461" />
<package id="Caliburn.Micro" version="3.0.3" targetFramework="net461" />
<package id="Caliburn.Micro.Core" version="3.0.3" targetFramework="net461" />
<package id="Castle.Core" version="4.0.0" targetFramework="net461" />
<package id="Caliburn.Micro" version="3.1.0" targetFramework="net461" />
<package id="Caliburn.Micro.Core" version="3.1.0" targetFramework="net461" />
<package id="Colore" version="5.1.0" targetFramework="net461" />
<package id="CSCore" version="1.2.0" targetFramework="net461" />
<package id="CUE.NET" version="1.1.3.0" targetFramework="net461" />
<package id="CSCore" version="1.2.1.1" targetFramework="net461" />
<package id="CUE.NET" version="1.1.3.1" targetFramework="net461" />
<package id="DeltaCompressionDotNet" version="1.1.0" targetFramework="net461" />
<package id="DynamicExpresso.Core" version="1.3.3.5" targetFramework="net461" />
<package id="DynamicExpresso.Core" version="1.3.3.6" targetFramework="net461" />
<package id="gong-wpf-dragdrop" version="0.1.4.3" targetFramework="net461" />
<package id="Hardcodet.NotifyIcon.Wpf" version="1.0.8" targetFramework="net452" />
<package id="log4net" version="2.0.8" targetFramework="net461" />
@ -17,19 +16,19 @@
<package id="Mono.Cecil" version="0.9.6.4" targetFramework="net461" />
<package id="MoonSharp" version="2.0.0.0" targetFramework="net461" />
<package id="MouseKeyHook" version="5.4.0" targetFramework="net461" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net461" />
<package id="Newtonsoft.Json" version="10.0.3" targetFramework="net461" />
<package id="Ninject" version="3.2.2.0" targetFramework="net452" />
<package id="Ninject.Extensions.Conventions" version="3.2.0.0" targetFramework="net461" />
<package id="Ninject.Extensions.Logging" version="3.2.3.0" targetFramework="net452" />
<package id="Ninject.Extensions.Logging.nlog4" version="3.2.3.0" targetFramework="net452" />
<package id="NLog" version="4.4.4" targetFramework="net461" />
<package id="NLog.Schema" version="4.4.4" targetFramework="net461" />
<package id="NLog" version="4.4.12" targetFramework="net461" />
<package id="NLog.Schema" version="4.4.12" targetFramework="net461" />
<package id="Pcap.Net.x64" version="1.0.4.1" targetFramework="net461" />
<package id="Process.NET" version="1.0.8" targetFramework="net461" />
<package id="SharpDX" version="3.1.1" targetFramework="net461" />
<package id="SharpDX.Direct3D9" version="3.1.1" targetFramework="net461" />
<package id="SharpDX" version="4.0.1" targetFramework="net461" />
<package id="SharpDX.Direct3D9" version="4.0.1" targetFramework="net461" />
<package id="Splat" version="2.0.0" targetFramework="net461" />
<package id="SpotifyAPI-NET" version="2.13.1" targetFramework="net461" />
<package id="SpotifyAPI-NET" version="2.16.0" targetFramework="net461" />
<package id="squirrel.windows" version="1.4.4" targetFramework="net461" />
<package id="WpfExceptionViewer" version="1.0.0.0" targetFramework="net452" />
</packages>

View File

@ -49,9 +49,8 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />

View File

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net461" />
<package id="Newtonsoft.Json" version="10.0.3" targetFramework="net461" />
</packages>