81 lines
1.8 KiB
PHP
81 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace mt;
|
|
|
|
require_once('mt/ServerTaskTime.php');
|
|
require_once('mt/RankSeason.php');
|
|
|
|
class MapMode
|
|
{
|
|
const PRACTICE_MODE = 101;
|
|
const GOLD_MODE = 201;
|
|
const BET_MODE = 301;
|
|
const RANKING_MODE = 401;
|
|
const TREASURE_BOX_MODE = 501;
|
|
|
|
public static function find($id){
|
|
return getXVal(self::getMetaList(), $id);
|
|
}
|
|
|
|
public static function findByMapMode($modeId){
|
|
foreach (self::getMetaList() as $meta){
|
|
if ($meta['mapMode'] == $modeId){
|
|
return $meta;
|
|
}
|
|
}
|
|
return array();
|
|
}
|
|
|
|
public static function traverseMeta($cb)
|
|
{
|
|
foreach (self::getMetaList() as $meta) {
|
|
if (!$cb($meta)) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static function checkLimitTime($meta)
|
|
{
|
|
switch ($meta['limit_time']) {
|
|
case 1:
|
|
{
|
|
if ($meta['mapMode'] == self::RANKING_MODE) {
|
|
$currentSeasonMeta = RankSeason::getCurrentSeason();
|
|
if (empty($currentSeasonMeta)) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case 2:
|
|
{
|
|
if ($meta['mapMode'] == self::TREASURE_BOX_MODE) {
|
|
$currentServerTask = ServerTaskTime::getCurrentTime();
|
|
if (empty($currentServerTask)) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
{
|
|
return true;
|
|
}
|
|
break;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
protected static function getMetaList()
|
|
{
|
|
if (!self::$metaList) {
|
|
self::$metaList = getMetaTable('mapMode@mapMode.php');
|
|
}
|
|
return self::$metaList;
|
|
}
|
|
|
|
protected static $metaList;
|
|
|
|
}
|