dev
This commit is contained in:
parent
364223fdf5
commit
113f7bb561
|
|
@ -0,0 +1,13 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace GameContract
|
||||||
|
{
|
||||||
|
public interface IGameHandler
|
||||||
|
{
|
||||||
|
static string GetGameName() => "Default Hello from interface";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -47,7 +47,7 @@ namespace GameHandler.UnitTests
|
||||||
public void HandleThrow_UpdateTheBoardState()
|
public void HandleThrow_UpdateTheBoardState()
|
||||||
{
|
{
|
||||||
GameService service = new GameService();
|
GameService service = new GameService();
|
||||||
var ts1 = service.Start();
|
var ts1 = service.Start(1);
|
||||||
var bs1 = ts1.BoardState;
|
var bs1 = ts1.BoardState;
|
||||||
|
|
||||||
var pinThrow = PinThrow.Create(1,PinPicture.Create(1,PinState.Down), false, false);
|
var pinThrow = PinThrow.Create(1,PinPicture.Create(1,PinState.Down), false, false);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using GameModel;
|
using GameContract;
|
||||||
|
using GameModel;
|
||||||
using GameModel.DeathGame;
|
using GameModel.DeathGame;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
@ -11,7 +12,7 @@ namespace GameHandler.DeathGame
|
||||||
public delegate void CoffinCompleted(Coffin coffin);
|
public delegate void CoffinCompleted(Coffin coffin);
|
||||||
public delegate void FirstThrowFailed(Coffin coffin);
|
public delegate void FirstThrowFailed(Coffin coffin);
|
||||||
|
|
||||||
public class DeathGameHandler
|
public class DeathGameHandler : IGameHandler
|
||||||
{
|
{
|
||||||
const int MIN_PLAYER_COUNT = 3;
|
const int MIN_PLAYER_COUNT = 3;
|
||||||
const int MAX_PLAYER_COUNT = 12;
|
const int MAX_PLAYER_COUNT = 12;
|
||||||
|
|
@ -176,5 +177,10 @@ namespace GameHandler.DeathGame
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string GetGameName()
|
||||||
|
{
|
||||||
|
return "Totenkiste";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
using GameContract;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace GameHandler.GameHandler
|
||||||
|
{
|
||||||
|
public class FreeGameHandler : IGameHandler
|
||||||
|
{
|
||||||
|
public static string GetGameName()
|
||||||
|
{
|
||||||
|
return "Freies Spiel";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
using GameModel;
|
using GameContract;
|
||||||
|
using GameModel;
|
||||||
using GameModel.Exceptions;
|
using GameModel.Exceptions;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
|
@ -16,11 +18,16 @@ namespace GameHandler
|
||||||
private ThrowHandler _th;
|
private ThrowHandler _th;
|
||||||
private ThrowState _lastState;
|
private ThrowState _lastState;
|
||||||
|
|
||||||
|
public GameService()
|
||||||
|
{
|
||||||
|
LoadGameHandler();
|
||||||
|
}
|
||||||
|
|
||||||
public string ThrowModeName
|
public string ThrowModeName
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (_lastState != null)
|
if (_lastState != null)
|
||||||
{
|
{
|
||||||
return _lastState.BoardState.ThrowMode == ThrowMode.Decrease ? "Abräumen" : "Volle";
|
return _lastState.BoardState.ThrowMode == ThrowMode.Decrease ? "Abräumen" : "Volle";
|
||||||
}
|
}
|
||||||
|
|
@ -28,12 +35,12 @@ namespace GameHandler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ThrowState Start(int GameTypeId=0)
|
public ThrowState Start(string gameName) // TODO: add players
|
||||||
{
|
{
|
||||||
if (_isStarted)
|
if (_isStarted)
|
||||||
{
|
{
|
||||||
throw new InvalidGameStateExcpetion("Game already started");
|
throw new InvalidGameStateExcpetion("Game already started");
|
||||||
}
|
}
|
||||||
if (!_isStarted)
|
if (!_isStarted)
|
||||||
{
|
{
|
||||||
_isStarted = true;
|
_isStarted = true;
|
||||||
|
|
@ -48,7 +55,7 @@ namespace GameHandler
|
||||||
return _lastState;
|
return _lastState;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ThrowState HandleThrow(PinThrow pinThrow)
|
public ThrowState HandleThrow(PinThrow pinThrow)
|
||||||
{
|
{
|
||||||
if (!_isStarted)
|
if (!_isStarted)
|
||||||
{
|
{
|
||||||
|
|
@ -67,5 +74,24 @@ namespace GameHandler
|
||||||
}
|
}
|
||||||
_isStarted = false;
|
_isStarted = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Dictionary<string, Type> LoadGameHandler()
|
||||||
|
{
|
||||||
|
var res = new Dictionary<string, Type>();
|
||||||
|
var type = typeof(IGameHandler);
|
||||||
|
var types = AppDomain.CurrentDomain.GetAssemblies()
|
||||||
|
.SelectMany(s => s.GetTypes())
|
||||||
|
.Where(p => type.IsAssignableFrom(p) && (!p.IsInterface));
|
||||||
|
|
||||||
|
foreach (var item in types)
|
||||||
|
{
|
||||||
|
MethodInfo staticMethodInfo = item.GetMethod("GetGameName");
|
||||||
|
string returnValue = Convert.ToString(staticMethodInfo.Invoke(null, new object[] { }));
|
||||||
|
|
||||||
|
res.Add(returnValue, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace GameModel.FreeGame
|
||||||
|
{
|
||||||
|
public record FreeGameModel
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -8,26 +8,29 @@ using Spectre.Console;
|
||||||
using static System.Runtime.InteropServices.JavaScript.JSType;
|
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||||
|
|
||||||
AnsiConsole.MarkupLine("Welcome to [green]koogle[/]");
|
AnsiConsole.MarkupLine("Welcome to [green]koogle[/]");
|
||||||
|
ShowMainMenu();
|
||||||
do
|
void ShowMainMenu()
|
||||||
{
|
{
|
||||||
var option = AnsiConsole.Prompt(
|
do
|
||||||
new SelectionPrompt<Option>()
|
{
|
||||||
.Title("Was willst du tun?")
|
var option = AnsiConsole.Prompt(
|
||||||
.PageSize(10)
|
new SelectionPrompt<Option>()
|
||||||
.MoreChoicesText("[grey](Move up and down)[/]")
|
.Title("Was willst du tun?")
|
||||||
.AddChoices(new[] {
|
.PageSize(10)
|
||||||
|
.MoreChoicesText("[grey](Move up and down)[/]")
|
||||||
|
.AddChoices(new[] {
|
||||||
new Option("Neues Spiel",NewGameAction),
|
new Option("Neues Spiel",NewGameAction),
|
||||||
new Option("Stammdaten", MasterDataAction),
|
new Option("Stammdaten", MasterDataAction),
|
||||||
new Option("Beenden", null)
|
new Option("Beenden", null)
|
||||||
}));
|
}));
|
||||||
option.Action?.Invoke();
|
option.Action?.Invoke();
|
||||||
|
|
||||||
if (option.Name == "Beenden")
|
if (option.Name == "Beenden")
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} while (true) ;
|
} while (true);
|
||||||
|
}
|
||||||
|
|
||||||
void MasterDataAction()
|
void MasterDataAction()
|
||||||
{
|
{
|
||||||
|
|
@ -37,9 +40,40 @@ void MasterDataAction()
|
||||||
GameService _gs;
|
GameService _gs;
|
||||||
|
|
||||||
void NewGameAction()
|
void NewGameAction()
|
||||||
|
{
|
||||||
|
var option = string.Empty;
|
||||||
|
//do
|
||||||
|
//{
|
||||||
|
var games = GameService.LoadGameHandler().Keys.Order().ToList();
|
||||||
|
games.Add("Abbreche");
|
||||||
|
|
||||||
|
option = AnsiConsole.Prompt(
|
||||||
|
new SelectionPrompt<string>()
|
||||||
|
.Title("Was willst du tun?")
|
||||||
|
.PageSize(10)
|
||||||
|
.MoreChoicesText("[grey](Move up and down)[/]")
|
||||||
|
.AddChoices(games));
|
||||||
|
|
||||||
|
//if (option == "Abbrechen")
|
||||||
|
//{
|
||||||
|
// break;
|
||||||
|
//}
|
||||||
|
//} while (true);
|
||||||
|
|
||||||
|
if (option == "Abbrechen")
|
||||||
|
{
|
||||||
|
ShowMainMenu();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
StartGameAction(option);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StartGameAction(string gameName)
|
||||||
{
|
{
|
||||||
_gs = new GameService();
|
_gs = new GameService();
|
||||||
var bs = _gs.Start(1);
|
var bs = _gs.Start(gameName);
|
||||||
|
|
||||||
|
|
||||||
Show(bs);
|
Show(bs);
|
||||||
|
|
@ -73,8 +107,9 @@ void NewGameAction()
|
||||||
bs = _gs.HandleThrow(PinThrow.Create(throwData.Pindata, throwData.Bell, throwData.Sink, throwData.PlayerId));
|
bs = _gs.HandleThrow(PinThrow.Create(throwData.Pindata, throwData.Bell, throwData.Sink, throwData.PlayerId));
|
||||||
Show(bs);
|
Show(bs);
|
||||||
|
|
||||||
} while (true) ;
|
} while (true);
|
||||||
|
|
||||||
|
ShowMainMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Show(ThrowState throwState)
|
void Show(ThrowState throwState)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue