KoogleV4/GameModel/Contracts/IGameHandler.cs

34 lines
959 B
C#

using GameModel;
using GameModel.Contracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GameModel.Contract
{
public delegate Task AsyncEventHandler<TEventArgs>(object? sender, TEventArgs e);
public interface IGameHandler
{
public const int INFINIT_THROWS = 9999;
static string GameName() => "Default Hello from IGameHandler";
ThrowMode ThrowMode() => GameModel.ThrowMode.Reposition;
int ThrowsPerRount() => INFINIT_THROWS;
bool FreePlayerSelection() => true;
IGameModel InitGameModel(int[] playerIds, IGameSettings gameSettings);
int GetCurrentPlayerId(IGameModel gameModel);
IGameModel Update(PinThrow pinThrow, IGameModel gameModel, BoardState boardStateBeforeUpdate,
ThrowState throwStateAfterUpdate);
event AsyncEventHandler<EventArgs>? GameExpenseOccured;
}
}