턴 표기 '드디어' 추가

This commit is contained in:
2019-10-06 19:01:46 +09:00
parent 4e988db50f
commit a47905541c
19 changed files with 186 additions and 53 deletions
+16 -4
View File
@@ -29,6 +29,14 @@ $gameStor = KVStorage::getStorage($db, 'game_env');
$src = MessageTarget::buildQuick($session->generalID);
$genObjList = [];
$env = [];
if($genlist){
foreach($genlist as $genID){
$genObjList[$genID] = General::createGeneralObjFromDB($genID);
}
$env = $gameStor->cacheAll();
}
switch($btn) {
case "전체 접속허용":
$db->update('general', [
@@ -99,7 +107,8 @@ switch($btn) {
], '`no` IN %li', $genlist);
$db->update('general_turn', [
'action'=>'휴식',
'arg'=>'{}'
'arg'=>'{}',
'brief'=>'휴식',
], 'general_id IN %li AND turn_idx = 0', $genlist);
break;
case "특기 부여":
@@ -314,17 +323,20 @@ switch($btn) {
case "하야입력":
$db->update('general_turn', [
'action'=>'che_하야',
'arg'=>'{}'
'arg'=>'{}',
'brief'=>'하야',
], 'general_id IN %li AND turn_idx = 0', $genlist);
break;
case "방랑해산":
$db->update('general_turn', [
'action'=>'che_방랑',
'arg'=>'{}'
'arg'=>'{}',
'brief'=>'방랑',
], 'general_id IN %li AND turn_idx = 0', $genlist);
$db->update('general_turn', [
'action'=>'che_해산',
'arg'=>'{}'
'arg'=>'{}',
'brief'=>'해산',
], 'general_id IN %li AND turn_idx = 1', $genlist);
break;
case "00턴":
+2 -1
View File
@@ -58,7 +58,8 @@ switch($btn) {
], '`no` IN %li', $genlist);
$db->update('general_turn', [
'action'=>'휴식',
'arg'=>'{}'
'arg'=>'{}',
'brief'=>'휴식'
], 'general_id IN %li AND turn_idx = 0', $genlist);
break;
case "메세지 전달":
+4 -5
View File
@@ -211,14 +211,14 @@ $generals = $db->query(
$generalTurnList = [];
foreach($db->queryAllLists(
'SELECT general_id, turn_idx, action, arg FROM general_turn WHERE general_id IN %li AND turn_idx < 5 ORDER BY general_id ASC, turn_idx ASC',
'SELECT general_id, turn_idx, brief FROM general_turn WHERE general_id IN %li AND turn_idx < 5 ORDER BY general_id ASC, turn_idx ASC',
array_column($generals, 'no')
) as [$generalID, $turnIdx, $action, $arg]
) as [$generalID, $turnIdx, $brief]
){
if(!key_exists($generalID, $generalTurnList)){
$generalTurnList[$generalID] = [];
}
$generalTurnList[$generalID][$turnIdx] = [$action, Json::decode($arg)];
$generalTurnList[$generalID][$turnIdx] = $brief;
}
$nationname = [];
@@ -300,8 +300,7 @@ for($j=0; $j < $gencount; $j++) {
if($ourGeneral && !$isNPC){
$turnText = [];
$generalObj = new General($general, null, null, null, false);
$turnBrief = getGeneralTurnBrief($generalObj, $generalTurnList[$generalObj->getID()]);
foreach($turnBrief as $turnRawIdx=>$turn){
foreach($generalTurnList[$generalObj->getID()] as $turnRawIdx=>$turn){
$turnIdx = $turnRawIdx+1;
$turnText[] = "{$turnIdx} : $turn";
}
+4 -8
View File
@@ -111,14 +111,14 @@ $generals = $db->query(
$generalTurnList = [];
foreach($db->queryAllLists(
'SELECT general_id, turn_idx, action, arg FROM general_turn WHERE general_id IN %li AND turn_idx < 5 ORDER BY general_id ASC, turn_idx ASC',
'SELECT general_id, turn_idx, brief FROM general_turn WHERE general_id IN %li AND turn_idx < 5 ORDER BY general_id ASC, turn_idx ASC',
array_column($generals, 'no')
) as [$generalID, $turnIdx, $action, $arg]
) as [$generalID, $turnIdx, $brief]
){
if(!key_exists($generalID, $generalTurnList)){
$generalTurnList[$generalID] = [];
}
$generalTurnList[$generalID][$turnIdx] = [$action, Json::decode($arg)];
$generalTurnList[$generalID][$turnIdx] = $brief;
}
$genCntEff = 0;
@@ -173,11 +173,7 @@ foreach ($generals as &$general) {
if ($general['npc'] < 2) {
$generalObj = new General($general, null, null, null, false);
$turnBrief = getGeneralTurnBrief($genralObj, $generalTurnList[$generalObj->getID()]);
$turntext = [];
foreach($turnBrief as $turnRawIdx=>$turn){
foreach($generalTurnList[$generalObj->getID()] as $turnRawIdx=>$turn){
$turn = StringUtil::subStringForWidth($turn, 0, 41);
$turnIdx = $turnRawIdx+1;
$turntext[] = "&nbsp;$turnIdx : $turn";
+7 -8
View File
@@ -43,14 +43,14 @@ if($troops){
);
foreach($db->queryAllLists(
'SELECT general_id, turn_idx, action, arg FROM general_turn WHERE general_id IN %li AND turn_idx < 5 ORDER BY general_id ASC, turn_idx ASC',
'SELECT general_id, turn_idx, brief FROM general_turn WHERE general_id IN %li AND turn_idx < 5 ORDER BY general_id ASC, turn_idx ASC',
array_column($troopLeaders, 'no')
) as [$generalID, $turnIdx, $action, $arg]
) as [$generalID, $turnIdx, $brief]
){
if(!key_exists($generalID, $generalTurnList)){
$generalTurnList[$generalID] = [];
}
$generalTurnList[$generalID][$turnIdx] = [$action, Json::decode($arg)];
$generalTurnList[$generalID][$turnIdx] = $brief;
}
foreach($troopLeaders as $troopLeader){
@@ -60,13 +60,12 @@ if($troops){
$troopLeader['cityText'] = CityConst::byID($troopLeader['city'])->name;
$turnText = [];
foreach($generalTurnList[$troopLeader['no']] as $rawTurnIdx => [$action, $arg]){
$actionName = getGeneralCommandClass($action)::getName();
if($actionName != '집합'){
$actionName = '~';
foreach($generalTurnList[$troopLeader['no']] as $rawTurnIdx => $brief){
if($brief != '집합'){
$brief = '~';
}
$turnIdx = $rawTurnIdx + 1;
$turnText[] = "{$turnIdx} : {$actionName}";
$turnText[] = "{$turnIdx} : {$brief}";
}
$troopLeader['turnText'] = join('<br>', $turnText);
$troops[$troopLeader['troop']]['leader'] = $troopLeader;
+2 -2
View File
@@ -569,10 +569,10 @@ function generalInfo(General $generalObj) {
}
else{
$troopCity = $db->queryFirstField('SELECT city FROM general WHERE no=%i', $generalObj->getVar('troop'));
$troopTurn = $db->queryFirstField('SELECT `action` FROM general_turn WHERE general_id = %i AND turn_idx = 0', $generalObj->getVar('troop'));
$troopTurn = $db->queryFirstField('SELECT `brief` FROM general_turn WHERE general_id = %i AND turn_idx = 0', $generalObj->getVar('troop'));
$troopInfo = $db->queryFirstField('SELECT name FROM troop WHERE troop_leader = %i', $generalObj->getVar('troop'));
if($troopTurn == 'che_집합'){
if($troopTurn == '집합'){
$troopInfo = "<strike style='color:gray;'>{$troopInfo}</strike>";
}
else if($troopCity != $generalObj->getCityID()){
+17 -9
View File
@@ -43,7 +43,8 @@ function pushGeneralCommand(int $generalID, int $turnCnt=1){
$db->update('general_turn', [
'turn_idx'=>$db->sqleval('turn_idx - %i', GameConst::$maxTurn),
'action'=>'휴식',
'arg'=>'{}'
'arg'=>'{}',
'brief'=>'휴식'
], 'general_id=%i AND turn_idx >= %i ORDER BY turn_idx ASC', $generalID, GameConst::$maxTurn);
}
@@ -63,7 +64,8 @@ function pullGeneralCommand(int $generalID, int $turnCnt=1){
$db->update('general_turn', [
'turn_idx'=>$db->sqleval('turn_idx + %i', GameConst::$maxTurn),
'action'=>'휴식',
'arg'=>'{}'
'arg'=>'{}',
'brief'=>'휴식'
], 'general_id=%i AND turn_idx < %i', $generalID, $turnCnt);
$db->update('general_turn', [
'turn_idx'=>$db->sqleval('turn_idx - %i', $turnCnt)
@@ -95,7 +97,8 @@ function pushNationCommand(int $nationID, int $level, int $turnCnt=1){
$db->update('nation_turn', [
'turn_idx'=>$db->sqleval('turn_idx - %i', GameConst::$maxChiefTurn),
'action'=>'휴식',
'arg'=>'{}'
'arg'=>'{}',
'brief'=>'휴식'
], 'nation_id=%i AND level=%i AND turn_idx >= %i ORDER BY turn_idx ASC', $nationID, $level, GameConst::$maxChiefTurn);
}
@@ -121,14 +124,15 @@ function pullNationCommand(int $nationID, int $level, int $turnCnt=1){
$db->update('nation_turn', [
'turn_idx'=>$db->sqleval('turn_idx + %i', GameConst::$maxChiefTurn),
'action'=>'휴식',
'arg'=>'{}'
'arg'=>'{}',
'brief'=>'휴식',
], 'nation_id=%i AND level=%i AND turn_idx < %i', $nationID, $level, $turnCnt);
$db->update('nation_turn', [
'turn_idx'=>$db->sqleval('turn_idx - %i', $turnCnt)
], 'nation_id=%i AND level=%i ORDER BY turn_idx ASC', $nationID, $level);
}
function _setGeneralCommand(int $generalID, array $turnList, string $command, ?array $arg = null) {
function _setGeneralCommand(int $generalID, array $turnList, string $command, ?array $arg, string $brief) {
if(!$turnList){
return;
}
@@ -137,11 +141,12 @@ function _setGeneralCommand(int $generalID, array $turnList, string $command, ?a
$db->update('general_turn', [
'action'=>$command,
'arg'=>Json::encode($arg, JSON::EMPTY_ARRAY_IS_DICT)
'arg'=>Json::encode($arg, JSON::EMPTY_ARRAY_IS_DICT),
'brief'=>$brief
], 'general_id = %i AND turn_idx IN %li', $generalID, $turnList);
}
function _setNationCommand(int $nationID, int $level, array $turnList, string $command, ?array $arg = null) {
function _setNationCommand(int $nationID, int $level, array $turnList, string $command, ?array $arg, string $brief) {
if(!$turnList){
return;
}
@@ -150,7 +155,8 @@ function _setNationCommand(int $nationID, int $level, array $turnList, string $c
$db->update('nation_turn', [
'action'=>$command,
'arg'=>Json::encode($arg, JSON::EMPTY_ARRAY_IS_DICT)
'arg'=>Json::encode($arg, JSON::EMPTY_ARRAY_IS_DICT),
'brief'=>$brief
], 'nation_id = %i AND level = %i AND turn_idx IN %li', $nationID, $level, $turnList);
}
@@ -252,7 +258,9 @@ function setGeneralCommand(int $generalID, array $turnList, string $command, ?ar
];
}
_setGeneralCommand($generalID, $turnList, $command, $arg);
$brief = $commandObj->getBrief();
_setGeneralCommand($generalID, $turnList, $command, $arg, $brief);
return [
'result'=>true,
'arg_test'=>true,
+5 -2
View File
@@ -697,7 +697,8 @@ function checkMerge() {
if($npcList){
$db->update('general_turn', [
'action'=>'che_하야',
'arg'=>null
'arg'=>null,
'brief'=>'하야',
], 'general_id IN %li AND turn_idx = 0');
}
@@ -854,7 +855,8 @@ function checkSurrender() {
if($npcList){
$db->update('general_turn', [
'action'=>'che_하야',
'arg'=>null
'arg'=>null,
'brief'=>'하야',
], 'general_id IN %li AND turn_idx = 0');
}
@@ -939,6 +941,7 @@ function updateNationState() {
'turn_idx'=>$turnIdx,
'action'=>'휴식',
'arg'=>null,
'brief'=>'휴식'
];
}
}
+19 -6
View File
@@ -241,12 +241,25 @@ else if($session->userGrade == 4){
<td style='width:700px;height:520px;' colspan=2>
<?=getMapHtml($mapTheme)?>
</td>
<td style='width:300px;overflow-y:scroll' rowspan=4>
<div id="reservedCommandList">
<div id="reservedCommandHeader">
</div>
<ul id="reservedCommandList">
</ul>
<td style='width:300px;vertical-align:top;' rowspan=4>
<div id="reservedCommandList" style='overflow-y:scroll;height:700px;'>
<table width="300" class="tb_layout b2">
<thead>
<tr height="24"><td colspan="4" class="center bg0"
><strong>- 명령 목록 - </strong><input value="<?=TimeUtil::now(false)?>" type="text" id="clock" size="19" style="background-color:black;color:white;border-style:none;"
></td></tr>
</thead>
<tbody class="center" style="font-weight:bold">
<?php for($turnIdx = 0; $turnIdx < GameConst::$maxTurn; $turnIdx++): ?>
<tr height='28' id="command_<?=$turnIdx?>"
><td width="24" class='idx_pad center bg0'><?=$turnIdx+1?></td
><td height='24' class='month_pad center bg1' style='min-width:70px;white-space:nowrap;overflow:hidden;'></td
><td width='42' class='time_pad center' style='background-color:black;white-space:nowrap;overflow:hidden;'></td
><td width='165' class='turn_pad center bg2' style='white-space:nowrap;overflow:hidden;font-weight:lighter'></td
></tr>
<?php endfor; ?>
</tbody>
</table>
</div>
</td>
</tr>
+27 -4
View File
@@ -9,15 +9,38 @@ $session = Session::requireGameLogin([])->setReadOnly();
$db = DB::db();
$commandList = [];
$gameStor = KVStorage::getStorage($db, 'game_env');
$generalID = $session->generalID;
$rawTurn = $db->queryAllLists('SELECT turn_idx, action, arg FROM general_turn WHERE general_id = %i ORDER BY turn_idx ASC');
foreach($rawTurn as [$turn_idx, $action, $arg]){
$rawTurn = $db->queryAllLists('SELECT turn_idx, action, arg, brief FROM general_turn WHERE general_id = %i ORDER BY turn_idx ASC', $generalID);
foreach($rawTurn as [$turn_idx, $action, $arg, $brief]){
$commandList[$turn_idx] = [
'action'=>$action,
'brief'=>$brief,
'arg'=>Json::decode($arg)
];
}
Json::die($commandList);
[$turnTerm, $year, $month, $lastExecute] = $gameStor->getValuesAsArray(['turnterm', 'year', 'month', 'turntime']);
$turnTime = $db->queryFirstField('SELECT turntime FROM general WHERE no=%i', $generalID);
if(cutTurn($turnTime, $turnTerm) > cutTurn($lastExecute, $turnTerm)){
//이미 이번달에 실행된 턴이다.
$month++;
if($month >= 13){
$month -= 12;
$year += 1;
}
}
Json::die([
'result'=>true,
'turnTime'=>$turnTime,
'turnTerm'=>$turnTerm,
'year'=>$year,
'month'=>$month,
'date'=>TimeUtil::now(true),
'turn'=>$commandList
]);
+1
View File
@@ -262,6 +262,7 @@ foreach(range(0, GameConst::$maxTurn - 1) as $turnIdx){
'turn_idx'=>$turnIdx,
'action'=>'휴식',
'arg'=>null,
'brief'=>'휴식'
];
}
$db->insert('general_turn', $turnRows);
+69 -3
View File
@@ -1,7 +1,73 @@
jQuery(function($){
$('#do_refresh').click(function(){
document.location.reload();
return false;
$('#do_refresh').click(function(){
document.location.reload();
return false;
});
function reloadCommandList(){
$.get({
url:'j_get_reserved_command.php',
dataType:'json',
cache: false,
}).then(function(data){
if(!data){
return;
}
if(!data.result){
return;
}
var game_clock = moment(data.date);
var now_clock = moment();
var $clock = $('#clock');
$clock.data('time-diff', game_clock.diff(now_clock));
$clock.val(game_clock.format('YYYY-MM-DD HH:mm:ss'));
var turnTime = moment(data.turnTime);
var nextTurnTime = turnTime.clone();
var year = data.year;
var month = data.month;
$.each(data.turn, function(turnIdx, turnInfo){
var $tr = $('#command_{0}'.format(turnIdx));
$tr.find('.time_pad').text(nextTurnTime.format('HH:mm'));
$tr.find('.month_pad').text('{0}年 {1}月'.format(year, month));
$tr.find('.turn_pad').text(turnInfo.brief);
nextTurnTime.add(data.turnTerm, 'minutes');
month+=1;
if(month >= 13){
year += 1;
month -= 12;
}
});
console.log(data);
});
}
function myclock() {
var $clock = $('#clock');
var now_clock = moment();
if($clock.data('time-diff') == null){
return;
}
/*
if(!$clock.attr('data-time-diff')){
var base_clock = moment($clock.attr('data-server-time'));
$clock.attr('data-time-diff', base_clock.diff(now_clock));
}
*/
var game_clock = now_clock.add(parseInt($clock.data('time-diff')), 'milliseconds');
$('#clock').val(game_clock.format('YYYY-MM-DD HH:mm:ss'));
}
setInterval(myclock, 500);
reloadCommandList();
});
+4
View File
@@ -215,6 +215,10 @@ abstract class BaseCommand{
return static::getName();
}
public function getRawClassName():string{
return static::class;
}
public function getCompensationStyle():?int{
//1 : Positive
//0 : Neutral
+1
View File
@@ -139,6 +139,7 @@ class che_거병 extends Command\GeneralCommand{
'turn_idx'=>$turnIdx,
'action'=>'휴식',
'arg'=>null,
'brief'=>'휴식',
];
}
+3 -1
View File
@@ -1177,7 +1177,8 @@ class GeneralAI{
//NOTE: 부대 편성에 보여야 하므로 이것만 DB에 직접 접근함.
$db->update('general_turn', [
'action'=>'che_집합',
'arg'=>'{}'
'arg'=>'{}',
'brief'=>'집합'
], 'general_ID=%i AND turn_idx < 6', $general->getID());
}
@@ -1402,6 +1403,7 @@ class GeneralAI{
$sumLeadershipInCity = $db->queryFirstField('SELECT sum(leadership) FROM general WHERE nation = %i AND city = %i AND leadership > 40', $nationID, $cityID);
if(
$sumLeadershipInCity > 0 &&
$city['pop'] > 30000 + $general->getLeadership(false) * 100 * 1.3 &&
Util::randBool(($city['pop'] - 30000) / $sumLeadershipInCity * 100)
){
+1
View File
@@ -278,6 +278,7 @@ class ResetHelper{
'turn_idx'=>$turnIdx,
'action'=>'휴식',
'arg'=>null,
'brief'=>'휴식'
];
}
$db->insert('general_turn', $turnRows);
+1
View File
@@ -346,6 +346,7 @@ class NPC{
'turn_idx'=>$turnIdx,
'action'=>'휴식',
'arg'=>null,
'brief'=>'휴식',
];
}
$db->insert('general_turn', $turnRows);
+1
View File
@@ -158,6 +158,7 @@ class Nation{
'turn_idx'=>$turnIdx,
'action'=>'휴식',
'arg'=>'{}',
'brief'=>'휴식',
];
}
}
+2
View File
@@ -144,6 +144,7 @@ CREATE TABLE `general_turn` (
`turn_idx` INT(4) NOT NULL,
`action` VARCHAR(16) NOT NULL,
`arg` TEXT NULL DEFAULT NULL,
`brief` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `general_id` (`general_id`, `turn_idx`),
INDEX `action` (`action`, `turn_idx`, `general_id`)
@@ -204,6 +205,7 @@ CREATE TABLE `nation_turn` (
`turn_idx` INT(4) NOT NULL,
`action` VARCHAR(16) NOT NULL,
`arg` TEXT NULL DEFAULT NULL,
`brief` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `nation` (`nation_id`, `level`, `turn_idx`),
INDEX `action` (`action`, `turn_idx`, `nation_id`, `level`)