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
{
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;

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

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

@ -1,45 +1,26 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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);
/// <param name="hexValueString">Color type</param>
public ColorDieFace(Color hexValueString):base(hexValueString)
{}
if (result < 0) Value = 0;
else if (result > MAX_HEX) Value = MAX_HEX;
else Value = result;
}
/// <summary>
/// accepts a decimal value that represents a color hex (0 is black, 65280 is green...)
/// </summary>
/// <param name="decimalValue"></param>
public ColorDieFace(int decimalValue)
: this(decimalValue.ToString())
{ }
public override object GetPracticalValue()
public override Color GetPracticalValue()
{
// 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
{
public class ImageDieFace : AbstractDieFace
public class ImageDieFace : AbstractDieFace<Uri>
{
public ImageDieFace(string uri)
{
Value = int.Parse(Path.GetFileNameWithoutExtension(uri));
}
public ImageDieFace(Uri uri):base(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
{
public class NumberDieFace : AbstractDieFace
public class NumberDieFace : AbstractDieFace<int>
{
public NumberDieFace(int value)
{
Value = value;
}
public NumberDieFace(int value):base(value)
{}
public override object GetPracticalValue()
public override int GetPracticalValue()
{
return Value;
}

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

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

Loading…
Cancel
Save