mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-12 21:38:38 +00:00
Recommited contextual colors
This commit is contained in:
parent
426ebac079
commit
2342308071
@ -1,161 +1,161 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Artemis.Managers;
|
||||
using Artemis.Models;
|
||||
using Artemis.Settings;
|
||||
using Artemis.Utilities;
|
||||
using Artemis.Utilities.Keyboard;
|
||||
using Artemis.Utilities.Memory;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Artemis.Modules.Games.RocketLeague
|
||||
{
|
||||
public class RocketLeagueModel : GameModel
|
||||
{
|
||||
private int _boostAmount;
|
||||
private bool _boostGrowing;
|
||||
private KeyboardRectangle _boostRect;
|
||||
private Memory _memory;
|
||||
private GamePointersCollectionModel _pointer;
|
||||
private int _previousBoost;
|
||||
|
||||
public RocketLeagueModel(MainManager mainManager, RocketLeagueSettings settings) : base(mainManager)
|
||||
{
|
||||
Settings = settings;
|
||||
Name = "RocketLeague";
|
||||
ProcessName = "RocketLeague";
|
||||
Scale = 4;
|
||||
Enabled = Settings.Enabled;
|
||||
Initialized = false;
|
||||
ContextualColor = Settings.ContextualColor;
|
||||
}
|
||||
|
||||
public RocketLeagueSettings Settings { get; set; }
|
||||
|
||||
public int Scale { get; set; }
|
||||
public bool ContextualColor { get; set; }
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
Initialized = false;
|
||||
_memory = null;
|
||||
}
|
||||
|
||||
public override void Enable()
|
||||
{
|
||||
Initialized = false;
|
||||
|
||||
_boostRect = new KeyboardRectangle(MainManager.KeyboardManager.ActiveKeyboard, 0, 0, new List<Color>
|
||||
{
|
||||
ColorHelpers.ToDrawingColor(Settings.MainColor),
|
||||
ColorHelpers.ToDrawingColor(Settings.SecondaryColor)
|
||||
}, LinearGradientMode.Horizontal);
|
||||
|
||||
MemoryHelpers.GetPointers();
|
||||
_pointer = JsonConvert.DeserializeObject<GamePointersCollectionModel>(Offsets.Default.RocketLeague);
|
||||
|
||||
var tempProcess = MemoryHelpers.GetProcessIfRunning(ProcessName);
|
||||
_memory = new Memory(tempProcess);
|
||||
|
||||
Initialized = true;
|
||||
}
|
||||
|
||||
public override void Update()
|
||||
{
|
||||
if (_boostGrowing)
|
||||
return;
|
||||
if (_memory == null)
|
||||
return;
|
||||
|
||||
var offsets = _pointer.GameAddresses.First(ga => ga.Description == "Boost").ToString();
|
||||
var boostAddress = _memory.GetAddress("\"RocketLeague.exe\"" + offsets);
|
||||
var boostFloat = _memory.ReadFloat(boostAddress)*100/3;
|
||||
|
||||
_previousBoost = _boostAmount;
|
||||
_boostAmount = (int) Math.Ceiling(boostFloat);
|
||||
|
||||
// Take care of any reading errors resulting in an OutOfMemory on draw
|
||||
if (_boostAmount < 0)
|
||||
_boostAmount = 0;
|
||||
if (_boostAmount > 100)
|
||||
_boostAmount = 100;
|
||||
|
||||
_boostRect.Width =
|
||||
(int) Math.Ceiling(MainManager.KeyboardManager.ActiveKeyboard.Width*Scale/100.00*_boostAmount);
|
||||
|
||||
if (ContextualColor)
|
||||
{
|
||||
if(_boostAmount < 33)
|
||||
_boostRect.Colors = new List<Color>{ Color.Red };
|
||||
else if(_boostAmount >= 33 && _boostAmount < 66)
|
||||
_boostRect.Colors = new List<Color> { Color.Yellow };
|
||||
else if(_boostAmount >= 66)
|
||||
_boostRect.Colors = new List<Color> { Color.Lime };
|
||||
}
|
||||
else
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Artemis.Managers;
|
||||
using Artemis.Models;
|
||||
using Artemis.Settings;
|
||||
using Artemis.Utilities;
|
||||
using Artemis.Utilities.Keyboard;
|
||||
using Artemis.Utilities.Memory;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Artemis.Modules.Games.RocketLeague
|
||||
{
|
||||
public class RocketLeagueModel : GameModel
|
||||
{
|
||||
private int _boostAmount;
|
||||
private bool _boostGrowing;
|
||||
private KeyboardRectangle _boostRect;
|
||||
private Memory _memory;
|
||||
private GamePointersCollectionModel _pointer;
|
||||
private int _previousBoost;
|
||||
|
||||
public RocketLeagueModel(MainManager mainManager, RocketLeagueSettings settings) : base(mainManager)
|
||||
{
|
||||
Settings = settings;
|
||||
Name = "RocketLeague";
|
||||
ProcessName = "RocketLeague";
|
||||
Scale = 4;
|
||||
Enabled = Settings.Enabled;
|
||||
Initialized = false;
|
||||
ContextualColor = Settings.ContextualColor;
|
||||
}
|
||||
|
||||
public RocketLeagueSettings Settings { get; set; }
|
||||
|
||||
public int Scale { get; set; }
|
||||
public bool ContextualColor { get; set; }
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
Initialized = false;
|
||||
_memory = null;
|
||||
}
|
||||
|
||||
public override void Enable()
|
||||
{
|
||||
Initialized = false;
|
||||
|
||||
_boostRect = new KeyboardRectangle(MainManager.KeyboardManager.ActiveKeyboard, 0, 0, new List<Color>
|
||||
{
|
||||
_boostRect.Colors = new List<Color>
|
||||
{
|
||||
ColorHelpers.ToDrawingColor(Settings.MainColor),
|
||||
ColorHelpers.ToDrawingColor(Settings.SecondaryColor)
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Task.Run(() => GrowIfHigher());
|
||||
}
|
||||
|
||||
private void GrowIfHigher()
|
||||
{
|
||||
if (_boostAmount <= _previousBoost || _boostGrowing)
|
||||
return;
|
||||
|
||||
_boostGrowing = true;
|
||||
const int amountOfSteps = 6;
|
||||
|
||||
var difference = _boostAmount - _previousBoost;
|
||||
var differenceStep = difference/amountOfSteps;
|
||||
var differenceStepRest = difference%amountOfSteps;
|
||||
_boostAmount = _previousBoost;
|
||||
_boostRect.Width =
|
||||
(int) Math.Ceiling(MainManager.KeyboardManager.ActiveKeyboard.Width*Scale/100.00*_boostAmount);
|
||||
|
||||
for (var i = 0; i < amountOfSteps; i++)
|
||||
{
|
||||
if (differenceStepRest > 0)
|
||||
{
|
||||
differenceStepRest -= 1;
|
||||
_boostAmount += 1;
|
||||
_boostRect.Width =
|
||||
(int) Math.Ceiling(MainManager.KeyboardManager.ActiveKeyboard.Width*Scale/100.00*_boostAmount);
|
||||
}
|
||||
_boostAmount += differenceStep;
|
||||
_boostRect.Width =
|
||||
(int) Math.Ceiling(MainManager.KeyboardManager.ActiveKeyboard.Width*Scale/100.00*_boostAmount);
|
||||
|
||||
Thread.Sleep(50);
|
||||
}
|
||||
|
||||
_boostGrowing = false;
|
||||
}
|
||||
|
||||
public override Bitmap GenerateBitmap()
|
||||
{
|
||||
var bitmap = MainManager.KeyboardManager.ActiveKeyboard.KeyboardBitmap(Scale);
|
||||
if (_boostRect == null)
|
||||
return null;
|
||||
|
||||
using (var g = Graphics.FromImage(bitmap))
|
||||
{
|
||||
g.Clear(Color.Transparent);
|
||||
_boostRect.Draw(g);
|
||||
}
|
||||
return bitmap;
|
||||
}
|
||||
}
|
||||
ColorHelpers.ToDrawingColor(Settings.MainColor),
|
||||
ColorHelpers.ToDrawingColor(Settings.SecondaryColor)
|
||||
}, LinearGradientMode.Horizontal);
|
||||
|
||||
MemoryHelpers.GetPointers();
|
||||
_pointer = JsonConvert.DeserializeObject<GamePointersCollectionModel>(Offsets.Default.RocketLeague);
|
||||
|
||||
var tempProcess = MemoryHelpers.GetProcessIfRunning(ProcessName);
|
||||
_memory = new Memory(tempProcess);
|
||||
|
||||
Initialized = true;
|
||||
}
|
||||
|
||||
public override void Update()
|
||||
{
|
||||
if (_boostGrowing)
|
||||
return;
|
||||
if (_memory == null)
|
||||
return;
|
||||
|
||||
var offsets = _pointer.GameAddresses.First(ga => ga.Description == "Boost").ToString();
|
||||
var boostAddress = _memory.GetAddress("\"RocketLeague.exe\"" + offsets);
|
||||
var boostFloat = _memory.ReadFloat(boostAddress)*100/3;
|
||||
|
||||
_previousBoost = _boostAmount;
|
||||
_boostAmount = (int) Math.Ceiling(boostFloat);
|
||||
|
||||
// Take care of any reading errors resulting in an OutOfMemory on draw
|
||||
if (_boostAmount < 0)
|
||||
_boostAmount = 0;
|
||||
if (_boostAmount > 100)
|
||||
_boostAmount = 100;
|
||||
|
||||
_boostRect.Width =
|
||||
(int) Math.Ceiling(MainManager.KeyboardManager.ActiveKeyboard.Width*Scale/100.00*_boostAmount);
|
||||
|
||||
if (ContextualColor)
|
||||
{
|
||||
if(_boostAmount < 33)
|
||||
_boostRect.Colors = new List<Color>{ Color.Red };
|
||||
else if(_boostAmount >= 33 && _boostAmount < 66)
|
||||
_boostRect.Colors = new List<Color> { Color.Yellow };
|
||||
else if(_boostAmount >= 66)
|
||||
_boostRect.Colors = new List<Color> { Color.Lime };
|
||||
}
|
||||
else
|
||||
{
|
||||
_boostRect.Colors = new List<Color>
|
||||
{
|
||||
ColorHelpers.ToDrawingColor(Settings.MainColor),
|
||||
ColorHelpers.ToDrawingColor(Settings.SecondaryColor)
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Task.Run(() => GrowIfHigher());
|
||||
}
|
||||
|
||||
private void GrowIfHigher()
|
||||
{
|
||||
if (_boostAmount <= _previousBoost || _boostGrowing)
|
||||
return;
|
||||
|
||||
_boostGrowing = true;
|
||||
const int amountOfSteps = 6;
|
||||
|
||||
var difference = _boostAmount - _previousBoost;
|
||||
var differenceStep = difference/amountOfSteps;
|
||||
var differenceStepRest = difference%amountOfSteps;
|
||||
_boostAmount = _previousBoost;
|
||||
_boostRect.Width =
|
||||
(int) Math.Ceiling(MainManager.KeyboardManager.ActiveKeyboard.Width*Scale/100.00*_boostAmount);
|
||||
|
||||
for (var i = 0; i < amountOfSteps; i++)
|
||||
{
|
||||
if (differenceStepRest > 0)
|
||||
{
|
||||
differenceStepRest -= 1;
|
||||
_boostAmount += 1;
|
||||
_boostRect.Width =
|
||||
(int) Math.Ceiling(MainManager.KeyboardManager.ActiveKeyboard.Width*Scale/100.00*_boostAmount);
|
||||
}
|
||||
_boostAmount += differenceStep;
|
||||
_boostRect.Width =
|
||||
(int) Math.Ceiling(MainManager.KeyboardManager.ActiveKeyboard.Width*Scale/100.00*_boostAmount);
|
||||
|
||||
Thread.Sleep(50);
|
||||
}
|
||||
|
||||
_boostGrowing = false;
|
||||
}
|
||||
|
||||
public override Bitmap GenerateBitmap()
|
||||
{
|
||||
var bitmap = MainManager.KeyboardManager.ActiveKeyboard.KeyboardBitmap(Scale);
|
||||
if (_boostRect == null)
|
||||
return null;
|
||||
|
||||
using (var g = Graphics.FromImage(bitmap))
|
||||
{
|
||||
g.Clear(Color.Transparent);
|
||||
_boostRect.Draw(g);
|
||||
}
|
||||
return bitmap;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user