private void InterpertrateDivisionKey(IReadOnlyList<int> parts)
{
var gameDataModel = (TheDivisionDataModel) DataModel;
var keyCode = parts[1];
var rPer = parts[2];
var gPer = parts[3];
var bPer = parts[4];
// F1 to F4 indicate the player and his party. Blinks red on damage taken
if ((keyCode >= 59) && (keyCode <= 62))
{
var playerId = keyCode - 58;
PlayerState newState;
if (gPer > 10)
newState = PlayerState.Online;
else if (rPer > 10)
newState = PlayerState.Hit;
else
newState = PlayerState.Offline;
if (playerId == 1)
gameDataModel.LowHp = newState == PlayerState.Hit;
else if (playerId == 2)
gameDataModel.PartyMember1 = newState;
else if (playerId == 3)
gameDataModel.PartyMember2 = newState;
else if (playerId == 4)
gameDataModel.PartyMember3 = newState;
}
// R blinks white when low on ammo
else if (keyCode == 19)
{
_stickyAmmo.Value = (rPer == 100) && (gPer > 1) && (bPer > 1);
gameDataModel.LowAmmo = _stickyAmmo.Value;
}
// G turns white when holding a grenade, turns off when out of grenades
else if (keyCode == 34)
{
if ((rPer == 100) && (gPer < 10) && (bPer < 10))
gameDataModel.GrenadeState = GrenadeState.HasGrenade;
else if ((rPer == 100) && (gPer > 10) && (bPer > 10))
gameDataModel.GrenadeState = GrenadeState.GrenadeEquipped;
else
gameDataModel.GrenadeState = GrenadeState.HasNoGrenade;
}
// V blinks on low HP
else if (keyCode == 47)
{
_stickyHp.Value = (rPer == 100) && (gPer > 1) && (bPer > 1);
gameDataModel.LowHp = _stickyHp.Value;
}
}