game2006api/webapp/mt/Rank.php
2022-10-10 17:39:05 +08:00

78 lines
1.9 KiB
PHP

<?php
namespace mt;
use phpcommon;
class Rank {
public static function get($id)
{
return getXVal(self::getMetaList(), $id);
}
public static function getRankById($id)
{
return getXVal(self::getMetaListNew(), $id);
}
public static function getNextRankById($id)
{
return getXVal(self::getMetaListNew(), $id+1);
}
public static function getMaxRank()
{
$temp = array();
foreach (self::getMetaListNew() as $mate){
array_push($temp,$mate['id']);
}
return self::getRankById(max($temp));
}
public static function getInitRank()
{
return self::get(1);
}
public static function calcNewRankAndScore($oldRank, $oldScore, &$newRank, &$newScore, $addScore)
{
$currRankMeta = self::get($oldRank);
if ($currRankMeta && $currRankMeta['max_score'] > 0) {
$newScore = min($oldScore, $currRankMeta['max_score']) + $addScore;
do {
if ($newScore > $currRankMeta['max_score']) {
++$newRank;
$currRankMeta = self::get($newRank);
if ($currRankMeta['max_score'] < 0) {
$newScore = $currRankMeta['min_score'];
break;
}
} else {
break;
}
} while ($currRankMeta);
}
}
protected static function getMetaList()
{
if (!self::$metaList) {
self::$metaList = getMetaTable('rank@rank.php');
}
return self::$metaList;
}
protected static function getMetaListNew()
{
if (!self::$metaListNew) {
self::$metaListNew = getMetaTable('pveGeminiMode@rankRank.php');
}
return self::$metaListNew;
}
protected static $metaList;
protected static $metaListNew;
}