game2006api/webapp/mt/Rank.php
2022-10-13 15:52:13 +08:00

97 lines
2.5 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( &$newRank, &$newScore)
{
$meta = self::getMetaListNew();
for ($i=1;$i<=count($meta);$i++){
if ($i==1){
$newScore = max($newScore,$meta[$i]['rank_score']);
}
if ($i == count($meta)){
$newScore = min($newScore,$meta[$i]['rank_score']);
}
if ($meta[$i+1]){
if($newScore>=$meta[$i]['rank_score'] && $newScore<$meta[$i+1]['rank_score']){
$newRank = $meta[$i]['id'];
}
}else{
if($newScore>=$meta[$i]['rank_score']){
$newRank = $meta[$i]['id'];
}
}
}
// $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('rankRank@rankRank.php');
}
return self::$metaListNew;
}
protected static $metaList;
protected static $metaListNew;
}