diff --git a/.phan/config.php b/.phan/config.php index cfc5aba2..4324b21a 100644 --- a/.phan/config.php +++ b/.phan/config.php @@ -91,7 +91,6 @@ return [ 'hwe/j_board_article_add.php', 'hwe/j_board_comment_add.php', 'hwe/j_board_get_articles.php', - 'hwe/j_chief_turn.php', 'hwe/j_die_immediately.php', 'hwe/j_diplomacy_destroy_letter.php', 'hwe/j_diplomacy_get_letter.php', @@ -102,7 +101,6 @@ return [ 'hwe/j_general_log_old.php', 'hwe/j_general_set_permission.php', 'hwe/j_get_basic_general_list.php', - 'hwe/j_getChiefTurn.php', 'hwe/j_get_city_list.php', 'hwe/j_get_general_list.php', 'hwe/j_get_nation_general_list.php', @@ -126,8 +124,6 @@ return [ 'hwe/j_select_npc.php', 'hwe/j_select_picked_general.php', 'hwe/j_server_basic_info.php', - 'hwe/j_set_chief_command.php', - 'hwe/j_set_general_command.php', 'hwe/j_set_my_setting.php', 'hwe/j_set_npc_control.php', 'hwe/j_simulate_battle.php', diff --git a/hwe/j_chief_turn.php b/hwe/j_chief_turn.php deleted file mode 100644 index b6e1dcd6..00000000 --- a/hwe/j_chief_turn.php +++ /dev/null @@ -1,41 +0,0 @@ -setReadOnly(); -$userID = Session::getUserID(); - -$turnAmount = Util::getPost('amount', 'int'); - -$db = DB::db(); -$me = $db->queryFirstRow('SELECT no,nation,officer_level FROM general WHERE owner=%i', $userID); - -if($me['nation'] == 0){ - Json::die([ - 'result'=>false, - 'reason'=>'국가에 소속되어 있지 않습니다.', - ]); -} - -if($me['officer_level'] < 5){ - Json::die([ - 'result'=>false, - 'reason'=>'수뇌가 아닙니다.', - ]); -} - -if($turnAmount > 0){ - pushNationCommand($me['nation'], $me['officer_level']); -} -else{ - pullNationCommand($me['nation'], $me['officer_level']); -} - -Json::die([ - 'result'=>true, - 'reason'=>'success', -]); \ No newline at end of file diff --git a/hwe/j_getChiefTurn.php b/hwe/j_getChiefTurn.php deleted file mode 100644 index 983f1e28..00000000 --- a/hwe/j_getChiefTurn.php +++ /dev/null @@ -1,103 +0,0 @@ -setReadOnly(); -$userID = Session::getUserID(); - -$db = DB::db(); -$gameStor = KVStorage::getStorage($db, 'game_env'); - -increaseRefresh("사령부", 1); - -$me = $db->queryFirstRow('SELECT no,nation,officer_level,con,turntime,belong,penalty,permission FROM general WHERE owner=%i', $userID); - -$nationLevel = $db->queryFirstField('SELECT level FROM nation WHERE nation = %i', $me['nation']); -$nationID = $me['nation']; -$con = checkLimit($me['con']); -if($con >= 2) { - Json::die([ - 'result'=>false, - 'reason'=>"접속 제한중입니다. 1턴 이내에 너무 많은 갱신을 하셨습니다. (다음 접속 가능 시각 : {$me['turntime']})" - ]); -} - -$permission = checkSecretPermission($me); -if($permission < 0){ - Json::die([ - 'result'=>false, - 'reason'=>'국가에 소속되어있지 않습니다.' - ]); - echo '국가에 소속되어있지 않습니다.'; - die(); -} -else if ($permission < 1) { - Json::die([ - 'result'=>false, - 'reason'=>'수뇌부가 아니거나 사관년도가 부족합니다.' - ]); - die(); -} - -$date = TimeUtil::now(); - -// 명령 목록 -[$year, $month, $turnterm] = $gameStor->getValuesAsArray(['year', 'month', 'turnterm']); -$lv = getNationChiefLevel($nationLevel); -$turn = []; - -$generals = []; -foreach($db->query('SELECT no,name,turntime,npc,city,nation,officer_level FROM general WHERE nation = %i AND officer_level >= 5',$nationID) as $rawGeneral){ - $generals[$rawGeneral['officer_level']] = new General($rawGeneral, null, null, null, $year, $month, false); -} - -$nationTurnList = []; - -foreach( - $db->queryAllLists( - 'SELECT officer_level, turn_idx, action, arg, brief FROM nation_turn WHERE nation_id = %i ORDER BY officer_level DESC, turn_idx ASC', - $me['nation'] - ) as [$officer_level, $turn_idx, $action, $arg, $brief] -){ - if(!key_exists($officer_level, $nationTurnList)){ - $nationTurnList[$officer_level] = []; - } - $nationTurnList[$officer_level][$turn_idx] = $brief; -} - -$nationTurnBrief = []; -foreach($nationTurnList as $officer_level=>$turnBrief){ - if(!key_exists($officer_level, $generals)){ - $nationTurnBrief[$officer_level] = [ - 'name'=>null, - 'turnTime'=>null, - 'officerLevelText'=>getOfficerLevelText($officer_level, $nationLevel), - 'npcType'=>null, - 'turn'=>$turnBrief - ]; - continue; - } - $general = $generals[$officer_level]; - $nationTurnBrief[$officer_level] = [ - 'name'=>$general->getName(), - 'turnTime'=>$general->getTurnTime($general::TURNTIME_FULL), - 'officerLevel'=>$general->getVar('officer_level'), - 'officerLevelText'=>getOfficerLevelText($general->getVar('officer_level'), $nationLevel), - 'npcType'=>$general->getNPCType(), - 'turn'=>$turnBrief, - ]; -} - -$date = substr(TimeUtil::now(), 14); - -Json::die([ - 'result'=>true, - 'reason'=>'success', - 'date'=>$date, - 'nationTurnBrief'=>$nationTurnBrief, - 'isChief'=>($me['officer_level'] > 4), - 'officerLevel'=>$me['officer_level'], - 'turnTerm'=>$turnterm -]); \ No newline at end of file diff --git a/hwe/j_set_chief_command.php b/hwe/j_set_chief_command.php deleted file mode 100644 index ced76fba..00000000 --- a/hwe/j_set_chief_command.php +++ /dev/null @@ -1,66 +0,0 @@ -setReadOnly(); - -increaseRefresh("사령턴 입력", 0); - -$generalID = $session->generalID; - - -$action = Util::getPost('action', 'string'); -$arg = Json::decode(Util::getPost('arg', 'string')); -$turnList = Util::getPost('turnList', 'array_int'); - -if(!is_array($turnList) || !$turnList){ - Json::die([ - 'result'=>false, - 'reason'=>'턴이 입력되지 않았습니다.', - 'test'=>'post', - ]); -} - -if(!$action){ - Json::die([ - 'result'=>false, - 'reason'=>'action이 입력되지 않았습니다.', - 'test'=>'post' - ]); -} - -if(!in_array($action, Util::array_flatten(GameConst::$availableChiefCommand))){ - Json::die([ - 'result'=>false, - 'reason'=>'사용할 수 없는 커맨드입니다.', - 'test'=>'post' - ]); -} - -if($arg === null){ - $arg = []; -} - -if(!is_array($arg)){ - Json::die([ - 'result'=>false, - 'reason'=>'올바른 arg 형태가 아닙니다.', - 'test'=>'post' - ]); -} - -$result = setNationCommand($generalID, $turnList, $action, $arg); -if(!key_exists('result', $result)){ - $result['result'] = false; -} -if(!key_exists('arg_test', $result)){ - $result['arg_test'] = false; -} -if(!key_exists('reason', $result)){ - throw new MustNotBeReachedException('reason이 왜 없어?'); -} -Json::die($result); \ No newline at end of file diff --git a/hwe/j_set_general_command.php b/hwe/j_set_general_command.php deleted file mode 100644 index 72e91d3b..00000000 --- a/hwe/j_set_general_command.php +++ /dev/null @@ -1,55 +0,0 @@ -setReadOnly(); - -increaseRefresh("턴 입력", 0); - -$generalID = $session->generalID; - -$action = Util::getPost('action', 'string'); -$arg = Json::decode(Util::getPost('arg', 'string')); -$turnList = Util::getPost('turnList', 'array_int'); - -if(!is_array($turnList) || !$turnList){ - Json::die([ - 'result'=>false, - 'reason'=>'턴이 입력되지 않았습니다.', - 'test'=>'post', - ]); -} - -if(!$action){ - Json::die([ - 'result'=>false, - 'reason'=>'action이 입력되지 않았습니다.', - 'test'=>'post' - ]); -} - -if(!in_array($action, Util::array_flatten(GameConst::$availableGeneralCommand))){ - Json::die([ - 'result'=>false, - 'reason'=>'사용할 수 없는 커맨드입니다.', - 'test'=>'post' - ]); -} - -if($arg === null){ - $arg = []; -} - -if(!is_array($arg)){ - Json::die([ - 'result'=>false, - 'reason'=>'올바른 arg 형태가 아닙니다.', - 'test'=>'post' - ]); -} - -Json::die(setGeneralCommand($generalID, $turnList, $action, $arg)); \ No newline at end of file diff --git a/hwe/ts/build_exports.json b/hwe/ts/build_exports.json index 5f877e55..40f22e03 100644 --- a/hwe/ts/build_exports.json +++ b/hwe/ts/build_exports.json @@ -1,6 +1,5 @@ { "ingame": { - "chiefCenter": "chiefCenter.ts", "troop": "troop.ts", "map": "map.ts", "install_db": "install_db.ts", diff --git a/hwe/ts/chiefCenter.ts b/hwe/ts/chiefCenter.ts deleted file mode 100644 index 83e8a98d..00000000 --- a/hwe/ts/chiefCenter.ts +++ /dev/null @@ -1,264 +0,0 @@ -import axios from 'axios'; -import $ from 'jquery'; -import { range } from 'lodash'; -import { addMinutes } from 'date-fns'; -import { errUnknown, getNpcColor } from '@/common_legacy'; -import { InvalidResponse } from '@/defs'; -import { unwrap } from "@util/unwrap"; -import { convertFormData } from '@util/convertFormData'; -import { unwrap_any } from "@util/unwrap_any"; -import { parseTime } from '@util/parseTime'; -import { formatTime } from '@util/formatTime'; -import { stringifyUrl } from 'query-string'; -import { setAxiosXMLHttpRequest } from '@util/setAxiosXMLHttpRequest'; - -setAxiosXMLHttpRequest(); - -declare const maxChiefTurn: number; - -type TurnDOMObj = { - turnTime: JQuery, - turnPad: JQuery, - turnText: JQuery -}; - -type TableObj = { - btns: JQuery; - [key: number]: { - officerLevelText: JQuery, - name: JQuery, - turn: TurnDOMObj[], - } -} - -type ChiefResponse = InvalidResponse | { - result: true, - date: string, - nationTurnBrief: { - name: string | null, - turnTime: string | null, - officerLevelText: string, - npcType: number, - turn: string - }[], - isChief: boolean, - turnTerm: number -} - -let filledChiefList: Record = {}; -let chiefTableObj: TableObj = undefined as unknown as TableObj;//TODO: 매우 지저분하다. class 기반으로 고치던가 할 것 - -/* -function clearTable() { - $('.chiefLevelText').html('-'); - $('.chiefTurnTime, .chiefTurnText, .chiefName').html(' '); -} -*/ - -function genChiefTableObj(): TableObj { - const objTable: TableObj = { - btns: $('#turnPush,#turnPull,#setCommand') - }; - - for (const chiefIdx of range(5, 13)) { - const $plate = $(`#chief_${chiefIdx}`); - const $officerLevelText = $plate.find('.chiefLevelText'); - const $name = $plate.find('.chiefName'); - const turn: TurnDOMObj[] = []; - for (const turnIdx of range(maxChiefTurn)) { - const $turn = $plate.find(`.turn${turnIdx}`); - const $turnTime = $turn.find('.chiefTurnTime'); - const $turnPad = $turn.find('.chiefTurnPad'); - const $turnText = $turn.find('.chiefTurnText'); - turn.push({ turnTime: $turnTime, turnPad: $turnPad, turnText: $turnText }); - } - objTable[chiefIdx] = { - officerLevelText: $officerLevelText, - name: $name, - turn: turn - }; - } - - return objTable; -} - - - -function clearChief(chiefIdx: number): void { - const $plate = $(`#chief_${chiefIdx}`); - $plate.find('.chiefLevelText').html('-'); - $plate.find('.chiefTurnTime, .chiefTurnText, .chiefName').html(' '); -} - -async function reloadTable() { - - const data: ChiefResponse = await (async () => { - try { - const response = await axios({ - url: 'j_getChiefTurn.php', - responseType: 'json' - }); - return response.data; - } - catch (e) { - console.error(e); - errUnknown(); - } - })(); - - if (!data.result) { - alert(data.reason); - return; - } - const turnTerm = data.turnTerm; - const tmpFilledChiefList: Record = {}; - - if (data.isChief) { - chiefTableObj.btns.css('visibility', 'visible'); - } - else { - chiefTableObj.btns.css('visibility', 'hidden'); - } - $.each(data.nationTurnBrief, function (chiefIdx, chiefInfo) { - tmpFilledChiefList[chiefIdx] = true; - filledChiefList[chiefIdx] = true; - - const plateObj = chiefTableObj[chiefIdx]; - if (chiefInfo.name) { - const $name = $(`${chiefInfo.name}`); - const nameColor = getNpcColor(chiefInfo.npcType); - if (nameColor) { - $name.css('color', nameColor); - } - plateObj.name.empty().append($name); - } - else { - plateObj.name.html(''); - } - - plateObj.officerLevelText.text(chiefInfo.officerLevelText); - - let turnTimeObj: Date | undefined; - - if (chiefInfo.turnTime) { - turnTimeObj = parseTime(chiefInfo.turnTime); - } - - const turnList = plateObj.turn; - $.each(chiefInfo.turn, function (turnIdx, turnText) { - if (turnTimeObj) { - turnList[turnIdx].turnTime.text(formatTime(turnTimeObj, 'HH:mm')); - } - else { - turnList[turnIdx].turnTime.text(''); - } - - turnList[turnIdx].turnText.html(turnText).css('font-size', '14px'); - const oWidth = unwrap(turnList[turnIdx].turnPad.innerWidth()); - const iWidth = unwrap(turnList[turnIdx].turnText.outerWidth()); - if (iWidth > oWidth * 0.95) { - const newFontSize = 14 * oWidth / iWidth * 0.9; - turnList[turnIdx].turnText.css('font-size', `${newFontSize}px`); - } - if (turnTimeObj) { - turnTimeObj = addMinutes(turnTimeObj, turnTerm); - } - - }); - }); - - for (const idx of range(5, 13)) { - if (idx in tmpFilledChiefList) { - continue; - } - if (idx in filledChiefList) { - clearChief(idx); - } - } - filledChiefList = tmpFilledChiefList; -} - -async function reserveTurn(turnList: number[], command: string) { - console.log(turnList, command); - try { - - const response = await axios({ - url: 'j_set_chief_command.php', - responseType: 'json', - method: 'post', - data: convertFormData({ - turnList, - action: command - }) - }); - - const data: InvalidResponse = response.data; - - if (!data.result) { - alert(data.reason); - } - await reloadTable(); - } - catch (e) { - console.error(e); - errUnknown(); - } -} - -async function pushTurn(turnCnt: number) { - try { - const response = await axios({ - url: 'j_chief_turn.php', - responseType: 'json', - method: 'post', - data: convertFormData({ - amount: turnCnt - }) - }); - const data = response.data; - if (!data.result) { - alert(data.reason); - } - await reloadTable(); - } - catch (e) { - console.error(e); - errUnknown(); - } -} - -$(function ($) { - - chiefTableObj = genChiefTableObj(); - void reloadTable(); - $('#reloadTable').on('click', reloadTable); - $('#setCommand').on('click', function () { - const turnList = unwrap_any($('#chiefTurnSelector').val()).map(function (v) { return parseInt(v); }); - const $command = $('#chiefCommandList option:selected'); - if ($command.data('reqarg')) { - document.location.href = stringifyUrl({ - url: 'v_processing.php', - query: { - command: unwrap_any($command.val()), - turnList: turnList.join('_'), - is_chief: true - } - }); - } - else { - void reserveTurn(turnList, unwrap_any($command.val())); - } - return false; - }); - - $('#turnPush').on('click', function () { - void pushTurn(1); - return false; - }); - - $('#turnPull').on('click', function () { - void pushTurn(-1); - return false; - }); - -}) \ No newline at end of file