game2005api/webapp/controller/MissionController.class.php
2021-12-01 19:13:48 +08:00

114 lines
3.3 KiB
PHP

<?php
require_once('mt/Shop.php');
require_once('mt/ShopGoods.php');
require_once('mt/Hero.php');
require_once('mt/Item.php');
require_once('mt/Parameter.php');
require_once('mt/Drop.php');
require_once('mt/Task.php');
require_once('models/User.php');
require_once('models/Hero.php');
require_once('models/Bag.php');
require_once('models/HeroSkin.php');
require_once('models/GunSkin.php');
require_once('models/ShopBuyRecord.php');
require_once('models/Mission.php');
require_once('services/AwardService.php');
require_once('services/PropertyChgService.php');
use phpcommon\SqlHelper;
use models\User;
use models\Bag;
use models\Hero;
use models\HeroSkin;
use models\GunSkin;
use models\ShopBuyRecord;
use models\Mission;
class MissionController extends BaseAuthedController {
public function missionList()
{
$missionMetaList = array();
$missionHash = Mission::allToHash();
$missionDtoList = array();
foreach ($missionMetaList as $missionMeta) {
$missionDb = getXVal($missionHash, $missionId, null);
$missionDto = $this->getMissionDto($missionDb, $missionMeta);
array_push($missionDtoList, $missionDto);
}
$this->_rspData(array(
'mission_list' => $missionDtoList
));
}
public function commitMission()
{
$missionId = getReqVal('mission_id', 0);
$missionMeta = mt\Task::get($missionId);
if (!$missionMeta) {
$this->_rspErr(1, 'mission_id参数错误');
return;
}
$missionDb = Mission::find($missionId);
$missionDto = $this->getMissionDto($missionDb, $missionMeta);
if (!$missionDto) {
$this->_rspErr(10, '服务器内部错误');
return;
}
if ($missionDto[state] == Mission::RECEIVED_STATE) {
$this->_rspErr(2, '不能重复领取');
return;
}
if ($missionDto[state] == Mission::NOT_FINISHED_STATE) {
$this->_rspErr(3, '任务目标未达成');
return;
}
if ($missionDto[state] != Mission::RECEIVEABLE_STATE) {
$this->_rspErr(3, '未知任务状态');
return;
}
$dropMeta = mt\Drop::get($missionMeta['reward']);
if (!$dropMeta) {
$this->_rspErr(10, '服务器内部错误drop错误');
return;
}
$propertyChgService = new services\PropertyChgService();
$awardService = new services\AwardService();
$this->_scatterDrop($dropMeta, $awardService, $propertyChgService);
Mission::add($missionId);
$missionDb = Mission::find($missionId);
$missionDto = $this->getMissionDto($missionDb, $missionMeta);
$this->_rspData(array(
'award' => $awardService->toDto(),
'property_chg' => $propertyChgService->toDto(),
'mission_chg' => $missionDto
));
}
private function getMissionDto($missionDb, $missionMeta)
{
$missionDto = array(
'mission_id' => $missionMeta['id'],
'current' => 0,
'target' => 0,
'state' => Mission::NOT_FINISHED_STATE,
);
switch ($missionMeta['type']) {
case mt\Task::DAILY_LOGIN_TIMES_COND:
{
}
break;
default:
{
}
break;
}
return $missionDto;
}
}