2022-07-05 15:55:47 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace DNW\Skills;
|
2010-08-28 22:05:41 -04:00
|
|
|
|
2010-10-08 21:44:36 -04:00
|
|
|
/**
|
|
|
|
* Represents a player who has a Rating.
|
|
|
|
*/
|
2022-07-05 16:21:06 +02:00
|
|
|
class Player implements ISupportPartialPlay, ISupportPartialUpdate, \Stringable
|
2010-08-28 22:05:41 -04:00
|
|
|
{
|
2022-07-05 16:21:06 +02:00
|
|
|
final const DEFAULT_PARTIAL_PLAY_PERCENTAGE = 1.0; // = 100% play time
|
2022-07-05 15:55:47 +02:00
|
|
|
|
2022-07-05 16:21:06 +02:00
|
|
|
final const DEFAULT_PARTIAL_UPDATE_PERCENTAGE = 1.0;
|
2022-07-05 15:55:47 +02:00
|
|
|
|
2010-08-28 22:05:41 -04:00
|
|
|
private $_PartialPlayPercentage;
|
2022-07-05 15:55:47 +02:00
|
|
|
|
2010-08-28 22:05:41 -04:00
|
|
|
private $_PartialUpdatePercentage;
|
|
|
|
|
2010-10-08 21:44:36 -04:00
|
|
|
/**
|
|
|
|
* Constructs a player.
|
2016-05-24 14:10:39 +02:00
|
|
|
*
|
2022-07-05 16:32:18 +02:00
|
|
|
* @param mixed $_Id The identifier for the player, such as a name.
|
2022-07-05 15:55:47 +02:00
|
|
|
* @param number $partialPlayPercentage The weight percentage to give this player when calculating a new rank.
|
|
|
|
* @param number $partialUpdatePercentage Indicated how much of a skill update a player should receive where 0 represents no update and 1.0 represents 100% of the update.
|
2010-10-08 21:44:36 -04:00
|
|
|
*/
|
2022-07-05 16:21:06 +02:00
|
|
|
public function __construct(private $_Id,
|
2010-08-28 22:05:41 -04:00
|
|
|
$partialPlayPercentage = self::DEFAULT_PARTIAL_PLAY_PERCENTAGE,
|
|
|
|
$partialUpdatePercentage = self::DEFAULT_PARTIAL_UPDATE_PERCENTAGE)
|
|
|
|
{
|
|
|
|
// If they don't want to give a player an id, that's ok...
|
2022-07-05 15:55:47 +02:00
|
|
|
Guard::argumentInRangeInclusive($partialPlayPercentage, 0.0, 1.0, 'partialPlayPercentage');
|
|
|
|
Guard::argumentInRangeInclusive($partialUpdatePercentage, 0, 1.0, 'partialUpdatePercentage');
|
2010-08-28 22:05:41 -04:00
|
|
|
$this->_PartialPlayPercentage = $partialPlayPercentage;
|
|
|
|
$this->_PartialUpdatePercentage = $partialUpdatePercentage;
|
|
|
|
}
|
|
|
|
|
2010-10-08 21:44:36 -04:00
|
|
|
/**
|
|
|
|
* The identifier for the player, such as a name.
|
|
|
|
*/
|
2016-05-24 16:31:21 +02:00
|
|
|
public function getId()
|
2010-08-28 22:05:41 -04:00
|
|
|
{
|
|
|
|
return $this->_Id;
|
|
|
|
}
|
2016-05-24 14:10:39 +02:00
|
|
|
|
2010-10-08 21:44:36 -04:00
|
|
|
/**
|
|
|
|
* Indicates the percent of the time the player should be weighted where 0.0 indicates the player didn't play and 1.0 indicates the player played 100% of the time.
|
|
|
|
*/
|
2010-08-28 22:05:41 -04:00
|
|
|
public function getPartialPlayPercentage()
|
|
|
|
{
|
|
|
|
return $this->_PartialPlayPercentage;
|
|
|
|
}
|
2016-05-24 14:10:39 +02:00
|
|
|
|
2010-10-08 21:44:36 -04:00
|
|
|
/**
|
|
|
|
* Indicated how much of a skill update a player should receive where 0.0 represents no update and 1.0 represents 100% of the update.
|
|
|
|
*/
|
2010-08-28 22:05:41 -04:00
|
|
|
public function getPartialUpdatePercentage()
|
|
|
|
{
|
|
|
|
return $this->_PartialUpdatePercentage;
|
|
|
|
}
|
2016-05-24 14:10:39 +02:00
|
|
|
|
2022-07-05 16:21:06 +02:00
|
|
|
public function __toString(): string
|
2010-08-28 22:05:41 -04:00
|
|
|
{
|
2022-07-05 15:55:47 +02:00
|
|
|
return (string) $this->_Id;
|
2010-08-28 22:05:41 -04:00
|
|
|
}
|
2022-07-05 15:55:47 +02:00
|
|
|
}
|