79 lines
2.2 KiB
C#
79 lines
2.2 KiB
C#
/*
|
|
* Rohmer Maxime
|
|
* STD Project
|
|
* 25/01/2023
|
|
* V1.0
|
|
* Client.cs
|
|
* Logic base for the client object
|
|
*/
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Caisses
|
|
{
|
|
public class Client
|
|
{
|
|
public const int MAX_SHOPPING_TIME = 100; //Original 100
|
|
public const int MIN_SHOPPING_TIME = 10; //Original 10
|
|
|
|
public enum ClientState
|
|
{
|
|
Shopping,
|
|
Waiting,
|
|
Inline,
|
|
Checkout,
|
|
}
|
|
|
|
private int _shoppingTime;
|
|
private int _waitingTime;
|
|
private int _checkoutTime;
|
|
private ClientState _state;
|
|
protected static Random Random;
|
|
public int ShoppingTime
|
|
{
|
|
get { return _shoppingTime; }
|
|
//set { _shoppingTime = value; if (_shoppingTime <= 0) { State = ClientState.Waiting; } }
|
|
set { _shoppingTime = value; }
|
|
}
|
|
public int WaitingTime { get => _waitingTime; set => _waitingTime = value; }
|
|
public ClientState State { get => _state; set => _state = value; }
|
|
public int CheckoutTime { get => _checkoutTime; set => _checkoutTime = value; }
|
|
|
|
public Client(Random random)
|
|
{
|
|
Random = random;
|
|
ShoppingTime = Random.Next(MIN_SHOPPING_TIME,MAX_SHOPPING_TIME);
|
|
CheckoutTime = ShoppingTime / 5;
|
|
State = ClientState.Shopping;
|
|
}
|
|
public void Tick()
|
|
{
|
|
switch (State)
|
|
{
|
|
case ClientState.Shopping:
|
|
ShoppingTime -= 1;
|
|
if (ShoppingTime <= 0)
|
|
{
|
|
State = ClientState.Waiting;
|
|
}
|
|
break;
|
|
case ClientState.Waiting:
|
|
WaitingTime += 1;
|
|
break;
|
|
case ClientState.Inline:
|
|
//We dont do anything when he is in a checkoutLine
|
|
break;
|
|
case ClientState.Checkout:
|
|
CheckoutTime -= 1;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|