simple commit
continuous-integration/drone/push Build is failing Details

pull/106/head
Ismail TAHA JANAN 3 years ago
parent dad0302e56
commit 6e6f999b09

@ -5,7 +5,7 @@ using Model.Dice.Faces;
namespace Model.Dice namespace Model.Dice
{ {
public abstract class AbstractDie<T> : RandomnessHaver where T : AbstractDieFace public abstract class AbstractDie<T,G> : RandomnessHaver where T : AbstractDieFace<G>
{ {
public IEnumerable<T> ListFaces => listFaces; public IEnumerable<T> ListFaces => listFaces;

@ -3,13 +3,14 @@ using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Drawing;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Model.Dice namespace Model.Dice
{ {
public class ColorDie : AbstractDie<AbstractDieFace> public class ColorDie : AbstractDie<ColorDieFace,Color>
{ {
public ColorDie(params ColorDieFace[] faces) : base(faces) public ColorDie(params ColorDieFace[] faces) : base(faces)
{ {

@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace Model.Dice.Faces namespace Model.Dice.Faces
{ {
public abstract class AbstractDieFace public abstract class AbstractDieFace<T>
{ {
/// <summary> /// <summary>
/// every die face has a value, and they can all be represented by an int, /// every die face has a value, and they can all be represented by an int,
@ -14,9 +14,14 @@ namespace Model.Dice.Faces
/// <br/> /// <br/>
/// USE GetPracticalValue for a Value specific to face type /// USE GetPracticalValue for a Value specific to face type
/// </summary> /// </summary>
public int Value { get; protected set; } public T Value { get; protected set; }
public abstract object GetPracticalValue(); public abstract T GetPracticalValue();
public AbstractDieFace(T value)
{
Value = value;
}
public override string ToString() public override string ToString()
{ {

@ -1,45 +1,26 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Model.Dice.Faces namespace Model.Dice.Faces
{ {
public class ColorDieFace : AbstractDieFace public class ColorDieFace : AbstractDieFace<Color>
{ {
private static readonly int MAX_HEX = 16777215;
/// <summary>
/// accepts hex strings like "ffbb84" and "#af567d" ([RRGGBB])
/// </summary>
/// <param name="hexValueString">hex string</param>
public ColorDieFace(string hexValueString)
{
// https://stackoverflow.com/questions/1139957/convert-integer-to-hexadecimal-and-back-again
// we remove any initial '#' before parsing
if (hexValueString.StartsWith('#'))
{
hexValueString = hexValueString[1..];
}
int result = int.Parse(hexValueString, System.Globalization.NumberStyles.HexNumber);
if (result < 0) Value = 0;
else if (result > MAX_HEX) Value = MAX_HEX;
else Value = result;
}
/// <summary> /// <summary>
/// accepts a decimal value that represents a color hex (0 is black, 65280 is green...)
/// </summary> /// </summary>
/// <param name="decimalValue"></param> /// <param name="hexValueString">Color type</param>
public ColorDieFace(int decimalValue) public ColorDieFace(Color hexValueString):base(hexValueString)
: this(decimalValue.ToString())
{} {}
public override object GetPracticalValue()
public override Color GetPracticalValue()
{ {
// https://stackoverflow.com/questions/1139957/convert-integer-to-hexadecimal-and-back-again // https://stackoverflow.com/questions/1139957/convert-integer-to-hexadecimal-and-back-again
return Value.ToString("X6").Insert(0, "#"); return Value;
} }
} }
} }

@ -7,21 +7,16 @@ using System.Threading.Tasks;
namespace Model.Dice.Faces namespace Model.Dice.Faces
{ {
public class ImageDieFace : AbstractDieFace public class ImageDieFace : AbstractDieFace<Uri>
{ {
public ImageDieFace(string uri) public ImageDieFace(Uri uri):base(uri)
{ {}
Value = int.Parse(Path.GetFileNameWithoutExtension(uri));
}
public ImageDieFace(int code)
{
Value = code;
}
public override object GetPracticalValue() public override Uri GetPracticalValue()
{ {
return string.Format($"Assets/images/{Value}.png"); return Value;
} }
} }
} }

@ -6,14 +6,12 @@ using System.Threading.Tasks;
namespace Model.Dice.Faces namespace Model.Dice.Faces
{ {
public class NumberDieFace : AbstractDieFace public class NumberDieFace : AbstractDieFace<int>
{ {
public NumberDieFace(int value) public NumberDieFace(int value):base(value)
{ {}
Value = value;
}
public override object GetPracticalValue() public override int GetPracticalValue()
{ {
return Value; return Value;
} }

@ -7,7 +7,7 @@ using System.Threading.Tasks;
namespace Model.Dice namespace Model.Dice
{ {
public class ImageDie : AbstractDie<AbstractDieFace> public class ImageDie : AbstractDie<ImageDieFace,Uri>
{ {
public ImageDie(params ImageDieFace[] faces) : base(faces) public ImageDie(params ImageDieFace[] faces) : base(faces)
{ {

@ -7,7 +7,7 @@ using System.Threading.Tasks;
namespace Model.Dice namespace Model.Dice
{ {
public class NumberDie : AbstractDie<AbstractDieFace> public class NumberDie : AbstractDie<NumberDieFace,int>
{ {
public NumberDie(params NumberDieFace[] faces) : base(faces) public NumberDie(params NumberDieFace[] faces) : base(faces)
{ {

Loading…
Cancel
Save