dev
This commit is contained in:
parent
fb02e3145a
commit
069a0fcebe
|
|
@ -0,0 +1,71 @@
|
||||||
|
using GameHandler.Extensions;
|
||||||
|
using GameModel;
|
||||||
|
using GameModel.Mocks;
|
||||||
|
using NUnit.Framework.Legacy;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace GameHandler.UnitTests.Extensions
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
internal class PinThrowExtensionTests
|
||||||
|
{
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void GetExpenseTriggers_SinkReturnsSinkTrigger()
|
||||||
|
{
|
||||||
|
var bs = BoardState.Create();
|
||||||
|
var pt = PinThrow.Create(PinPicture.Create(1,PinState.Down),false,true);
|
||||||
|
var tirgger = pt.GetExpenseTriggers(bs);
|
||||||
|
CollectionAssert.AreEqual(tirgger, new[] {ExpenseTrigger.Sink});
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void GetExpenseTriggers_SinkAndBellReturnsSinkAndBellTrigger()
|
||||||
|
{
|
||||||
|
var bs = BoardState.Create();
|
||||||
|
var pt = PinThrow.Create(PinPicture.Create(1, PinState.Down), true, true);
|
||||||
|
var tirgger = pt.GetExpenseTriggers(bs);
|
||||||
|
CollectionAssert.AreEqual(tirgger, new[] { ExpenseTrigger.Sink, ExpenseTrigger.Bell });
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void GetExpenseTriggers_NoWoodReturnsNoWoodTrigger()
|
||||||
|
{
|
||||||
|
var bs = BoardState.Create();
|
||||||
|
var pt = PinThrow.Create(PinPicture.Create(), false, false);
|
||||||
|
var tirgger = pt.GetExpenseTriggers(bs);
|
||||||
|
CollectionAssert.AreEqual(tirgger, new[] { ExpenseTrigger.NoWood });
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void GetExpenseTriggers_CircleReturnsCircleTrigger()
|
||||||
|
{
|
||||||
|
var bs = BoardState.Create();
|
||||||
|
var pt = PinThrow.Create(PinPicture.CreateCircle(), false, false);
|
||||||
|
var tirgger = pt.GetExpenseTriggers(bs);
|
||||||
|
CollectionAssert.AreEqual(tirgger, new[] { ExpenseTrigger.Circle });
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void GetExpenseTriggers_NineReturnsNineTrigger()
|
||||||
|
{
|
||||||
|
var bs = BoardState.Create();
|
||||||
|
var pt = PinThrow.Create(PinPicture.CreateAllPins(), false, false);
|
||||||
|
var tirgger = pt.GetExpenseTriggers(bs);
|
||||||
|
CollectionAssert.AreEqual(tirgger, new[] { ExpenseTrigger.NinePins });
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void GetExpenseTriggers_SinkAtStartReturnsSinkAtStartTrigger()
|
||||||
|
{
|
||||||
|
var bs = BoardState.Create(ThrowMode.Decrease);
|
||||||
|
var pt = PinThrow.Create(PinPicture.CreateAllPins(), false, true);
|
||||||
|
var tirgger = pt.GetExpenseTriggers(bs);
|
||||||
|
CollectionAssert.AreEqual(tirgger, new[] { ExpenseTrigger.FullSink });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -113,7 +113,7 @@ namespace GameHandler.UnitTests
|
||||||
public void PicturePlusSinkIsSamePicture()
|
public void PicturePlusSinkIsSamePicture()
|
||||||
{
|
{
|
||||||
var p = PinPicture.Create();
|
var p = PinPicture.Create();
|
||||||
var p2 = p + new PinThrow(null, false, true);
|
var p2 = p + PinThrow.Create(null, false, true);
|
||||||
Assert.That(p,Is.EqualTo(p2));
|
Assert.That(p,Is.EqualTo(p2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -135,31 +135,31 @@ namespace GameHandler.UnitTests
|
||||||
{
|
{
|
||||||
var p1 = PinPicture.Create();
|
var p1 = PinPicture.Create();
|
||||||
var throwPic1 = PinPicture.Create(1, PinState.Down);
|
var throwPic1 = PinPicture.Create(1, PinState.Down);
|
||||||
var pinThrow1 = new PinThrow(throwPic1, false, false);
|
var pinThrow1 = PinThrow.Create(throwPic1, false, false);
|
||||||
|
|
||||||
var throwPic2 = PinPicture.Create(2, PinState.Down);
|
var throwPic2 = PinPicture.Create(2, PinState.Down);
|
||||||
var pinThrow2 = new PinThrow(throwPic2, false, false);
|
var pinThrow2 = PinThrow.Create(throwPic2, false, false);
|
||||||
|
|
||||||
var throwPic3 = PinPicture.Create(3, PinState.Down);
|
var throwPic3 = PinPicture.Create(3, PinState.Down);
|
||||||
var pinThrow3 = new PinThrow(throwPic3, false, false);
|
var pinThrow3 = PinThrow.Create(throwPic3, false, false);
|
||||||
|
|
||||||
var throwPic4 = PinPicture.Create(4, PinState.Down);
|
var throwPic4 = PinPicture.Create(4, PinState.Down);
|
||||||
var pinThrow4 = new PinThrow(throwPic4, false, false);
|
var pinThrow4 = PinThrow.Create(throwPic4, false, false);
|
||||||
|
|
||||||
var throwPic5 = PinPicture.Create(5, PinState.Down);
|
var throwPic5 = PinPicture.Create(5, PinState.Down);
|
||||||
var pinThrow5 = new PinThrow(throwPic5, false, false);
|
var pinThrow5 = PinThrow.Create(throwPic5, false, false);
|
||||||
|
|
||||||
var throwPic6 = PinPicture.Create(6, PinState.Down);
|
var throwPic6 = PinPicture.Create(6, PinState.Down);
|
||||||
var pinThrow6 = new PinThrow(throwPic6, false, false);
|
var pinThrow6 = PinThrow.Create(throwPic6, false, false);
|
||||||
|
|
||||||
var throwPic7 = PinPicture.Create(7, PinState.Down);
|
var throwPic7 = PinPicture.Create(7, PinState.Down);
|
||||||
var pinThrow7 = new PinThrow(throwPic7, false, false);
|
var pinThrow7 = PinThrow.Create(throwPic7, false, false);
|
||||||
|
|
||||||
var throwPic8 = PinPicture.Create(8, PinState.Down);
|
var throwPic8 = PinPicture.Create(8, PinState.Down);
|
||||||
var pinThrow8 = new PinThrow(throwPic8, false, false);
|
var pinThrow8 = PinThrow.Create(throwPic8, false, false);
|
||||||
|
|
||||||
var throwPic9 = PinPicture.Create(9, PinState.Down);
|
var throwPic9 = PinPicture.Create(9, PinState.Down);
|
||||||
var pinThrow9 = new PinThrow(throwPic9, false, false);
|
var pinThrow9 = PinThrow.Create(throwPic9, false, false);
|
||||||
|
|
||||||
var p2 = p1 + pinThrow1;
|
var p2 = p1 + pinThrow1;
|
||||||
var p3 = p2 + pinThrow2;
|
var p3 = p2 + pinThrow2;
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ namespace GameHandler.UnitTests
|
||||||
public void AllNineThrow_IsNotIsNotCircle()
|
public void AllNineThrow_IsNotIsNotCircle()
|
||||||
{
|
{
|
||||||
var pic = new PinPicture(PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down);
|
var pic = new PinPicture(PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down);
|
||||||
var t = new PinThrow(pic,false,false);
|
var t = PinThrow.Create(pic,false,false);
|
||||||
|
|
||||||
Assert.That(t.IsSink, Is.False);
|
Assert.That(t.IsSink, Is.False);
|
||||||
Assert.That(t.IsNinePins, Is.True);
|
Assert.That(t.IsNinePins, Is.True);
|
||||||
|
|
@ -27,7 +27,7 @@ namespace GameHandler.UnitTests
|
||||||
public void SinkThrow_IsNothing()
|
public void SinkThrow_IsNothing()
|
||||||
{
|
{
|
||||||
var pic = new PinPicture(PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down);
|
var pic = new PinPicture(PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down);
|
||||||
var t = new PinThrow(pic, false, true);
|
var t = PinThrow.Create(pic, false, true);
|
||||||
|
|
||||||
Assert.That(t.IsSink, Is.True);
|
Assert.That(t.IsSink, Is.True);
|
||||||
Assert.That(t.IsNinePins, Is.False);
|
Assert.That(t.IsNinePins, Is.False);
|
||||||
|
|
@ -40,7 +40,7 @@ namespace GameHandler.UnitTests
|
||||||
public void Circle_IsNotAllNine()
|
public void Circle_IsNotAllNine()
|
||||||
{
|
{
|
||||||
var pic = new PinPicture(PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Up, PinState.Down, PinState.Down, PinState.Down, PinState.Down);
|
var pic = new PinPicture(PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Up, PinState.Down, PinState.Down, PinState.Down, PinState.Down);
|
||||||
var t = new PinThrow(pic, false, false);
|
var t = PinThrow.Create(pic, false, false);
|
||||||
|
|
||||||
Assert.That(t.IsSink, Is.False);
|
Assert.That(t.IsSink, Is.False);
|
||||||
Assert.That(t.IsNinePins, Is.False);
|
Assert.That(t.IsNinePins, Is.False);
|
||||||
|
|
@ -53,7 +53,7 @@ namespace GameHandler.UnitTests
|
||||||
public void NoWood_IsNotSink()
|
public void NoWood_IsNotSink()
|
||||||
{
|
{
|
||||||
var pic = new PinPicture(PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up);
|
var pic = new PinPicture(PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up);
|
||||||
var t = new PinThrow(pic, false, false);
|
var t = PinThrow.Create(pic, false, false);
|
||||||
Assert.That(t.IsSink, Is.False);
|
Assert.That(t.IsSink, Is.False);
|
||||||
Assert.That(t.IsNinePins, Is.False);
|
Assert.That(t.IsNinePins, Is.False);
|
||||||
Assert.That(t.IsCircle, Is.False);
|
Assert.That(t.IsCircle, Is.False);
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ namespace GameHandler.UnitTests
|
||||||
{
|
{
|
||||||
var bs = _th.Init(ThrowMode.Reposition);
|
var bs = _th.Init(ThrowMode.Reposition);
|
||||||
|
|
||||||
var bs2 = _th.Update(bs, new PinThrow(PinPicture.Create(2,PinState.Down),false,false));
|
var bs2 = _th.Update(bs, new PinThrow(1, PinPicture.Create(2,PinState.Down),false,false));
|
||||||
|
|
||||||
Assert.That(bs.PinPicture.UpCount, Is.EqualTo(9));
|
Assert.That(bs.PinPicture.UpCount, Is.EqualTo(9));
|
||||||
}
|
}
|
||||||
|
|
@ -33,8 +33,8 @@ namespace GameHandler.UnitTests
|
||||||
{
|
{
|
||||||
var bs = _th.Init(ThrowMode.Reposition);
|
var bs = _th.Init(ThrowMode.Reposition);
|
||||||
|
|
||||||
var bs2 = _th.Update(bs, new PinThrow(PinPicture.Create(2, PinState.Down), false, false));
|
var bs2 = _th.Update(bs, new PinThrow(1, PinPicture.Create(2, PinState.Down), false, false));
|
||||||
var bs3 = _th.Update(bs, new PinThrow(PinPicture.Create(2, PinState.Down), false, true));
|
var bs3 = _th.Update(bs, new PinThrow(1, PinPicture.Create(2, PinState.Down), false, true));
|
||||||
|
|
||||||
Assert.That(bs2, Is.EqualTo(bs3));
|
Assert.That(bs2, Is.EqualTo(bs3));
|
||||||
}
|
}
|
||||||
|
|
@ -44,10 +44,10 @@ namespace GameHandler.UnitTests
|
||||||
{
|
{
|
||||||
var bs = _th.Init(ThrowMode.Decrease);
|
var bs = _th.Init(ThrowMode.Decrease);
|
||||||
|
|
||||||
var bs2 = _th.Update(bs, new PinThrow(PinPicture.Create(2, PinState.Down), false, false));
|
var bs2 = _th.Update(bs, new PinThrow(1, PinPicture.Create(2, PinState.Down), false, false));
|
||||||
Assert.That(bs2.PinPicture.DownCount, Is.EqualTo(1));
|
Assert.That(bs2.PinPicture.DownCount, Is.EqualTo(1));
|
||||||
|
|
||||||
var bs3 = _th.Update(bs, new PinThrow(PinPicture.CreateAllPins(), false, false));
|
var bs3 = _th.Update(bs, new PinThrow(1, PinPicture.CreateAllPins(), false, false));
|
||||||
Assert.That(bs3.PinPicture.DownCount, Is.EqualTo(0));
|
Assert.That(bs3.PinPicture.DownCount, Is.EqualTo(0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
using GameContract;
|
using GameContract;
|
||||||
|
using GameHandler.Extensions;
|
||||||
|
using GameModel;
|
||||||
using GameModel.DeathGame;
|
using GameModel.DeathGame;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Numerics;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
|
@ -19,5 +22,48 @@ namespace GameHandler
|
||||||
_expenseRepository = expenseRepository;
|
_expenseRepository = expenseRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int[] PlayersAtGameStart;
|
||||||
|
private int[] PlayersInGame;
|
||||||
|
|
||||||
|
public void StartGame(int[] playerIds)
|
||||||
|
{
|
||||||
|
PlayersAtGameStart = playerIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ExpenseModel _expenseModel = new ExpenseModel(Array.Empty<MemberExpense>());
|
||||||
|
|
||||||
|
public ExpenseModel CheckThrow(BoardState currentState, PinThrow pinThrow)
|
||||||
|
{
|
||||||
|
var memberExpenses = new List<MemberExpense>(_expenseModel.MemberExpenses);
|
||||||
|
|
||||||
|
var triggers = pinThrow.GetExpenseTriggers(currentState);
|
||||||
|
if (currentState.ThrowMode == ThrowMode.Decrease && currentState.PinPicture.AllUp)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pinThrow.IsCircle)
|
||||||
|
{
|
||||||
|
var inversePlayers = PlayersAtGameStart.Where(_ => _ != pinThrow.PlayerId);
|
||||||
|
var destExpenses = _expenseRepository.GetAll().Where(_ => _.ExpenseTriggers.Any(tr => tr == ExpenseTrigger.Circle));
|
||||||
|
foreach (var expense in destExpenses)
|
||||||
|
{
|
||||||
|
if (expense.IsInverse)
|
||||||
|
{
|
||||||
|
foreach (var player in inversePlayers)
|
||||||
|
{
|
||||||
|
memberExpenses.Add(MemberExpense.Create(player, expense));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
memberExpenses.Add(MemberExpense.Create(pinThrow.PlayerId, expense));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return _expenseModel with { MemberExpenses = memberExpenses.ToArray() };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
using GameModel;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace GameHandler.Extensions
|
||||||
|
{
|
||||||
|
public static class PinThrowExtension
|
||||||
|
{
|
||||||
|
public static ExpenseTrigger[] GetExpenseTriggers(this PinThrow pinThrow, BoardState boardState)
|
||||||
|
{
|
||||||
|
var res = new List<ExpenseTrigger>();
|
||||||
|
if (pinThrow.IsSink)
|
||||||
|
{
|
||||||
|
if (boardState.PinPicture.AllUp && boardState.ThrowMode == ThrowMode.Decrease)
|
||||||
|
{
|
||||||
|
res.Add(ExpenseTrigger.FullSink);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
res.Add(ExpenseTrigger.Sink);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (pinThrow.IsNoWood)
|
||||||
|
{
|
||||||
|
res.Add(ExpenseTrigger.NoWood);
|
||||||
|
}
|
||||||
|
if (pinThrow.IsBell)
|
||||||
|
{
|
||||||
|
res.Add(ExpenseTrigger.Bell);
|
||||||
|
}
|
||||||
|
if (pinThrow.IsCircle)
|
||||||
|
{
|
||||||
|
res.Add(ExpenseTrigger.Circle);
|
||||||
|
}
|
||||||
|
if (pinThrow.IsNinePins)
|
||||||
|
{
|
||||||
|
res.Add(ExpenseTrigger.NinePins);
|
||||||
|
}
|
||||||
|
return res.ToArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -6,5 +6,16 @@ using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace GameModel
|
namespace GameModel
|
||||||
{
|
{
|
||||||
public record BoardState(ThrowMode ThrowMode, PinPicture PinPicture );
|
public record BoardState(ThrowMode ThrowMode, PinPicture PinPicture)
|
||||||
|
{
|
||||||
|
public static BoardState Create()
|
||||||
|
{
|
||||||
|
return new BoardState(ThrowMode.Reposition,PinPicture.Create());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BoardState Create(ThrowMode ThrowMode)
|
||||||
|
{
|
||||||
|
return new BoardState(ThrowMode, PinPicture.Create());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace GameModel
|
||||||
|
{
|
||||||
|
public record ExpenseModel(MemberExpense[] MemberExpenses)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -6,7 +6,11 @@ using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace GameModel
|
namespace GameModel
|
||||||
{
|
{
|
||||||
public record MemberExpense(Guid ExpenseGuid, int MemberId, ExpenseType ExpenseType)
|
public record MemberExpense(Guid ExpenseGuid, int MemberId, ExpenseType ExpenseType, DateTime Created)
|
||||||
{
|
{
|
||||||
|
public static MemberExpense Create(int MemberId, Expense Expense)
|
||||||
|
{
|
||||||
|
return new MemberExpense(Guid.NewGuid(), MemberId, Expense.ExpenseType, DateTime.Now);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -184,5 +184,11 @@ namespace GameModel
|
||||||
var states = new List<PinState>(new[] { PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down }).ToArray();
|
var states = new List<PinState>(new[] { PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down }).ToArray();
|
||||||
return PinPicture.Create(states);
|
return PinPicture.Create(states);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static PinPicture CreateCircle()
|
||||||
|
{
|
||||||
|
var states = new List<PinState>(new[] { PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Up, PinState.Down, PinState.Down, PinState.Down, PinState.Down }).ToArray();
|
||||||
|
return PinPicture.Create(states);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace GameModel
|
namespace GameModel
|
||||||
{
|
{
|
||||||
public record PinThrow(PinPicture PicPicture, bool IsBell, bool IsSink)
|
public record PinThrow(int PlayerId, PinPicture PicPicture, bool IsBell, bool IsSink)
|
||||||
{
|
{
|
||||||
public bool IsCircle => !IsSink && PicPicture.DownCount == 8 && (PicPicture[5] == PinState.Up);
|
public bool IsCircle => !IsSink && PicPicture.DownCount == 8 && (PicPicture[5] == PinState.Up);
|
||||||
|
|
||||||
|
|
@ -18,5 +18,15 @@ namespace GameModel
|
||||||
public int PinCount => IsSink ? 0 : PicPicture.DownCount;
|
public int PinCount => IsSink ? 0 : PicPicture.DownCount;
|
||||||
|
|
||||||
public bool IsNoWood => PicPicture.DownCount == 0 && !IsSink;
|
public bool IsNoWood => PicPicture.DownCount == 0 && !IsSink;
|
||||||
|
|
||||||
|
public static PinThrow Create(int PlayerId, PinPicture PicPicture, bool IsBell, bool IsSink)
|
||||||
|
{
|
||||||
|
return new PinThrow(PlayerId, PicPicture, IsBell, IsSink);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PinThrow Create(PinPicture PicPicture, bool IsBell, bool IsSink)
|
||||||
|
{
|
||||||
|
return Create(1, PicPicture, IsBell, IsSink);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue