From a363f6ef5fb26b5ec25d1497b59dedf4e7dc5bec Mon Sep 17 00:00:00 2001 From: hide_d Date: Wed, 23 Jan 2019 03:11:07 +0900 Subject: [PATCH] =?UTF-8?q?=EC=99=B8=EA=B5=90=EB=B6=80=20=ED=8B=80=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/j_diplomacy_get_letter.php | 68 +++++++++++++++ hwe/j_diplomacy_send_letter.php | 4 + hwe/js/diplomacy.js | 150 ++++++++++++++++++++++++++++++++ 3 files changed, 222 insertions(+) create mode 100644 hwe/j_diplomacy_get_letter.php create mode 100644 hwe/js/diplomacy.js diff --git a/hwe/j_diplomacy_get_letter.php b/hwe/j_diplomacy_get_letter.php new file mode 100644 index 00000000..b822a75a --- /dev/null +++ b/hwe/j_diplomacy_get_letter.php @@ -0,0 +1,68 @@ +setReadOnly(); +$userID = Session::getUserID(); + +$db = DB::db(); +$gameStor = KVStorage::getStorage($db, 'game_env'); + +$isSecretBoard = Util::getReq('isSecret', 'bool', false); + +increaseRefresh("외교부", 1); + +$me = $db->queryFirstRow('SELECT no, nation, level, permission, con, turntime, belong, penalty FROM general WHERE owner=%i', $userID); + + +$con = checkLimit($me['con']); +if ($con >= 2) { + Json::die([ + 'result'=>false, + 'reason'=>'접속 제한입니다.' + ]); +} + +$permission = checkSecretPermission($me); +if($permission < 0){ + Json::die([ + 'result'=>false, + 'reason'=>'국가에 소속되어있지 않습니다.' + ]); + +} + +$letters = []; + +foreach( + $db->query( + 'SELECT * FROM ng_diplomacy WHERE src_nation_id = %i OR dest_nation_id = %i ORDER BY date desc', + $me['nation'], $me['nation'] + ) as $letter +){ + + if($permission < 3){ + $letter['detail'] = '(권한이 부족합니다)'; + } + $letter['comment'] = []; + $letter['aux'] = Json::decode($letter['aux']); + $letters[$letter['no']] = $letter; +} + +$nations = []; +foreach(getAllNationStaticInfo() as $nation){ + if($nation['nation'] == 0 || $nation['nation'] == $me['nation']){ + continue; + } + $nations[] = $nation; +} + +Json::die([ + 'result'=>true, + 'nations'=>$nations, + 'letters'=>$letters, + 'reason'=>'success' +]); + diff --git a/hwe/j_diplomacy_send_letter.php b/hwe/j_diplomacy_send_letter.php index 70becf13..cd54e376 100644 --- a/hwe/j_diplomacy_send_letter.php +++ b/hwe/j_diplomacy_send_letter.php @@ -16,6 +16,10 @@ $textDetail = Util::getReq('textDetail'); increaseRefresh("외교부", 1); +if($prevNo < 1){ + $prevNo = null; +} + $me = $db->queryFirstRow('SELECT no, nation, level, permission, con, turntime, belong, penalty FROM general WHERE owner=%i', $userID); $con = checkLimit($me['con']); diff --git a/hwe/js/diplomacy.js b/hwe/js/diplomacy.js new file mode 100644 index 00000000..e106dc1b --- /dev/null +++ b/hwe/js/diplomacy.js @@ -0,0 +1,150 @@ + + +function submitLetter(){ + var $letter = $('#newLetter'); + var $brief = $letter.find('input.briefInput'); + var $detail = $letter.find('input.detailInput'); + var $prevNo = $letter.find('input.prevNo'); + var $destNation = $letter.find('input.destNation'); + var brief = $.trim($brief.val()); + var detail = $.trim($detail.val()); + var prevNo = parseInt($prevNo.val()); + var destNation = parseInt($destNation.val()); + + if(prevNo !== null && prevNo < 1){ + prevNo = null; + } + + + if(!brief){ + return false; + } + + $brief.val(''); + $detail.val(''); + + $.post({ + url:'j_diplomacy_send_letter.php', + dataType:'json', + data:{ + brief:brief, + detail:detail, + destNation:destNation, + prevNo:prevNo + } + }).then(function(data){ + if(!data){ + $title.val(title); + $text.val(text); + alert() + return quickReject('외교 서신을 보내는데 실패했습니다.'); + } + if(!data.result){ + $title.val(title); + $text.val(text); + return quickReject('외교 서신을 보내는데 실패했습니다. : '+data.reason); + } + + return loadLetters().done(drawLetters); + + }, errUnknown) + .fail(function(reason){ + alert(reason); + }); + + return false; +} + +function repondLetter(isAgree){ + var $this = $(this); + var $letter = $this.parents('.letter').eq(0); + var letterNo = $letter.data('no'); + + $.post({ + url:'j_diplomacy_respond_letter.php', + dataType:'json', + data:{ + letterNo:letterNo, + isAgree:isAgree, + reason:'', //TODO: reason 받기 + } + }).then(function(data){ + if(!data){ + $text.val(text); + alert() + return quickReject('응답을 실패했습니다.'); + } + if(!data.result){ + $text.val(text); + return quickReject('응답을 실패했습니다. : '+data.reason); + } + + return loadArticles().done(drawLetters); + + }, errUnknown) + .fail(function(reason){ + alert(reason); + }); + + return false; +} + +function drawLetter(letterObj){ + var $letterFrame = $('#letterTemplate > .letterFrame'); + + var $letter = $letterFrame.clone(); + $letter.addClass('letterObj') + .data('no', letterObj.no) + + //TODO: 국가명, 수뇌명 입력 + $letter.find('.date').text(letterObj.date); + $letter.find('.brief').html(nl2br(escapeHtml(letterObj.brief))); + $letter.find('.detail').html(nl2br(escapeHtml(letterObj.detail))); + //TODO: 바꿀 것 + + $('#board').append($letter); +} + +function drawLetters(lettersObj){ + var deferred = $.Deferred(); + if(!lettersObj){ + return quickReject('받아오는데 실패했습니다.'); + } + + //TODO: 국가 리스트 출력 + + if(!lettersObj.result){ + return quickReject('에러가 발생했습니다. : '+lettersObj.reason); + } + + $('.letterObj').detach();//첫 버전이니까 일괄 삭제 일괄 로드 + $.each(lettersObj.letters, drawLetter); + return true; +} + +function loadLetters(){ + return $.post({ + url:'j_diplomacy_get_letters.php', + dataType:'json', //첫 버전이니까 전체 다 불러오자 + data:{ + } + }); +} + +$(function(){ + +$('#submitLetter').click(submitLetter); +$('.respondAgree').click(function(){ + return repondLetter(true); +}); +$('.respondDisagree').click(function(){ + return repondLetter(false); +}); + +loadLetters() +.then(drawLetters, errUnknown) +.fail(function(reason){ + alert(reason); +}); + +}); \ No newline at end of file