game2006api/webapp/mt/MapMode.php
aozhiwei 93305734b4 1
2024-08-20 17:39:59 +08:00

111 lines
2.4 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;
}
public static function isOpen($meta)
{
if (!$meta['is_open']) {
return false;
}
$isOpen = true;
switch ($meta['mapMode']) {
case self::GOLD_MODE:
{
$isOpen = myself()->_switchIsOpen('goldMode');
}
break;
case self::BET_MODE:
{
$isOpen = myself()->_switchIsOpen('bountyMode');
}
break;
case self::TREASURE_BOX_MODE:
{
$isOpen = myself()->_switchIsOpen('bigEventMode');
}
break;
default:
{
}
break;
}
return $isOpen;
}
protected static function getMetaList()
{
if (!self::$metaList) {
self::$metaList = getMetaTable('mapMode@mapMode.php');
}
return self::$metaList;
}
protected static $metaList;
}