빙의 코드 개선
- 유효 기간 관련 늘림. - 유효 기간 가까워지면 색으로 표시. 만료 표기도 추가 - 다른 장수 보기를 남은 초 기준으로 수정
This commit is contained in:
@@ -39,5 +39,10 @@
|
|||||||
position: relative;
|
position: relative;
|
||||||
top: -1px;
|
top: -1px;
|
||||||
*overflow: hidden;
|
*overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#outdate_token{
|
||||||
|
color:red;
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@ namespace sammo;
|
|||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
const VALID_SECOND = 25;
|
const VALID_SECOND = 90;
|
||||||
const PICK_MORE_SECOND = 10;
|
const PICK_MORE_SECOND = 10;
|
||||||
const KEEP_CNT = 3;
|
const KEEP_CNT = 3;
|
||||||
|
|
||||||
@@ -74,10 +74,14 @@ if($token && $refresh){
|
|||||||
}
|
}
|
||||||
|
|
||||||
if($token && !$refresh){
|
if($token && !$refresh){
|
||||||
|
$pickMoreFrom = (new \DateTime($token['pick_more_from']))->getTimestamp();
|
||||||
|
$nowT = $oNow->getTimestamp();
|
||||||
|
|
||||||
Json::die([
|
Json::die([
|
||||||
'result'=>true,
|
'result'=>true,
|
||||||
'pick'=>Json::decode($token['pick_result']),
|
'pick'=>Json::decode($token['pick_result']),
|
||||||
'pickMoreFrom'=>$token['pick_more_from'],
|
'pickMoreFrom'=>$token['pick_more_from'],
|
||||||
|
'pickMoreSeconds'=>$pickMoreFrom-$nowT,
|
||||||
'validUntil'=>$token['valid_until']
|
'validUntil'=>$token['valid_until']
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
@@ -114,7 +118,7 @@ while(count($pickResult) < $pickLimit){
|
|||||||
|
|
||||||
$newNonce = mt_rand(0, 0xfffffff);
|
$newNonce = mt_rand(0, 0xfffffff);
|
||||||
|
|
||||||
$validSecond = max(VALID_SECOND, $turnterm*25);
|
$validSecond = max(VALID_SECOND, $turnterm*40);
|
||||||
$pickMoreSecond = max(PICK_MORE_SECOND, $turnterm*10);
|
$pickMoreSecond = max(PICK_MORE_SECOND, $turnterm*10);
|
||||||
|
|
||||||
$validUntil = $oNow->add(new \DateInterval(sprintf('PT%dS', $validSecond)));
|
$validUntil = $oNow->add(new \DateInterval(sprintf('PT%dS', $validSecond)));
|
||||||
@@ -160,5 +164,6 @@ Json::die([
|
|||||||
'result'=>true,
|
'result'=>true,
|
||||||
'pick'=>$pickResult,
|
'pick'=>$pickResult,
|
||||||
'pickMoreFrom'=>($inserted===-1)?$pickMoreFrom->format('Y-m-d H:i:s'):'2000-01-01 01:00:00',
|
'pickMoreFrom'=>($inserted===-1)?$pickMoreFrom->format('Y-m-d H:i:s'):'2000-01-01 01:00:00',
|
||||||
|
'pickMoreSeconds'=>($inserted===-1)?$pickMoreSecond:0,
|
||||||
'validUntil'=>$validUntil->format('Y-m-d H:i:s')
|
'validUntil'=>$validUntil->format('Y-m-d H:i:s')
|
||||||
]);
|
]);
|
||||||
+27
-2
@@ -29,8 +29,29 @@ function pickGeneral(){
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function updateOutdateTimer(){
|
||||||
|
var $validUntilText = $('#valid_until_text');
|
||||||
|
var now = Date.now();
|
||||||
|
var validUntil = $validUntilText.data('until');
|
||||||
|
if(validUntil <= 0){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if(validUntil < now){
|
||||||
|
$validUntilText.data('until',0);
|
||||||
|
$('#valid_until').hide();
|
||||||
|
$('#outdate_token').show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if(validUntil - now <= 30000){
|
||||||
|
$validUntilText.css('color', "rgb(255, {0}, {0})".format(255*(validUntil - now)/30000));
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(updateOutdateTimer, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
function updatePickMoreTimer(){
|
function updatePickMoreTimer(){
|
||||||
var $btn = $('#btn_pick_more');
|
var $btn = $('#btn_pick_more');
|
||||||
|
|
||||||
var now = Date.now();
|
var now = Date.now();
|
||||||
var remain = ($btn.data('available') - now) / 1000;
|
var remain = ($btn.data('available') - now) / 1000;
|
||||||
if(remain <= 0){
|
if(remain <= 0){
|
||||||
@@ -46,8 +67,10 @@ function updatePickMoreTimer(){
|
|||||||
|
|
||||||
function printGenerals(value){
|
function printGenerals(value){
|
||||||
$('.card_holder').empty();
|
$('.card_holder').empty();
|
||||||
$('#valid_until_text').html(value.validUntil);
|
$('#valid_until_text').html(value.validUntil).data('until', (new Date(value.validUntil)).getTime()).show().css('color','white');
|
||||||
$('#btn_pick_more').data('available', new Date(value.pickMoreFrom).getTime()).prop('disabled',true);
|
$('#outdate_token').hide();
|
||||||
|
var time = Date.now() + value.pickMoreSeconds*1000;
|
||||||
|
$('#btn_pick_more').data('available', time).prop('disabled',true);
|
||||||
$.each(value.pick, function(idx, cardData){
|
$.each(value.pick, function(idx, cardData){
|
||||||
cardData.iconPath = getIconPath(cardData.imgsvr, cardData.picture);
|
cardData.iconPath = getIconPath(cardData.imgsvr, cardData.picture);
|
||||||
|
|
||||||
@@ -59,6 +82,7 @@ function printGenerals(value){
|
|||||||
});
|
});
|
||||||
|
|
||||||
updatePickMoreTimer();
|
updatePickMoreTimer();
|
||||||
|
updateOutdateTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
$(function($){
|
$(function($){
|
||||||
@@ -90,6 +114,7 @@ $('#btn_pick_more').click(function(){
|
|||||||
alert(result.reason);
|
alert(result.reason);
|
||||||
location.refresh();
|
location.refresh();
|
||||||
}
|
}
|
||||||
|
console.log(result);
|
||||||
printGenerals(result);
|
printGenerals(result);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
+8
-8
@@ -24,15 +24,15 @@ $nations = $db->queryAllLists('SELECT `name`, scoutmsg, color FROM nation');
|
|||||||
<head>
|
<head>
|
||||||
<title><?=UniqueConst::$serverName?>: NPC빙의</title>
|
<title><?=UniqueConst::$serverName?>: NPC빙의</title>
|
||||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
||||||
<link rel='stylesheet' href='css/normalize.css' type='text/css'>
|
<link rel='stylesheet' href='css/normalize.css?180505_2' type='text/css'>
|
||||||
<link rel='stylesheet' href='../d_shared/common.css' type='text/css'>
|
<link rel='stylesheet' href='../d_shared/common.css?180505_2' type='text/css'>
|
||||||
<link rel='stylesheet' href='../css/config.css' type='text/css'>
|
<link rel='stylesheet' href='../css/config.css?180505_2' type='text/css'>
|
||||||
<link rel='stylesheet' href='css/common.css' type='text/css'>
|
<link rel='stylesheet' href='css/common.css?180505_2' type='text/css'>
|
||||||
<link rel='stylesheet' href='css/select_npc.css' type='text/css'>
|
<link rel='stylesheet' href='css/select_npc.css?180505_2' type='text/css'>
|
||||||
<script type="text/javascript" src="../d_shared/common_path.js"></script>
|
<script type="text/javascript" src="../d_shared/common_path.js"></script>
|
||||||
<script type="text/javascript" src="../js/common.js"></script>
|
|
||||||
<script type="text/javascript" src="../e_lib/jquery-3.2.1.min.js"></script>
|
<script type="text/javascript" src="../e_lib/jquery-3.2.1.min.js"></script>
|
||||||
<script src="js/select_npc.js"></script>
|
<script type="text/javascript" src="../js/common.js?180505_2"></script>
|
||||||
|
<script src="js/select_npc.js?180505_2"></script>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
@@ -78,7 +78,7 @@ history.go(-1);
|
|||||||
<div class="bg0">
|
<div class="bg0">
|
||||||
<div class="bg1 with_border legacy_layout font1" style="text-align:center;font-weight:bold;">장수 빙의</div>
|
<div class="bg1 with_border legacy_layout font1" style="text-align:center;font-weight:bold;">장수 빙의</div>
|
||||||
<div class="with_border legacy_layout" style="text-align:center;">
|
<div class="with_border legacy_layout" style="text-align:center;">
|
||||||
<small id="valid_until">(<span id="valid_until_text"></span> 까지 유효)</small><br>
|
<small id="valid_until">(<span id="valid_until_text"></span> 까지 유효)</small><small id="outdate_token">- 만료 -</small><br>
|
||||||
<form class="card_holder">
|
<form class="card_holder">
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user