From 267298f341bd9b6cfe768fa34332d3b192f822c9 Mon Sep 17 00:00:00 2001 From: hide_d Date: Tue, 2 Jun 2020 00:24:44 +0900 Subject: [PATCH] =?UTF-8?q?=EC=82=AC=EB=A0=B9=EB=B6=80=20=EA=B3=B5?= =?UTF-8?q?=EB=B0=B1=EC=9D=B4=EC=96=B4=EB=8F=84=20=EC=82=AC=EB=A0=B9?= =?UTF-8?q?=ED=84=B4=EC=9D=80=20=EB=B3=B4=EC=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/j_getChiefTurn.php | 193 ++++++++++++----------- hwe/js/chiefCenter.js | 348 ++++++++++++++++++++++------------------- 2 files changed, 284 insertions(+), 257 deletions(-) diff --git a/hwe/j_getChiefTurn.php b/hwe/j_getChiefTurn.php index 5dc34dab..20363099 100644 --- a/hwe/j_getChiefTurn.php +++ b/hwe/j_getChiefTurn.php @@ -1,94 +1,101 @@ -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)){ - continue; - } - $general = $generals[$officer_level]; - $nationTurnBrief[$officer_level] = [ - 'name'=>$general->getName(), - 'turnTime'=>$general->getTurnTime($general::TURNTIME_FULL), - '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), - 'turnTerm'=>$turnterm +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), + '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), + 'turnTerm'=>$turnterm ]); \ No newline at end of file diff --git a/hwe/js/chiefCenter.js b/hwe/js/chiefCenter.js index 3aea6072..5a3cc9bb 100644 --- a/hwe/js/chiefCenter.js +++ b/hwe/js/chiefCenter.js @@ -1,165 +1,185 @@ -var filledChiefList = {}; - -var chiefTableObj = {}; - -function clearTable(){ - $('.chiefLevelText').html('-'); - $('.chiefTurnTime, .chiefTurnText, .chiefName').html(' '); -} - -function genChiefTableObj(){ - var objTable = { - btns: $('#turnPush,#turnPull,#setCommand') - }; - - for(var chiefIdx = 5; chiefIdx <= 12; chiefIdx++){ - var $plate = $('#chief_{0}'.format(chiefIdx)); - var $officerLevelText = $plate.find('.chiefLevelText'); - var $name = $plate.find('.chiefName'); - var turn = []; - for(var turnIdx=0;turnIdx{0}'.format(chiefInfo.name)); - var nameColor = getNpcColor(chiefInfo.npcType); - if(nameColor){ - $name.css('color',nameColor); - } - plateObj.officerLevelText.text(chiefInfo.officerLevelText); - plateObj.name.html($name); - - var turnTimeObj = moment(chiefInfo.turnTime); - var turnList = plateObj.turn; - $.each(chiefInfo.turn, function(turnIdx, turnText){ - turnList[turnIdx].turnTime.text(turnTimeObj.format('HH:mm')); - turnList[turnIdx].turnText.html(turnText).css('font-size', '13px'); - var oWidth = turnList[turnIdx].turnPad.innerWidth(); - var iWidth = turnList[turnIdx].turnText.outerWidth(); - if(iWidth > oWidth * 0.95){ - var newFontSize = 13 * oWidth / iWidth * 0.9; - turnList[turnIdx].turnText.css('font-size', '{0}px'.format(newFontSize)); - } - turnTimeObj = turnTimeObj.add(turnTerm, 'minute'); - }); - }); - - for(var idx=5;idx<=12;idx++){ - if(idx in tmpFilledChiefList){ - continue; - } - if(idx in filledChiefList){ - clearChief(chiefIdx); - } - } - filledChiefList = tmpFilledChiefList; - }, errUnknown); -} - -function reserveTurn(turnList, command){ - console.log(turnList, command); - $.post({ - url:'j_set_chief_command.php', - dataType:'json', - data:{ - action:command, - turnList:turnList - } - }).then(function(data){ - if(!data.result){ - alert(data.reason); - } - reloadTable(); - }, errUnknown); -} - -function pushTurn(turnCnt){ - $.post({ - url:'j_chief_turn.php', - dataType:'json', - data:{ - amount:turnCnt - } - }).then(function(data){ - if(!data.result){ - alert(data.reason); - } - reloadTable(); - }, errUnknown); -} - -jQuery(function($){ - -chiefTableObj= genChiefTableObj(); -reloadTable(); -$('#reloadTable').click(reloadTable); -$('#setCommand').click(function(){ - var turnList = $('#chiefTurnSelector').val().map(function(v){return parseInt(v);}); - var $command = $('#chiefCommandList option:selected'); - if($command.data('reqarg')){ - $.redirect( - "b_processing.php", { - command: $command.val(), - turnList: turnList.join('_'), - is_chief: true - }, "GET"); - } - else{ - reserveTurn(turnList, $command.val()); - } - return false; -}); - -$('#turnPush').click(function(){ - pushTurn(1); -}); - -$('#turnPull').click(function(){ - pushTurn(-1); -}); - +var filledChiefList = {}; + +var chiefTableObj = {}; + +function clearTable(){ + $('.chiefLevelText').html('-'); + $('.chiefTurnTime, .chiefTurnText, .chiefName').html(' '); +} + +function genChiefTableObj(){ + var objTable = { + btns: $('#turnPush,#turnPull,#setCommand') + }; + + for(var chiefIdx = 5; chiefIdx <= 12; chiefIdx++){ + var $plate = $('#chief_{0}'.format(chiefIdx)); + var $officerLevelText = $plate.find('.chiefLevelText'); + var $name = $plate.find('.chiefName'); + var turn = []; + for(var turnIdx=0;turnIdx{0}'.format(chiefInfo.name)); + var nameColor = getNpcColor(chiefInfo.npcType); + if(nameColor){ + $name.css('color',nameColor); + } + plateObj.name.html($name); + } + else{ + plateObj.name.html(''); + } + + plateObj.officerLevelText.text(chiefInfo.officerLevelText); + + if(chiefInfo.turnTime){ + var turnTimeObj = moment(chiefInfo.turnTime); + } + else{ + var turnTimeObj = null; + } + var turnList = plateObj.turn; + $.each(chiefInfo.turn, function(turnIdx, turnText){ + if(turnTimeObj){ + turnList[turnIdx].turnTime.text(turnTimeObj.format('HH:mm')); + } + else{ + turnList[turnIdx].turnTime.text(''); + } + + turnList[turnIdx].turnText.html(turnText).css('font-size', '13px'); + var oWidth = turnList[turnIdx].turnPad.innerWidth(); + var iWidth = turnList[turnIdx].turnText.outerWidth(); + if(iWidth > oWidth * 0.95){ + var newFontSize = 13 * oWidth / iWidth * 0.9; + turnList[turnIdx].turnText.css('font-size', '{0}px'.format(newFontSize)); + } + if(turnTimeObj){ + turnTimeObj = turnTimeObj.add(turnTerm, 'minute'); + } + + }); + }); + + for(var idx=5;idx<=12;idx++){ + if(idx in tmpFilledChiefList){ + continue; + } + if(idx in filledChiefList){ + clearChief(chiefIdx); + } + } + filledChiefList = tmpFilledChiefList; + }, errUnknown); +} + +function reserveTurn(turnList, command){ + console.log(turnList, command); + $.post({ + url:'j_set_chief_command.php', + dataType:'json', + data:{ + action:command, + turnList:turnList + } + }).then(function(data){ + if(!data.result){ + alert(data.reason); + } + reloadTable(); + }, errUnknown); +} + +function pushTurn(turnCnt){ + $.post({ + url:'j_chief_turn.php', + dataType:'json', + data:{ + amount:turnCnt + } + }).then(function(data){ + if(!data.result){ + alert(data.reason); + } + reloadTable(); + }, errUnknown); +} + +jQuery(function($){ + +chiefTableObj= genChiefTableObj(); +reloadTable(); +$('#reloadTable').click(reloadTable); +$('#setCommand').click(function(){ + var turnList = $('#chiefTurnSelector').val().map(function(v){return parseInt(v);}); + var $command = $('#chiefCommandList option:selected'); + if($command.data('reqarg')){ + $.redirect( + "b_processing.php", { + command: $command.val(), + turnList: turnList.join('_'), + is_chief: true + }, "GET"); + } + else{ + reserveTurn(turnList, $command.val()); + } + return false; +}); + +$('#turnPush').click(function(){ + pushTurn(1); +}); + +$('#turnPull').click(function(){ + pushTurn(-1); +}); + }) \ No newline at end of file