/// id
///
public $id = 0;
///
/// 类型
///
public $type = 0;
///
/// 命令码
///
public $cmd = 0;
///
/// 参数集
///
public $paras = array();
///
/// 当前计数
///
public $cur = 0;
///
/// 最大计数
///
public $max = 0;
///
/// 触发任务
///
public $next = 0;
///
/// 最低等级
///
public $minlv = 0;
/**
* 所属任务卡
* @var type
*/
public $card = 0;
/**
* 扩展数据
* @var type
*/
public $exdatas = array();
function initialize($value) {
CommUtil::loadObject($value, $this);
}
///
/// 是否完成
///
public function isFinish() {
return $this->cur >= $this->max;
}
///
/// 由原始模型执行初始化
///
///
///
public static function initFromMo($mo) {
$mis = new MisStatus();
$mis->id = $mo->id;
$mis->type = $mo->type;
$mis->cmd = $mo->cmd;
$mis->paras = strsplit($mo->paras);
$mis->cur = self::calcStatusCur($mo);
$mis->max = $mo->num;
$mis->next = $mo->next;
$mis->minlv = $mo->minlv;
return $mis;
}
/**
* 是否状态型任务
* @param type $cmd
*/
static function isStatusType($cmd) {
return
$cmd == MissEventCode::Evn_User_Levelup ||
$cmd == MissEventCode::SEvn_Habitat_Own ||
$cmd == MissEventCode::SEvn_Farm_Own ||
$cmd == MissEventCode::SEvn_Build_Own ||
$cmd == MissEventCode::SEvn_Pet ||
$cmd == MissEventCode::SEvn_Explore_GridOwn;
}
/**
* 自动对齐可能出现统计失误的状态型任务计数
*/
function autoCalcStatusCur() {
if (self::isStatusType($this->cmd)) {
$mo = dataCenter()->getMissionConst($this->id);
if ($mo != null) {
$cur = self::calcStatusCur($mo);
if ($this->cur < $cur) {
$this->cur = $cur;
}
if ($this->max > $mo->num) {
$this->max = $mo->num;
}
}
}
}
static function calcStatusCur($mo) {
$paras = strsplit($mo->paras);
$para0 = "";
$para1 = "";
$para2 = "";
if (array_count($paras) >= 1) {
$para0 = $paras[0];
}
if (array_count($paras) >= 2) {
$para1 = $paras[1];
}
if (array_count($paras) >= 3) {
$para2 = $paras[2];
}
switch ($mo->cmd) {
case MissEventCode::Evn_User_Levelup: // 第一个状态事件
return usrInfo()->baseInfo()->level;
case MissEventCode::SEvn_Habitat_Own:
return MissProc::GetBuildingNum(INIT_HABITID, $para0, $para1);
case MissEventCode:: SEvn_Farm_Own:
return MissProc::GetBuildingNum(INIT_Farm, $para0, $para1);
case MissEventCode:: SEvn_Build_Own:
return MissProc::GetBuildingNum($para0, $para1, $para2);
case MissEventCode:: SEvn_Pet:
return MissProc::GetPetNum($para0, $para1, $para2);
case MissEventCode:: SEvn_Explore_GridOwn:
return MissProc::GetExlporeGridNum($para0);
}
return 0;
}
}