사령부 공백이어도 사령턴은 보임

This commit is contained in:
2020-06-02 00:24:44 +09:00
parent 359d46e94d
commit 267298f341
2 changed files with 284 additions and 257 deletions
+100 -93
View File
@@ -1,94 +1,101 @@
<?php <?php
namespace sammo; namespace sammo;
include "lib.php"; include "lib.php";
include "func.php"; include "func.php";
//로그인 검사 //로그인 검사
$session = Session::requireGameLogin()->setReadOnly(); $session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID(); $userID = Session::getUserID();
$db = DB::db(); $db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env'); $gameStor = KVStorage::getStorage($db, 'game_env');
increaseRefresh("사령부", 1); increaseRefresh("사령부", 1);
$me = $db->queryFirstRow('SELECT no,nation,officer_level,con,turntime,belong,penalty,permission FROM general WHERE owner=%i', $userID); $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']); $nationLevel = $db->queryFirstField('SELECT level FROM nation WHERE nation = %i', $me['nation']);
$nationID = $me['nation']; $nationID = $me['nation'];
$con = checkLimit($me['con']); $con = checkLimit($me['con']);
if($con >= 2) { if($con >= 2) {
Json::die([ Json::die([
'result'=>false, 'result'=>false,
'reason'=>"접속 제한중입니다. 1턴 이내에 너무 많은 갱신을 하셨습니다. (다음 접속 가능 시각 : {$me['turntime']})" 'reason'=>"접속 제한중입니다. 1턴 이내에 너무 많은 갱신을 하셨습니다. (다음 접속 가능 시각 : {$me['turntime']})"
]); ]);
} }
$permission = checkSecretPermission($me); $permission = checkSecretPermission($me);
if($permission < 0){ if($permission < 0){
Json::die([ Json::die([
'result'=>false, 'result'=>false,
'reason'=>'국가에 소속되어있지 않습니다.' 'reason'=>'국가에 소속되어있지 않습니다.'
]); ]);
echo '국가에 소속되어있지 않습니다.'; echo '국가에 소속되어있지 않습니다.';
die(); die();
} }
else if ($permission < 1) { else if ($permission < 1) {
Json::die([ Json::die([
'result'=>false, 'result'=>false,
'reason'=>'수뇌부가 아니거나 사관년도가 부족합니다.' 'reason'=>'수뇌부가 아니거나 사관년도가 부족합니다.'
]); ]);
die(); die();
} }
$date = TimeUtil::now(); $date = TimeUtil::now();
// 명령 목록 // 명령 목록
[$year, $month, $turnterm] = $gameStor->getValuesAsArray(['year', 'month', 'turnterm']); [$year, $month, $turnterm] = $gameStor->getValuesAsArray(['year', 'month', 'turnterm']);
$lv = getNationChiefLevel($nationLevel); $lv = getNationChiefLevel($nationLevel);
$turn = []; $turn = [];
$generals = []; $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){ 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); $generals[$rawGeneral['officer_level']] = new General($rawGeneral, null, null, null, $year, $month, false);
} }
$nationTurnList = []; $nationTurnList = [];
foreach( foreach(
$db->queryAllLists( $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', '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'] $me['nation']
) as [$officer_level, $turn_idx, $action, $arg, $brief] ) as [$officer_level, $turn_idx, $action, $arg, $brief]
){ ){
if(!key_exists($officer_level, $nationTurnList)){ if(!key_exists($officer_level, $nationTurnList)){
$nationTurnList[$officer_level] = []; $nationTurnList[$officer_level] = [];
} }
$nationTurnList[$officer_level][$turn_idx] = $brief; $nationTurnList[$officer_level][$turn_idx] = $brief;
} }
$nationTurnBrief = []; $nationTurnBrief = [];
foreach($nationTurnList as $officer_level=>$turnBrief){ foreach($nationTurnList as $officer_level=>$turnBrief){
if(!key_exists($officer_level, $generals)){ if(!key_exists($officer_level, $generals)){
continue; $nationTurnBrief[$officer_level] = [
} 'name'=>null,
$general = $generals[$officer_level]; 'turnTime'=>null,
$nationTurnBrief[$officer_level] = [ 'officerLevelText'=>getOfficerLevelText($officer_level, $nationLevel),
'name'=>$general->getName(), 'npcType'=>null,
'turnTime'=>$general->getTurnTime($general::TURNTIME_FULL), 'turn'=>$turnBrief
'officerLevelText'=>getOfficerLevelText($general->getVar('officer_level'), $nationLevel), ];
'npcType'=>$general->getNPCType(), continue;
'turn'=>$turnBrief }
]; $general = $generals[$officer_level];
} $nationTurnBrief[$officer_level] = [
'name'=>$general->getName(),
$date = substr(TimeUtil::now(), 14); 'turnTime'=>$general->getTurnTime($general::TURNTIME_FULL),
'officerLevelText'=>getOfficerLevelText($general->getVar('officer_level'), $nationLevel),
Json::die([ 'npcType'=>$general->getNPCType(),
'result'=>true, 'turn'=>$turnBrief
'reason'=>'success', ];
'date'=>$date, }
'nationTurnBrief'=>$nationTurnBrief,
'isChief'=>($me['officer_level'] > 4), $date = substr(TimeUtil::now(), 14);
'turnTerm'=>$turnterm
Json::die([
'result'=>true,
'reason'=>'success',
'date'=>$date,
'nationTurnBrief'=>$nationTurnBrief,
'isChief'=>($me['officer_level'] > 4),
'turnTerm'=>$turnterm
]); ]);
+184 -164
View File
@@ -1,165 +1,185 @@
var filledChiefList = {}; var filledChiefList = {};
var chiefTableObj = {}; var chiefTableObj = {};
function clearTable(){ function clearTable(){
$('.chiefLevelText').html('-'); $('.chiefLevelText').html('-');
$('.chiefTurnTime, .chiefTurnText, .chiefName').html('&nbsp;'); $('.chiefTurnTime, .chiefTurnText, .chiefName').html('&nbsp;');
} }
function genChiefTableObj(){ function genChiefTableObj(){
var objTable = { var objTable = {
btns: $('#turnPush,#turnPull,#setCommand') btns: $('#turnPush,#turnPull,#setCommand')
}; };
for(var chiefIdx = 5; chiefIdx <= 12; chiefIdx++){ for(var chiefIdx = 5; chiefIdx <= 12; chiefIdx++){
var $plate = $('#chief_{0}'.format(chiefIdx)); var $plate = $('#chief_{0}'.format(chiefIdx));
var $officerLevelText = $plate.find('.chiefLevelText'); var $officerLevelText = $plate.find('.chiefLevelText');
var $name = $plate.find('.chiefName'); var $name = $plate.find('.chiefName');
var turn = []; var turn = [];
for(var turnIdx=0;turnIdx<maxChiefTurn;turnIdx++){ for(var turnIdx=0;turnIdx<maxChiefTurn;turnIdx++){
var $turn = $plate.find('.turn{0}'.format(turnIdx)); var $turn = $plate.find('.turn{0}'.format(turnIdx));
var $turnTime = $turn.find('.chiefTurnTime'); var $turnTime = $turn.find('.chiefTurnTime');
var $turnPad = $turn.find('.chiefTurnPad'); var $turnPad = $turn.find('.chiefTurnPad');
var $turnText = $turn.find('.chiefTurnText'); var $turnText = $turn.find('.chiefTurnText');
turn.push({turnTime:$turnTime,turnPad:$turnPad,turnText:$turnText}); turn.push({turnTime:$turnTime,turnPad:$turnPad,turnText:$turnText});
} }
objTable[chiefIdx] = { objTable[chiefIdx] = {
officerLevelText: $officerLevelText, officerLevelText: $officerLevelText,
name: $name, name: $name,
turn: turn turn: turn
}; };
} }
return objTable; return objTable;
} }
function clearChief(chiefIdx){ function clearChief(chiefIdx){
var $plate = $('#chief_{0}'.format(chiefIdx)); var $plate = $('#chief_{0}'.format(chiefIdx));
$plate.find('.chiefLevelText').html('-'); $plate.find('.chiefLevelText').html('-');
$plate.find('.chiefTurnTime, .chiefTurnText, .chiefName').html('&nbsp;'); $plate.find('.chiefTurnTime, .chiefTurnText, .chiefName').html('&nbsp;');
} }
function reloadTable(){ function reloadTable(){
$.post({ $.post({
url:'j_getChiefTurn.php', url:'j_getChiefTurn.php',
dataType:'json', dataType:'json',
}).then(function(data){ }).then(function(data){
if(!data.result){ if(!data.result){
alert(data.reason); alert(data.reason);
return; return;
} }
var turnTerm = data.turnTerm; var turnTerm = data.turnTerm;
var tmpFilledChiefList = {}; var tmpFilledChiefList = {};
if(data.isChief){ if(data.isChief){
chiefTableObj.btns.css('visibility', 'visible'); chiefTableObj.btns.css('visibility', 'visible');
} }
else{ else{
chiefTableObj.btns.css('visibility', 'hidden'); chiefTableObj.btns.css('visibility', 'hidden');
} }
$.each(data.nationTurnBrief, function(chiefIdx, chiefInfo){ $.each(data.nationTurnBrief, function(chiefIdx, chiefInfo){
tmpFilledChiefList[chiefIdx] = true; tmpFilledChiefList[chiefIdx] = true;
filledChiefList[chiefIdx] = true; filledChiefList[chiefIdx] = true;
var plateObj = chiefTableObj[chiefIdx]; var plateObj = chiefTableObj[chiefIdx];
var $name = $('<span>{0}</span>'.format(chiefInfo.name)); if(chiefInfo.name){
var nameColor = getNpcColor(chiefInfo.npcType); var $name = $('<span>{0}</span>'.format(chiefInfo.name));
if(nameColor){ var nameColor = getNpcColor(chiefInfo.npcType);
$name.css('color',nameColor); if(nameColor){
} $name.css('color',nameColor);
plateObj.officerLevelText.text(chiefInfo.officerLevelText); }
plateObj.name.html($name); plateObj.name.html($name);
}
var turnTimeObj = moment(chiefInfo.turnTime); else{
var turnList = plateObj.turn; plateObj.name.html('');
$.each(chiefInfo.turn, function(turnIdx, turnText){ }
turnList[turnIdx].turnTime.text(turnTimeObj.format('HH:mm'));
turnList[turnIdx].turnText.html(turnText).css('font-size', '13px'); plateObj.officerLevelText.text(chiefInfo.officerLevelText);
var oWidth = turnList[turnIdx].turnPad.innerWidth();
var iWidth = turnList[turnIdx].turnText.outerWidth(); if(chiefInfo.turnTime){
if(iWidth > oWidth * 0.95){ var turnTimeObj = moment(chiefInfo.turnTime);
var newFontSize = 13 * oWidth / iWidth * 0.9; }
turnList[turnIdx].turnText.css('font-size', '{0}px'.format(newFontSize)); else{
} var turnTimeObj = null;
turnTimeObj = turnTimeObj.add(turnTerm, 'minute'); }
}); var turnList = plateObj.turn;
}); $.each(chiefInfo.turn, function(turnIdx, turnText){
if(turnTimeObj){
for(var idx=5;idx<=12;idx++){ turnList[turnIdx].turnTime.text(turnTimeObj.format('HH:mm'));
if(idx in tmpFilledChiefList){ }
continue; else{
} turnList[turnIdx].turnTime.text('');
if(idx in filledChiefList){ }
clearChief(chiefIdx);
} turnList[turnIdx].turnText.html(turnText).css('font-size', '13px');
} var oWidth = turnList[turnIdx].turnPad.innerWidth();
filledChiefList = tmpFilledChiefList; var iWidth = turnList[turnIdx].turnText.outerWidth();
}, errUnknown); if(iWidth > oWidth * 0.95){
} var newFontSize = 13 * oWidth / iWidth * 0.9;
turnList[turnIdx].turnText.css('font-size', '{0}px'.format(newFontSize));
function reserveTurn(turnList, command){ }
console.log(turnList, command); if(turnTimeObj){
$.post({ turnTimeObj = turnTimeObj.add(turnTerm, 'minute');
url:'j_set_chief_command.php', }
dataType:'json',
data:{ });
action:command, });
turnList:turnList
} for(var idx=5;idx<=12;idx++){
}).then(function(data){ if(idx in tmpFilledChiefList){
if(!data.result){ continue;
alert(data.reason); }
} if(idx in filledChiefList){
reloadTable(); clearChief(chiefIdx);
}, errUnknown); }
} }
filledChiefList = tmpFilledChiefList;
function pushTurn(turnCnt){ }, errUnknown);
$.post({ }
url:'j_chief_turn.php',
dataType:'json', function reserveTurn(turnList, command){
data:{ console.log(turnList, command);
amount:turnCnt $.post({
} url:'j_set_chief_command.php',
}).then(function(data){ dataType:'json',
if(!data.result){ data:{
alert(data.reason); action:command,
} turnList:turnList
reloadTable(); }
}, errUnknown); }).then(function(data){
} if(!data.result){
alert(data.reason);
jQuery(function($){ }
reloadTable();
chiefTableObj= genChiefTableObj(); }, errUnknown);
reloadTable(); }
$('#reloadTable').click(reloadTable);
$('#setCommand').click(function(){ function pushTurn(turnCnt){
var turnList = $('#chiefTurnSelector').val().map(function(v){return parseInt(v);}); $.post({
var $command = $('#chiefCommandList option:selected'); url:'j_chief_turn.php',
if($command.data('reqarg')){ dataType:'json',
$.redirect( data:{
"b_processing.php", { amount:turnCnt
command: $command.val(), }
turnList: turnList.join('_'), }).then(function(data){
is_chief: true if(!data.result){
}, "GET"); alert(data.reason);
} }
else{ reloadTable();
reserveTurn(turnList, $command.val()); }, errUnknown);
} }
return false;
}); jQuery(function($){
$('#turnPush').click(function(){ chiefTableObj= genChiefTableObj();
pushTurn(1); reloadTable();
}); $('#reloadTable').click(reloadTable);
$('#setCommand').click(function(){
$('#turnPull').click(function(){ var turnList = $('#chiefTurnSelector').val().map(function(v){return parseInt(v);});
pushTurn(-1); 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);
});
}) })