사령부 공백이어도 사령턴은 보임
This commit is contained in:
+100
-93
@@ -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
@@ -1,165 +1,185 @@
|
|||||||
var filledChiefList = {};
|
var filledChiefList = {};
|
||||||
|
|
||||||
var chiefTableObj = {};
|
var chiefTableObj = {};
|
||||||
|
|
||||||
function clearTable(){
|
function clearTable(){
|
||||||
$('.chiefLevelText').html('-');
|
$('.chiefLevelText').html('-');
|
||||||
$('.chiefTurnTime, .chiefTurnText, .chiefName').html(' ');
|
$('.chiefTurnTime, .chiefTurnText, .chiefName').html(' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
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(' ');
|
$plate.find('.chiefTurnTime, .chiefTurnText, .chiefName').html(' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
|
});
|
||||||
|
|
||||||
})
|
})
|
||||||
Reference in New Issue
Block a user