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

Fixed profile saving, expanded Overwatch data model

This commit is contained in:
SpoinkyNL 2016-05-29 20:59:54 +02:00
parent 0b889c3b0c
commit b01f9485ae
5 changed files with 116 additions and 12 deletions

View File

@ -5,13 +5,42 @@ namespace Artemis.Modules.Games.Overwatch
public class OverwatchDataModel : IGameDataModel
{
public OverwatchStatus Status { get; set; }
public OverwatchCharacter Character { get; set; }
public bool UltimateReady { get; set; }
public bool Ability1Ready { get; set; }
public bool Ability2Ready { get; set; }
}
public enum OverwatchStatus
{
Unkown,
InMainMenu,
InCharacterSelection,
InGame
}
public enum OverwatchCharacter
{
None,
Genji,
Mccree,
Pharah,
Reaper,
Soldier76,
Tracer,
Bastion,
Hanzo,
Junkrat,
Mei,
Torbjörn,
Widowmaker,
Dva,
Reinhardt,
Roadhog,
Winston,
Zarya,
Lúcio,
Mercy,
Symmetra,
Zenyatta
}
}

View File

@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq.Dynamic;
using System.Linq;
using Artemis.Events;
using Artemis.Managers;
using Artemis.Models;
@ -28,12 +28,51 @@ namespace Artemis.Modules.Games.Overwatch
Initialized = false;
MmfReader = new MmfReader("overwatchMmf");
LoadOverwatchCharacters();
}
public List<CharacterColor> OverwatchCharacters { get; set; }
public MmfReader MmfReader { get; set; }
public int Scale { get; set; }
private void LoadOverwatchCharacters()
{
OverwatchCharacters = new List<CharacterColor>
{
new CharacterColor {OverwatchCharacter = OverwatchCharacter.Genji, Color = Color.FromRgb(13, 61, 0)},
new CharacterColor {OverwatchCharacter = OverwatchCharacter.Mccree, Color = Color.FromRgb(24, 1, 1)},
new CharacterColor {OverwatchCharacter = OverwatchCharacter.Pharah, Color = Color.FromRgb(0, 6, 32)},
new CharacterColor {OverwatchCharacter = OverwatchCharacter.Reaper, Color = Color.FromRgb(7, 0, 0)},
new CharacterColor {OverwatchCharacter = OverwatchCharacter.Soldier76, Color = Color.FromRgb(3, 5, 11)},
new CharacterColor {OverwatchCharacter = OverwatchCharacter.Tracer, Color = Color.FromRgb(46, 12, 0)},
new CharacterColor {OverwatchCharacter = OverwatchCharacter.Bastion, Color = Color.FromRgb(6, 10, 5)},
new CharacterColor {OverwatchCharacter = OverwatchCharacter.Hanzo, Color = Color.FromRgb(28, 24, 8)},
new CharacterColor {OverwatchCharacter = OverwatchCharacter.Junkrat, Color = Color.FromRgb(59, 28, 0)},
new CharacterColor {OverwatchCharacter = OverwatchCharacter.Mei, Color = Color.FromRgb(3, 20, 55)},
new CharacterColor {OverwatchCharacter = OverwatchCharacter.Torbjörn, Color = Color.FromRgb(31, 4, 3)},
new CharacterColor
{
OverwatchCharacter = OverwatchCharacter.Widowmaker,
Color = Color.FromRgb(16, 3, 17)
},
new CharacterColor {OverwatchCharacter = OverwatchCharacter.Dva, Color = Color.FromRgb(62, 12, 32)},
new CharacterColor
{
OverwatchCharacter = OverwatchCharacter.Reinhardt,
Color = Color.FromRgb(12, 16, 16)
},
new CharacterColor {OverwatchCharacter = OverwatchCharacter.Roadhog, Color = Color.FromRgb(26, 10, 0)},
new CharacterColor {OverwatchCharacter = OverwatchCharacter.Winston, Color = Color.FromRgb(17, 18, 26)},
new CharacterColor {OverwatchCharacter = OverwatchCharacter.Zarya, Color = Color.FromRgb(58, 7, 24)},
new CharacterColor {OverwatchCharacter = OverwatchCharacter.Lúcio, Color = Color.FromRgb(8, 35, 0)},
new CharacterColor {OverwatchCharacter = OverwatchCharacter.Mercy, Color = Color.FromRgb(60, 56, 26)},
new CharacterColor {OverwatchCharacter = OverwatchCharacter.Symmetra, Color = Color.FromRgb(11, 29, 37)},
new CharacterColor {OverwatchCharacter = OverwatchCharacter.Zenyatta, Color = Color.FromRgb(62, 54, 6)}
};
}
public override void Dispose()
{
Initialized = false;
@ -59,15 +98,34 @@ namespace Artemis.Modules.Games.Overwatch
{
for (var x = 0; x < 22; x++)
{
g.DrawRectangle(new Pen(ColorHelpers.ToDrawingColor(colors[y, x])), y, x, 1, 1 );
g.DrawRectangle(new Pen(ColorHelpers.ToDrawingColor(colors[y, x])), y, x, 1, 1);
}
}
}
_events.PublishOnUIThread(new ChangeBitmap(bitmap));
if (colors[0, 0].Equals(Color.FromRgb(55, 30, 0)))
gameDataModel.Status = OverwatchStatus.InMainMenu;
else if (colors[0, 0].Equals(Color.FromRgb(3, 5, 11)))
gameDataModel.Status = OverwatchStatus.InGame;
// Determine general game state
gameDataModel.Status = colors[0, 0].Equals(Color.FromRgb(55, 30, 0))
? OverwatchStatus.InMainMenu
: OverwatchStatus.Unkown;
if (gameDataModel.Status == OverwatchStatus.InMainMenu)
return;
// If ingame, look for a character
var characterMatch = OverwatchCharacters.FirstOrDefault(c => c.Color == colors[0, 0]);
if (characterMatch.OverwatchCharacter == OverwatchCharacter.None)
return;
gameDataModel.Status = OverwatchStatus.InGame;
gameDataModel.Character = characterMatch.OverwatchCharacter;
// Ability1 is ready when LShift is lid
gameDataModel.Ability1Ready = colors[4, 1].Equals(Color.FromRgb(4, 141, 144));
// Ability2 is ready when E is lid
gameDataModel.Ability2Ready = colors[2, 4].Equals(Color.FromRgb(4, 141, 144));
// Ultimate is ready when Q is blinking
gameDataModel.UltimateReady = !characterMatch.Color.Equals(colors[2, 2]);
}
public override Bitmap GenerateBitmap()
@ -89,4 +147,10 @@ namespace Artemis.Modules.Games.Overwatch
return Profile?.GenerateBrush<OverwatchDataModel>(GameDataModel, LayerType.Headset, false, true);
}
}
public struct CharacterColor
{
public OverwatchCharacter OverwatchCharacter { get; set; }
public Color Color { get; set; }
}
}

View File

@ -83,6 +83,8 @@ namespace Artemis.Utilities
friendlyName = "(Number)";
else if (propertyInfo.PropertyType.Name == "String")
friendlyName = "(Text)";
else if (propertyInfo.PropertyType.Name == "Boolean")
friendlyName = "(Yes/no)";
if (propertyInfo.PropertyType.BaseType?.Name == "Enum")
friendlyName = "(Choice)";

View File

@ -10,8 +10,7 @@ namespace Artemis.ViewModels.Profiles
{
private readonly NamedOperator[] _boolOperators =
{
new NamedOperator("True", "== True"),
new NamedOperator("False", "== False")
new NamedOperator("Equal to", "==")
};
private readonly LayerEditorViewModel _conditionModel;
@ -114,7 +113,6 @@ namespace Artemis.ViewModels.Profiles
get { return _selectedOperator; }
set
{
if (value.Equals(_selectedOperator)) return;
_selectedOperator = value;
NotifyOfPropertyChange(() => SelectedOperator);
}
@ -142,6 +140,7 @@ namespace Artemis.ViewModels.Profiles
return;
Operators.Clear();
Enums.Clear();
UserValueIsVisible = false;
EnumValueIsVisible = false;
@ -153,6 +152,9 @@ namespace Artemis.ViewModels.Profiles
break;
case "Boolean":
Operators.AddRange(_boolOperators);
Enums.Add("True");
Enums.Add("False");
EnumValueIsVisible = true;
break;
default:
Operators.AddRange(_operators);
@ -193,7 +195,13 @@ namespace Artemis.ViewModels.Profiles
LayerConditionModel.Field = SelectedDataModelProp.Path;
LayerConditionModel.Operator = SelectedOperator.Value;
LayerConditionModel.Type = SelectedDataModelProp.Type;
LayerConditionModel.Value = SelectedDataModelProp.Type == "Enum" ? SelectedEnum : UserValue;
if (SelectedDataModelProp.Type == "Enum" || SelectedDataModelProp.Type == "Boolean")
LayerConditionModel.Value = SelectedEnum;
else
LayerConditionModel.Value = UserValue;
UpdateForm(sender, e);
}
/// <summary>

View File

@ -48,6 +48,7 @@ namespace Artemis.ViewModels.Profiles
events.Subscribe(this);
ProfileViewModel.PropertyChanged += PropertyChangeHandler;
PropertyChanged += PropertyChangeHandler;
LoadProfiles();
}