Skip to content

Commit

Permalink
Misc: smaller enhancements
Browse files Browse the repository at this point in the history
  • Loading branch information
Arcidev committed Feb 1, 2019
1 parent b4deb43 commit d2e444c
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 77 deletions.
4 changes: 2 additions & 2 deletions Client/Client.csproj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
Expand Down Expand Up @@ -28,7 +28,7 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<LangVersion>7.3</LangVersion>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
Expand Down
8 changes: 4 additions & 4 deletions Client/Game/ClientGame.cs
Original file line number Diff line number Diff line change
Expand Up @@ -229,11 +229,11 @@ public bool SetPossibleSpellTargets()

public PlayableCard GetCardByImageControlName(string imageControlName)
{
var cardPair = Player.GetCardByImageControlName(imageControlName);
if (cardPair.Item1 != null)
return cardPair.Item1;
var (card, image) = Player.GetCardByImageControlName(imageControlName);
if (card != null)
return card;

return Opponent.GetCardByImageControlName(imageControlName).Item1;
return Opponent.GetCardByImageControlName(imageControlName).card;
}

private async Task UpdateAsync()
Expand Down
142 changes: 71 additions & 71 deletions Client/Game/Player.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ namespace Client.Game
public class Player
{
private readonly ClientGame game;
private readonly ValueTuple<PlayableCard, Image>[] cardDeck;
private readonly (PlayableCard card, Image image)[] cardDeck;
private Dictionary<UInt64, PlayableCard> cards;

public UInt32 Id { get; set; }
Expand All @@ -22,9 +22,9 @@ public class Player

public int ActiveCardPosition { get; private set; }

public PlayableCard ActiveCard => cardDeck[ActiveCardPosition].Item1;
public PlayableCard ActiveCard => cardDeck[ActiveCardPosition].card;

public IEnumerable<PlayableCard> CardDeck => cardDeck.Select(x => x.Item1);
public IEnumerable<PlayableCard> CardDeck => cardDeck.Select(x => x.card);

public Player(ClientGame clientGame, params Image[] imageLocations)
{
Expand Down Expand Up @@ -55,8 +55,8 @@ public void PutCardsOnDeck(UInt64[] cardGuids)
{
Invoke(() =>
{
cardDeck[i].Item1 = card;
cardDeck[i].Item2.Source = card.Image;
cardDeck[i].card = card;
cardDeck[i].image.Source = card.Image;
});
}
}
Expand All @@ -66,8 +66,8 @@ public void PutCardsOnDeck(UInt64[] cardGuids)
{
Invoke(() =>
{
cardDeck[i].Item1 = null;
cardDeck[i].Item2.Source = new BitmapImage(new Uri(i < availableCardsCount ? "Assets/CardBack.png" : "Assets/CardBackGrayscale.png", UriKind.Relative));
cardDeck[i].card = null;
cardDeck[i].image.Source = new BitmapImage(new Uri(i < availableCardsCount ? "Assets/CardBack.png" : "Assets/CardBackGrayscale.png", UriKind.Relative));
});
}
}
Expand All @@ -85,22 +85,22 @@ public void SetPossibleTargets(IEnumerable<UInt64> targetableCards)
public void DeselectSpellFriendlyTargets()
{
var activeCardDeck = cardDeck[ActiveCardPosition];
if (activeCardDeck.Item1.SelectionType != SelectionType.Selected)
if (activeCardDeck.card.SelectionType != SelectionType.Selected)
{
Invoke(() =>
{
activeCardDeck.Item1.SelectionType = SelectionType.Selected;
activeCardDeck.Item2.Source = activeCardDeck.Item1.Image;
activeCardDeck.card.SelectionType = SelectionType.Selected;
activeCardDeck.image.Source = activeCardDeck.card.Image;
});

foreach(var card in cardDeck.Where(x => x.Item1 != null))
foreach(var card in cardDeck.Where(x => x.card != null))
{
if (card.Item1.SelectionType == SelectionType.SpellUsable)
if (card.card.SelectionType == SelectionType.SpellUsable)
{
Invoke(() =>
{
card.Item1.SelectionType = SelectionType.None;
card.Item2.Source = card.Item1.Image;
card.card.SelectionType = SelectionType.None;
card.image.Source = card.card.Image;
});
}
}
Expand All @@ -110,25 +110,25 @@ public void DeselectSpellFriendlyTargets()
// Remove selection
public void RemoveSelectionFromCards()
{
foreach (var card in cardDeck.Where(x => x.Item1 != null && x.Item1.SelectionType != SelectionType.None))
foreach (var card in cardDeck.Where(x => x.card != null && x.card.SelectionType != SelectionType.None))
{
Invoke(() =>
{
card.Item1.SelectionType = SelectionType.None;
card.Item2.Source = card.Item1.Image;
card.card.SelectionType = SelectionType.None;
card.image.Source = card.card.Image;
});
}
}

// Selects possible targets
public void SelectPossibleTargets(IEnumerable<UInt64> targetableCards, SelectionType selection)
{
foreach (var card in cardDeck.Where(x => x.Item1 != null && targetableCards.Contains(x.Item1.Guid)))
foreach (var card in cardDeck.Where(x => x.card != null && targetableCards.Contains(x.card.Guid)))
{
Invoke(() =>
{
card.Item1.SelectionType = selection;
card.Item2.Source = card.Item1.Image;
card.card.SelectionType = selection;
card.image.Source = card.card.Image;
});
}
}
Expand All @@ -139,23 +139,23 @@ public void SetActiveState(UInt64 cardGuid)
IsActive = true;
for(var i = 0; i < cardDeck.Length; i++)
{
var c = cardDeck[i];
if (c.Item1 == null)
var (card, image) = cardDeck[i];
if (card == null)
continue;

var select = SelectionType.None;
if (c.Item1.Guid == cardGuid)
if (card.Guid == cardGuid)
{
ActiveCardPosition = i;
select = SelectionType.Selected;
}

if (c.Item1.SelectionType != select)
if (card.SelectionType != select)
{
Invoke(() =>
{
c.Item1.SelectionType = select;
c.Item2.Source = c.Item1.Image;
card.SelectionType = select;
image.Source = card.Image;
});
}
}
Expand All @@ -169,27 +169,27 @@ public void SetWaitingState()
}

// Gets card by control name
public (PlayableCard, Image) GetCardByImageControlName(string name)
public (PlayableCard card, Image image) GetCardByImageControlName(string name)
{
return cardDeck.FirstOrDefault(x => x.Item2.Name == name);
return cardDeck.FirstOrDefault(x => x.image.Name == name);
}

// Attacks card
public void AttackCard(UInt64 guid, byte damage, CombatLogTypes combatLogType, bool isPeriodicDamage)
{
var cardPair = cardDeck.FirstOrDefault(x => x.Item1?.Guid == guid);
if (cardPair.Item1 == null)
var (card, image) = cardDeck.FirstOrDefault(x => x.card?.Guid == guid);
if (card == null)
return;

if (isPeriodicDamage)
game.Chat.LogPeriodicDamage(cardPair.Item1, damage, true);
game.Chat.LogPeriodicDamage(card, damage, true);
else
game.Chat.LogDamage(combatLogType, game.GetOpponent(Id).ActiveCard, cardPair.Item1, damage, true);
game.Chat.LogDamage(combatLogType, game.GetOpponent(Id).ActiveCard, card, damage, true);

Invoke(() =>
{
cardPair.Item1.Hp -= damage;
cardPair.Item2.Source = cardPair.Item1.Image;
card.Hp -= damage;
image.Source = card.Image;
});
}

Expand All @@ -210,15 +210,15 @@ public void DestroyCard(UInt64 guid, byte damage, CombatLogTypes combatLogType,
// Modifies card stat
public void ModifyCardStat(UInt64 cardGuid, CardStats cardStat, sbyte value)
{
var cardPair = cardDeck.FirstOrDefault(x => x.Item1?.Guid == cardGuid);
if (cardPair.Item1 == null)
var (card, image) = cardDeck.FirstOrDefault(x => x.card?.Guid == cardGuid);
if (card == null)
return;

game.Chat.LogStatChange(cardStat, cardPair.Item1, value);
game.Chat.LogStatChange(cardStat, card, value);
Invoke(() =>
{
cardPair.Item1.ApplyModifier(cardStat, value);
cardPair.Item2.Source = cardPair.Item1.Image;
card.ApplyModifier(cardStat, value);
image.Source = card.Image;
});
}

Expand All @@ -231,27 +231,27 @@ public bool CanCastSpell()
// Adds aura to creature
public void ApplyAura(UInt64 cardGuid, UInt32 spellId)
{
var cardPair = cardDeck.FirstOrDefault(x => x.Item1?.Guid == cardGuid);
if (cardPair.Item1 == null)
var (card, image) = cardDeck.FirstOrDefault(x => x.card?.Guid == cardGuid);
if (card == null)
return;

var spellData = DataHolder.GetSpellData(spellId);
game.Chat.LogApplyAura(cardPair.Item1, spellData);
game.Chat.LogApplyAura(card, spellData);

/// TODO: add some graphics effect
}

// Removes aura from creature
public void ExpireAuras(UInt64 cardGuid, UInt32[] spellIds)
{
var cardPair = cardDeck.FirstOrDefault(x => x.Item1?.Guid == cardGuid);
if (cardPair.Item1 == null)
var (card, image) = cardDeck.FirstOrDefault(x => x.card?.Guid == cardGuid);
if (card == null)
return;

foreach(var spellId in spellIds)
{
var spellData = DataHolder.GetSpellData(spellId);
game.Chat.LogExpireAura(cardPair.Item1, spellData);
game.Chat.LogExpireAura(card, spellData);

/// TODO: add some graphics effect
}
Expand All @@ -260,36 +260,36 @@ public void ExpireAuras(UInt64 cardGuid, UInt32[] spellIds)
// Heals card
public void HealCard(UInt64 cardGuid, byte health, byte amount)
{
var cardPair = cardDeck.FirstOrDefault(x => x.Item1?.Guid == cardGuid);
if (cardPair.Item1 == null)
var (card, image) = cardDeck.FirstOrDefault(x => x.card?.Guid == cardGuid);
if (card == null)
return;

game.Chat.LogHeal(cardPair.Item1, amount);
game.Chat.LogHeal(card, amount);
Invoke(() =>
{
cardPair.Item1.Hp = health;
cardPair.Item2.Source = cardPair.Item1.Image;
card.Hp = health;
image.Source = card.Image;
});
}

// Consumes mana from card and logs it into comba log
public void HandleSuccessfulSpellCast(UInt64 cardGuid, UInt32 spellId, byte mana, byte manaCost)
{
var cardPair = cardDeck.FirstOrDefault(x => x.Item1?.Guid == cardGuid);
if (cardPair.Item1 == null)
var cardPair = cardDeck.FirstOrDefault(x => x.card?.Guid == cardGuid);
if (cardPair.card == null)
return;

var spellData = DataHolder.GetSpellData(spellId);
game.Chat.LogManaConsume(cardPair.Item1, spellData, manaCost);
game.Chat.LogManaConsume(cardPair.card, spellData, manaCost);

SetCardMana(cardPair, mana);
}

// Sets cards mana
public void SetCardMana(UInt64 cardGuid, byte mana)
{
var cardPair = cardDeck.FirstOrDefault(x => x.Item1?.Guid == cardGuid);
if (cardPair.Item1 == null)
var cardPair = cardDeck.FirstOrDefault(x => x.card?.Guid == cardGuid);
if (cardPair.card == null)
return;

SetCardMana(cardPair, mana);
Expand All @@ -298,33 +298,33 @@ public void SetCardMana(UInt64 cardGuid, byte mana)
// Morphs card
public void MorphCard(UInt64 cardGuid, Card cardTemplate, byte mana, bool isMorph)
{
var cardPair = cardDeck.FirstOrDefault(x => x.Item1?.Guid == cardGuid);
if (cardPair.Item1 == null)
var (card, image) = cardDeck.FirstOrDefault(x => x.card?.Guid == cardGuid);
if (card == null)
return;

game.Chat.LogMorph(cardPair.Item1, cardTemplate, isMorph);
game.Chat.LogMorph(card, cardTemplate, isMorph);
Invoke(() =>
{
cardPair.Item1.UnloadImages();
cardPair.Item1.Id = cardTemplate.Id;
cardPair.Item1.ImageUri = cardTemplate.ImageUri;
cardPair.Item1.Type = cardTemplate.Type;
cardPair.Item1.Spell = cardTemplate.Spell;
cardPair.Item1.Name = cardTemplate.Name;
cardPair.Item1.Damage = cardTemplate.Damage;
cardPair.Item1.Defense = cardTemplate.Defense;
cardPair.Item1.Mana = mana;
cardPair.Item2.Source = cardPair.Item1.Image;
card.UnloadImages();
card.Id = cardTemplate.Id;
card.ImageUri = cardTemplate.ImageUri;
card.Type = cardTemplate.Type;
card.Spell = cardTemplate.Spell;
card.Name = cardTemplate.Name;
card.Damage = cardTemplate.Damage;
card.Defense = cardTemplate.Defense;
card.Mana = mana;
image.Source = card.Image;
});
}

// Sets card mana
private void SetCardMana((PlayableCard, Image) cardPair, byte mana)
private void SetCardMana((PlayableCard card, Image image) cardPair, byte mana)
{
Invoke(() =>
{
cardPair.Item1.Mana = mana;
cardPair.Item2.Source = cardPair.Item1.Image;
cardPair.card.Mana = mana;
cardPair.image.Source = cardPair.card.Image;
});
}
}
Expand Down

0 comments on commit d2e444c

Please sign in to comment.