Files
Std_Caisses/Caisses/Client.cs
T

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