From 0a6496ddfb4f63f4ac57d1722997ddd51e9d5ad2 Mon Sep 17 00:00:00 2001 From: hide_d Date: Thu, 11 Jun 2020 00:29:36 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B4=80=EC=A7=81=20=EB=B9=84=EC=9A=B0?= =?UTF-8?q?=EA=B8=B0=20=EC=95=88=EB=90=98=EB=8A=94=20=EA=B2=83=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/j_myBossInfo.php | 719 ++++++++++++++++++++++--------------------- hwe/js/bossInfo.js | 394 ++++++++++++------------ 2 files changed, 554 insertions(+), 559 deletions(-) diff --git a/hwe/j_myBossInfo.php b/hwe/j_myBossInfo.php index c8d93fd1..a2366694 100644 --- a/hwe/j_myBossInfo.php +++ b/hwe/j_myBossInfo.php @@ -1,360 +1,361 @@ -setReadOnly(); -$userID = Session::getUserID(); - -$db = DB::db(); -$gameStor = KVStorage::getStorage($db, 'game_env'); -$gameStor->cacheValues(['startyear','year','month','scenario']); - -$me = $db->queryFirstRow('SELECT no,nation,officer_level from general where owner=%i', $userID); -$myOfficerLevel = $me['officer_level']; -$nationID = $me['nation']; - -//수뇌가 아니면 아무것도 할 수 없음 -if($myOfficerLevel < 5){ - Json::die([ - 'result'=>false, - 'reason'=>'수뇌가 아닙니다.' - ]); -} - -if($action === '추방' && $destGeneralID==0){ - Json::die([ - 'result'=>false, - 'reason'=>'장수가 지정되지 않았습니다.' - ]); -} - -if($destGeneralID==0){ - $general = new DummyGeneral(true); -} -else{ - $general = General::createGeneralObjFromDB($destGeneralID, [ - 'name', 'leadership', 'strength', 'intel', 'gold','rice', - 'troop','officer_level','npc','picture','imgsvr', - 'permission','penalty','belong', 'crewtype', - 'experience', 'dedication', 'betray', 'dedlevel', 'explevel', 'makelimit', - ], 1); - - if($general instanceof DummyGeneral){ - Json::die([ - 'result'=>false, - 'reason'=>'올바르지 않은 장수입니다.' - ]); - } - - if($nationID != $general->getNationID()){ - Json::die([ - 'result'=>false, - 'reason'=>'아국 장수가 아닙니다' - ]); - } -} - -if($officerLevel == 12){ - Json::die([ - 'result'=>false, - 'reason'=>'군주를 대상으로 할 수 없습니다.' - ]); -} - -function do수뇌임명(General $general, int $targetOfficerLevel):?string{ - $generalID = $general->getID(); - $nationID = $general->getNationID(); - - $db = DB::db(); - - [$chiefSet, $nationLevel] = $db->queryFirstList('SELECT chief_set,level FROM nation WHERE nation = %i',$nationID); - - // 임명가능 레벨 - $lv = getNationChiefLevel($nationLevel); - - if($targetOfficerLevel < $lv){ - return '임명불가능한 관직입니다.'; - } - - if(isOfficerSet($chiefSet, $targetOfficerLevel)){ - return '지금은 임명할 수 없습니다.'; - } - - //기존 장수 일반으로 - $db->update('general', [ - 'officer_level'=>1, - 'officer_city'=>0, - ], 'nation=%i AND officer_level=%i AND no!=%i', $nationID, $targetOfficerLevel, $generalID); - - if($targetOfficerLevel === 11){ - - } - else if($targetOfficerLevel % 2 == 0){ - if($general->getVar('strength') < GameConst::$chiefStatMin){ - return '무력이 부족합니다.'; - } - - } - else{ - if($general->getVar('intel') < GameConst::$chiefStatMin){ - return '지력이 부족합니다.'; - } - } - - //신임 장수 - $general->setVar('officer_level', $targetOfficerLevel); - $general->setVar('officer_city', 0); - $db->update('nation', [ - 'chief_set'=> $db->sqleval('chief_set | %i', doOfficerSet(0, $targetOfficerLevel)), - ], 'nation=%i', $nationID); - $general->applyDB($db); - - return null; -} - -function do도시임명(General $general, int $cityID, int $targetOfficerLevel):?string{ - $nationID = $general->getNationID(); - - $db = DB::db(); - - if(CityConst::byID($cityID) === null){ - return '올바르지 않은 도시입니다'; - } - - $officerSet = $db->queryFirstField('SELECT officer_set FROM city WHERE nation=%i AND city=%i', $nationID, $cityID); - if($officerSet === null){ - return '아국 도시가 아닙니다'; - } - - if(isOfficerSet($officerSet, $targetOfficerLevel)){ - return '이미 다른 장수가 임명되어있습니다'; - } - - //기존 장수 일반으로 - $db->update('general', [ - 'officer_level'=>1, - 'officer_city'=>0, - ], 'officer_level=%i AND officer_city=%i AND no!=%i', $targetOfficerLevel, $cityID, $general->getID()); - - if($general instanceof DummyGeneral){ - return null; - } - - if($targetOfficerLevel === 4 && $general->getVar('strength') < GameConst::$chiefStatMin){ - return '무력이 부족합니다.'; - } - - if($targetOfficerLevel === 3 && $general->getVar('intel') < GameConst::$chiefStatMin){ - return '지력이 부족합니다.'; - } - - //신임 장수 - $db->update('city', [ - 'officer_set'=>$db->sqleval('officer_set | %i', doOfficerSet(0, $targetOfficerLevel)), - ], 'city=%i AND nation=%i', $cityID, $nationID); - $general->setVar('officer_level', $targetOfficerLevel); - $general->setVar('officer_city', $cityID); - $general->applyDB($db); - - return null; -} - -function do추방(General $general, int $myOfficerLevel):?string{ - $generalID = $general->getID(); - $generalName = $general->getVar('name'); - $nationID = $general->getNationID(); - - - - //추방할사람이 외교권자이면 불가 - $permission = checkSecretPermission($general->getRaw()); - if($permission == 4){ - return '외교권자는 추방할 수 없습니다.'; - } - - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $env = $gameStor->getValues(['startyear','year','month','scenario']); - - $nation = $db->queryFirstRow('SELECT name,chief_set,color FROM nation WHERE nation=%i', $nationID); - $nationName = $nation['name']; - - $logger = $general->getLogger(); - - //이미 지정했다면 무시 - if(isOfficerSet($nation['chief_set'], $myOfficerLevel) || ($myOfficerLevel == 0 && $myOfficerLevel == 12)) { - return '이미 추방 권한을 사용했습니다.'; - } - $gold = 0; - $rice = 0; - // 금쌀1000이상은 남김 - if($general->getVar('gold') > GameConst::$defaultGold) { - $gold = $general->getVar('gold') - GameConst::$defaultGold; - $general->setVar('gold', GameConst::$defaultGold); - } - if($general->getVar('rice') > GameConst::$defaultRice) { - $rice = $general->getVar('rice') - GameConst::$defaultRice; - $general->setVar('rice', GameConst::$defaultRice); - } - - $general->setVar('nation', 0); - $general->setVar('officer_level', 0); - $general->setVar('officer_city', 0); - $general->setVar('belong', 0); - $oldMakeLimit = $general->getVar('makelimit'); - $general->setVar('makelimit', 12); - $general->setVar('permission', 'normal'); - - $josaYi = JosaUtil::pick($generalName, '이'); - $logger->pushGlobalActionLog("{$generalName}{$josaYi} {$nationName}에서 추방당했습니다."); - $logger->pushGeneralActionLog("{$nationName}에서 추방당했습니다.", ActionLogger::PLAIN); - - // 명성/공헌 N*10%감소 - if($env['year'] <= $env['startyear'] && $general->getNPCType() < 2){ - $general->setVar('makelimit', $oldMakeLimit); - } - else{ - $betrayCnt = $general->getVar('betray'); - $general->addExperience(-$general->getVar('experience')*0.1*$betrayCnt); - $general->addDedication(-$general->getVar('dedication')*0.1*$betrayCnt); - $general->increaseVarWithLimit('betray', 1, null, GameConst::$maxBetrayCnt); - } - - //부대장일 경우 - if($general->getVar('troop') == $generalID){ - // 모두 탈퇴 - $db->update('general', [ - 'troop'=>0, - ], 'troop = %i', $generalID); - $db->delete('troop', 'troop_leader=%i', $generalID); - } - $general->setVar('troop', 0); - - if($general->getNPCType() >= 2 && ($env['scenario'] < 100 || Util::randBool(0.01))) { - - $str = Util::choiceRandom([ - '날 버리다니... 곧 전장에서 복수해주겠다...', - '추방이라... 내가 무얼 잘못했단 말인가...', - '어디 추방해가면서 잘되나 보자... 꼭 복수하겠다...', - '인덕이 제일이거늘... 추방이 웬말인가... 저주한다!', - '날 추방했으니 그 복수로 적국에 정보를 팔아 넘겨야겠군요. 그럼 이만.' - ]); - - $src = new MessageTarget( - $generalID, - $generalName, - $nationID, - $nation['name'], - $nation['color'], - GetImageURL($general->getVar('imgsvr'), $general->getVar('picture')) - ); - $msg = new Message( - Message::MSGTYPE_PUBLIC, - $src, - $src, - $str, - new \DateTime(), - new \DateTime('9999-12-31'), - [] - ); - $msg->send(); - } - - if($env['year'] < $env['startyear']+3) { - //초반엔 군주 부상 증가(엔장 임관지양) - $db->update('general', [ - 'injury'=>$db->sqleval('least(injury + 1, %i)', 80), - ], 'nation=%i AND officer_level=12', $nationID); - - $db->update('nation', [ - 'gennum'=>$db->sqleval('gennum - %i', $general->getNPCType()!=5?1:0), - 'gold'=>$db->sqleval('gold + %i', $gold), - 'rice'=>$db->sqleval('rice + %i', $rice), - ], 'nation = %i', $nationID); - } else { - //이번분기는 추방불가(초반 제외) - $db->update('nation', [ - 'chief_set'=>$db->sqleval('chief_set | %i', doOfficerSet(0, $myOfficerLevel)), - 'gennum'=>$db->sqleval('gennum - %i', $general->getNPCType()!=5?1:0), - 'gold'=>$db->sqleval('gold + %i', $gold), - 'rice'=>$db->sqleval('rice + %i', $rice), - ], 'nation = %i', $nationID); - } - - $logger->pushGeneralHistoryLog("{$nation['name']}에서 추방됨"); - $general->applyDB($db); - - return null; -} - - - -if($action == "임명") { - if(2 <= $officerLevel && $officerLevel <= 4){ - if(!$destCityID){ - Json::die([ - 'result'=>false, - 'reason'=>'도시가 지정되지 않았습니다.' - ]); - } - $result = do도시임명($general, $destCityID, $officerLevel); - if($result !== null){ - Json::die([ - 'result'=>false, - 'reason'=>$result - ]); - } - Json::die([ - 'result'=>true, - 'reason'=>'success' - ]); - } - - if(5 <= $officerLevel && $officerLevel < 12){ - $result = do수뇌임명($general, $officerLevel); - if($result !== null){ - Json::die([ - 'result'=>false, - 'reason'=>$result - ]); - } - Json::die([ - 'result'=>true, - 'reason'=>'success' - ]); - } - - Json::die([ - 'result'=>false, - 'reason'=>'올바르지 않은 지정입니다.' - ]); -} - -if($action == "추방") { - $result = do추방($general, $myOfficerLevel); - if($result !== null){ - Json::die([ - 'result'=>false, - 'reason'=>$result - ]); - } - Json::die([ - 'result'=>true, - 'reason'=>'success' - ]); -} - -Json::die([ - 'result'=>false, - 'reason'=>'올바르지 않은 명령입니다.' +setReadOnly(); +$userID = Session::getUserID(); + +$db = DB::db(); +$gameStor = KVStorage::getStorage($db, 'game_env'); +$gameStor->cacheValues(['startyear','year','month','scenario']); + +$me = $db->queryFirstRow('SELECT no,nation,officer_level from general where owner=%i', $userID); +$myOfficerLevel = $me['officer_level']; +$nationID = $me['nation']; + +//수뇌가 아니면 아무것도 할 수 없음 +if($myOfficerLevel < 5){ + Json::die([ + 'result'=>false, + 'reason'=>'수뇌가 아닙니다.' + ]); +} + +if($action === '추방' && $destGeneralID==0){ + Json::die([ + 'result'=>false, + 'reason'=>'장수가 지정되지 않았습니다.' + ]); +} + +if($destGeneralID==0){ + $general = new DummyGeneral(true); + $general->setVar('nation', $nationID); +} +else{ + $general = General::createGeneralObjFromDB($destGeneralID, [ + 'name', 'leadership', 'strength', 'intel', 'gold','rice', + 'troop','officer_level','npc','picture','imgsvr', + 'permission','penalty','belong', 'crewtype', + 'experience', 'dedication', 'betray', 'dedlevel', 'explevel', 'makelimit', + ], 1); + + if($general instanceof DummyGeneral){ + Json::die([ + 'result'=>false, + 'reason'=>'올바르지 않은 장수입니다.' + ]); + } + + if($nationID != $general->getNationID()){ + Json::die([ + 'result'=>false, + 'reason'=>'아국 장수가 아닙니다' + ]); + } +} + +if($officerLevel == 12){ + Json::die([ + 'result'=>false, + 'reason'=>'군주를 대상으로 할 수 없습니다.' + ]); +} + +function do수뇌임명(General $general, int $targetOfficerLevel):?string{ + $generalID = $general->getID(); + $nationID = $general->getNationID(); + + $db = DB::db(); + + [$chiefSet, $nationLevel] = $db->queryFirstList('SELECT chief_set,level FROM nation WHERE nation = %i',$nationID); + + // 임명가능 레벨 + $lv = getNationChiefLevel($nationLevel); + + if($targetOfficerLevel < $lv){ + return '임명불가능한 관직입니다.'; + } + + if(isOfficerSet($chiefSet, $targetOfficerLevel)){ + return '지금은 임명할 수 없습니다.'; + } + + //기존 장수 일반으로 + $db->update('general', [ + 'officer_level'=>1, + 'officer_city'=>0, + ], 'nation=%i AND officer_level=%i AND no!=%i', $nationID, $targetOfficerLevel, $generalID); + + if($targetOfficerLevel === 11){ + + } + else if($targetOfficerLevel % 2 == 0){ + if($general->getVar('strength') < GameConst::$chiefStatMin){ + return '무력이 부족합니다.'; + } + + } + else{ + if($general->getVar('intel') < GameConst::$chiefStatMin){ + return '지력이 부족합니다.'; + } + } + + //신임 장수 + $general->setVar('officer_level', $targetOfficerLevel); + $general->setVar('officer_city', 0); + $db->update('nation', [ + 'chief_set'=> $db->sqleval('chief_set | %i', doOfficerSet(0, $targetOfficerLevel)), + ], 'nation=%i', $nationID); + $general->applyDB($db); + + return null; +} + +function do도시임명(General $general, int $cityID, int $targetOfficerLevel):?string{ + $nationID = $general->getNationID(); + + $db = DB::db(); + + if(CityConst::byID($cityID) === null){ + return '올바르지 않은 도시입니다'; + } + + $officerSet = $db->queryFirstField('SELECT officer_set FROM city WHERE nation=%i AND city=%i', $nationID, $cityID); + if($officerSet === null){ + return '아국 도시가 아닙니다'; + } + + if(isOfficerSet($officerSet, $targetOfficerLevel)){ + return '이미 다른 장수가 임명되어있습니다'; + } + + //기존 장수 일반으로 + $db->update('general', [ + 'officer_level'=>1, + 'officer_city'=>0, + ], 'officer_level=%i AND officer_city=%i AND no!=%i', $targetOfficerLevel, $cityID, $general->getID()); + + if($general instanceof DummyGeneral){ + return null; + } + + if($targetOfficerLevel === 4 && $general->getVar('strength') < GameConst::$chiefStatMin){ + return '무력이 부족합니다.'; + } + + if($targetOfficerLevel === 3 && $general->getVar('intel') < GameConst::$chiefStatMin){ + return '지력이 부족합니다.'; + } + + //신임 장수 + $db->update('city', [ + 'officer_set'=>$db->sqleval('officer_set | %i', doOfficerSet(0, $targetOfficerLevel)), + ], 'city=%i AND nation=%i', $cityID, $nationID); + $general->setVar('officer_level', $targetOfficerLevel); + $general->setVar('officer_city', $cityID); + $general->applyDB($db); + + return null; +} + +function do추방(General $general, int $myOfficerLevel):?string{ + $generalID = $general->getID(); + $generalName = $general->getVar('name'); + $nationID = $general->getNationID(); + + + + //추방할사람이 외교권자이면 불가 + $permission = checkSecretPermission($general->getRaw()); + if($permission == 4){ + return '외교권자는 추방할 수 없습니다.'; + } + + $db = DB::db(); + $gameStor = KVStorage::getStorage($db, 'game_env'); + $env = $gameStor->getValues(['startyear','year','month','scenario']); + + $nation = $db->queryFirstRow('SELECT name,chief_set,color FROM nation WHERE nation=%i', $nationID); + $nationName = $nation['name']; + + $logger = $general->getLogger(); + + //이미 지정했다면 무시 + if(isOfficerSet($nation['chief_set'], $myOfficerLevel) || ($myOfficerLevel == 0 && $myOfficerLevel == 12)) { + return '이미 추방 권한을 사용했습니다.'; + } + $gold = 0; + $rice = 0; + // 금쌀1000이상은 남김 + if($general->getVar('gold') > GameConst::$defaultGold) { + $gold = $general->getVar('gold') - GameConst::$defaultGold; + $general->setVar('gold', GameConst::$defaultGold); + } + if($general->getVar('rice') > GameConst::$defaultRice) { + $rice = $general->getVar('rice') - GameConst::$defaultRice; + $general->setVar('rice', GameConst::$defaultRice); + } + + $general->setVar('nation', 0); + $general->setVar('officer_level', 0); + $general->setVar('officer_city', 0); + $general->setVar('belong', 0); + $oldMakeLimit = $general->getVar('makelimit'); + $general->setVar('makelimit', 12); + $general->setVar('permission', 'normal'); + + $josaYi = JosaUtil::pick($generalName, '이'); + $logger->pushGlobalActionLog("{$generalName}{$josaYi} {$nationName}에서 추방당했습니다."); + $logger->pushGeneralActionLog("{$nationName}에서 추방당했습니다.", ActionLogger::PLAIN); + + // 명성/공헌 N*10%감소 + if($env['year'] <= $env['startyear'] && $general->getNPCType() < 2){ + $general->setVar('makelimit', $oldMakeLimit); + } + else{ + $betrayCnt = $general->getVar('betray'); + $general->addExperience(-$general->getVar('experience')*0.1*$betrayCnt); + $general->addDedication(-$general->getVar('dedication')*0.1*$betrayCnt); + $general->increaseVarWithLimit('betray', 1, null, GameConst::$maxBetrayCnt); + } + + //부대장일 경우 + if($general->getVar('troop') == $generalID){ + // 모두 탈퇴 + $db->update('general', [ + 'troop'=>0, + ], 'troop = %i', $generalID); + $db->delete('troop', 'troop_leader=%i', $generalID); + } + $general->setVar('troop', 0); + + if($general->getNPCType() >= 2 && ($env['scenario'] < 100 || Util::randBool(0.01))) { + + $str = Util::choiceRandom([ + '날 버리다니... 곧 전장에서 복수해주겠다...', + '추방이라... 내가 무얼 잘못했단 말인가...', + '어디 추방해가면서 잘되나 보자... 꼭 복수하겠다...', + '인덕이 제일이거늘... 추방이 웬말인가... 저주한다!', + '날 추방했으니 그 복수로 적국에 정보를 팔아 넘겨야겠군요. 그럼 이만.' + ]); + + $src = new MessageTarget( + $generalID, + $generalName, + $nationID, + $nation['name'], + $nation['color'], + GetImageURL($general->getVar('imgsvr'), $general->getVar('picture')) + ); + $msg = new Message( + Message::MSGTYPE_PUBLIC, + $src, + $src, + $str, + new \DateTime(), + new \DateTime('9999-12-31'), + [] + ); + $msg->send(); + } + + if($env['year'] < $env['startyear']+3) { + //초반엔 군주 부상 증가(엔장 임관지양) + $db->update('general', [ + 'injury'=>$db->sqleval('least(injury + 1, %i)', 80), + ], 'nation=%i AND officer_level=12', $nationID); + + $db->update('nation', [ + 'gennum'=>$db->sqleval('gennum - %i', $general->getNPCType()!=5?1:0), + 'gold'=>$db->sqleval('gold + %i', $gold), + 'rice'=>$db->sqleval('rice + %i', $rice), + ], 'nation = %i', $nationID); + } else { + //이번분기는 추방불가(초반 제외) + $db->update('nation', [ + 'chief_set'=>$db->sqleval('chief_set | %i', doOfficerSet(0, $myOfficerLevel)), + 'gennum'=>$db->sqleval('gennum - %i', $general->getNPCType()!=5?1:0), + 'gold'=>$db->sqleval('gold + %i', $gold), + 'rice'=>$db->sqleval('rice + %i', $rice), + ], 'nation = %i', $nationID); + } + + $logger->pushGeneralHistoryLog("{$nation['name']}에서 추방됨"); + $general->applyDB($db); + + return null; +} + + + +if($action == "임명") { + if(2 <= $officerLevel && $officerLevel <= 4){ + if(!$destCityID){ + Json::die([ + 'result'=>false, + 'reason'=>'도시가 지정되지 않았습니다.' + ]); + } + $result = do도시임명($general, $destCityID, $officerLevel); + if($result !== null){ + Json::die([ + 'result'=>false, + 'reason'=>$result + ]); + } + Json::die([ + 'result'=>true, + 'reason'=>'success' + ]); + } + + if(5 <= $officerLevel && $officerLevel < 12){ + $result = do수뇌임명($general, $officerLevel); + if($result !== null){ + Json::die([ + 'result'=>false, + 'reason'=>$result + ]); + } + Json::die([ + 'result'=>true, + 'reason'=>'success' + ]); + } + + Json::die([ + 'result'=>false, + 'reason'=>'올바르지 않은 지정입니다.' + ]); +} + +if($action == "추방") { + $result = do추방($general, $myOfficerLevel); + if($result !== null){ + Json::die([ + 'result'=>false, + 'reason'=>$result + ]); + } + Json::die([ + 'result'=>true, + 'reason'=>'success' + ]); +} + +Json::die([ + 'result'=>false, + 'reason'=>'올바르지 않은 명령입니다.' ]); \ No newline at end of file diff --git a/hwe/js/bossInfo.js b/hwe/js/bossInfo.js index 9e781847..923b7771 100644 --- a/hwe/js/bossInfo.js +++ b/hwe/js/bossInfo.js @@ -1,201 +1,195 @@ -function changePermission(isAmbassador, rawGeneralList){ - console.log(isAmbassador); - console.log(rawGeneralList); - - var generalList = []; - $.each(rawGeneralList, function(idx, value){ - generalList.push(parseInt(value.id)); - }) - - $.post({ - url:'j_general_set_permission.php', - dataType:'json', - data:{ - isAmbassador:isAmbassador, - genlist:generalList - }, - }).then(function(data){ - if(!data){ - alert('변경하지 못했습니다.'); - return false; - } - if(!data.result){ - alert('변경하지 못했습니다. : '+data.reason); - return false; - } - alert('변경했습니다.'); - location.reload(); - }, errUnknown); -} - -$(function(){ - $('#selectAmbassador').select2({ - theme: 'bootstrap4', - placeholder: "", - allowClear: true, - language: "ko", - width:300, - maximumSelectionLength: 2, - containerCss: { - display: "inline-block !important;", - color: 'white !important' - }, - data:candidateAmbassadors, - //containerCssClass: 'simple-select2-align-center bg-secondary text-secondary', - dropdownCssClass: 'simple-select2-align-center bg-secondary text-secondary', - }); - - $('#selectAuditor').select2({ - theme: 'bootstrap4', - placeholder: "", - allowClear: true, - language: "ko", - width:300, - maximumSelectionLength: 2, - containerCss: { - display: "inline-block !important;", - color: 'white !important' - }, - data:candidateAuditors, - //containerCssClass: 'simple-select2-align-center bg-secondary text-secondary', - dropdownCssClass: 'simple-select2-align-center bg-secondary text-secondary', - }); - - $('#changeAmbassador').click(function(){ - if(!confirm('외교권자를 변경할까요?')){ - return false; - } - - changePermission(true, $('#selectAmbassador').select2('data')); - return false; - }); - - $('#changeAuditor').click(function(){ - if(!confirm('조언자를 변경할까요?')){ - return false; - } - - changePermission(false, $('#selectAuditor').select2('data')); - return false; - }); - - $('#btn_kick').click(function(){ - var $kickSelect = $('#genlist_kick option:selected'); - var generalID = $kickSelect.val(); - if(!generalID){ - alert('장수를 선택해주세요'); - return false; - } - var generalName = $kickSelect.data('name'); - if(!confirm('{0}를 추방하시겠습니까?'.format(generalName))){ - return false; - } - $.post({ - url:'j_myBossInfo.php', - dataType:'json', - data:{ - action:'추방', - destGeneralID:generalID - }, - }).then(function(data){ - if(!data){ - alert('추방하지 못했습니다.'); - return false; - } - if(!data.result){ - alert('추방하지 못했습니다. : '+data.reason); - return false; - } - alert('{0}를 추방했습니다.'.format(generalName)); - location.reload(); - }, errUnknown); - return false; - }); - - $('.btn_appoint').click(function(){ - var $btn = $(this); - var officerLevel = $btn.data('officer_level'); - var officerLevelText = $btn.data('officer_level_text'); - var cityID = 0; - var cityName = '_'; - var $generalSelect = $('#genlist_{0} option:selected'.format(officerLevel)); - var $citySelect = $('#citylist_{0} option:selected'.format(officerLevel)); - - var generalID = $generalSelect.val(); - var generalName = $generalSelect.data('name'); - var generalOfficerLevel = $generalSelect.data('officer_level'); - - - if(officerLevel >= 5){ - if(generalID == 0){ - if(!confirm('{0}직을 비우시겠습니까?'.format(officerLevelText))){ - return false; - } - } - else if(generalOfficerLevel >= 5){ - if(!confirm('이미 수뇌인 {0}을(를) {1}직에 임명하시겠습니까?'.format(generalName, officerLevelText))){ - return false; - } - } - else{ - if(!confirm('{0}을(를) {1}직에 임명하시겠습니까?'.format(generalName, officerLevelText))){ - return false; - } - } - } - else{ - cityID = $citySelect.val(); - if(!cityID){ - alert('도시를 선택해주세요'); - return false; - } - cityName = $citySelect.find('option:selected .name_field').text(); - - if(generalID == 0){ - if(!confirm('{0} {1}직을 비우시겠습니까?'.format(cityName, officerLevelText))){ - return false; - } - } - else if(generalOfficerLevel >= 5){ - if(!confirm('수뇌인 {0}을(를) {1} {2}직에 임명하시겠습니까?'.format(generalName, cityName, officerLevelText))){ - return false; - } - } - else{ - if(!confirm('{0}을(를) {1} {2}직에 임명하시겠습니까?'.format(generalName, cityName, officerLevelText))){ - return false; - } - } - } - - $.post({ - url:'j_myBossInfo.php', - dataType:'json', - data:{ - action:'임명', - destGeneralID:generalID, - destCityID:cityID, - officerLevel:officerLevel - }, - }).then(function(data){ - if(!data){ - alert('임명하지 못했습니다.'); - return false; - } - if(!data.result){ - alert('임명하지 못했습니다. : '+data.reason); - return false; - } - - if(generalID){ - alert('{0}을(를) 임명했습니다.'.format(generalName)); - } - else{ - alert('관직을 비웠습니다.'); - } - - location.reload(); - }, errUnknown); - - }) +function changePermission(isAmbassador, rawGeneralList) { + console.log(isAmbassador); + console.log(rawGeneralList); + + var generalList = []; + $.each(rawGeneralList, function(idx, value) { + generalList.push(parseInt(value.id)); + }) + + $.post({ + url: 'j_general_set_permission.php', + dataType: 'json', + data: { + isAmbassador: isAmbassador, + genlist: generalList + }, + }).then(function(data) { + if (!data) { + alert('변경하지 못했습니다.'); + return false; + } + if (!data.result) { + alert('변경하지 못했습니다. : ' + data.reason); + return false; + } + alert('변경했습니다.'); + location.reload(); + }, errUnknown); +} + +$(function() { + $('#selectAmbassador').select2({ + theme: 'bootstrap4', + placeholder: "", + allowClear: true, + language: "ko", + width: 300, + maximumSelectionLength: 2, + containerCss: { + display: "inline-block !important;", + color: 'white !important' + }, + data: candidateAmbassadors, + //containerCssClass: 'simple-select2-align-center bg-secondary text-secondary', + dropdownCssClass: 'simple-select2-align-center bg-secondary text-secondary', + }); + + $('#selectAuditor').select2({ + theme: 'bootstrap4', + placeholder: "", + allowClear: true, + language: "ko", + width: 300, + maximumSelectionLength: 2, + containerCss: { + display: "inline-block !important;", + color: 'white !important' + }, + data: candidateAuditors, + //containerCssClass: 'simple-select2-align-center bg-secondary text-secondary', + dropdownCssClass: 'simple-select2-align-center bg-secondary text-secondary', + }); + + $('#changeAmbassador').click(function() { + if (!confirm('외교권자를 변경할까요?')) { + return false; + } + + changePermission(true, $('#selectAmbassador').select2('data')); + return false; + }); + + $('#changeAuditor').click(function() { + if (!confirm('조언자를 변경할까요?')) { + return false; + } + + changePermission(false, $('#selectAuditor').select2('data')); + return false; + }); + + $('#btn_kick').click(function() { + var $kickSelect = $('#genlist_kick option:selected'); + var generalID = $kickSelect.val(); + if (!generalID) { + alert('장수를 선택해주세요'); + return false; + } + var generalName = $kickSelect.data('name'); + if (!confirm('{0}를 추방하시겠습니까?'.format(generalName))) { + return false; + } + $.post({ + url: 'j_myBossInfo.php', + dataType: 'json', + data: { + action: '추방', + destGeneralID: generalID + }, + }).then(function(data) { + if (!data) { + alert('추방하지 못했습니다.'); + return false; + } + if (!data.result) { + alert('추방하지 못했습니다. : ' + data.reason); + return false; + } + alert('{0}를 추방했습니다.'.format(generalName)); + location.reload(); + }, errUnknown); + return false; + }); + + $('.btn_appoint').click(function() { + var $btn = $(this); + var officerLevel = $btn.data('officer_level'); + var officerLevelText = $btn.data('officer_level_text'); + var cityID = 0; + var cityName = '_'; + var $generalSelect = $('#genlist_{0} option:selected'.format(officerLevel)); + var $citySelect = $('#citylist_{0} option:selected'.format(officerLevel)); + + var generalID = parseInt($generalSelect.val()); + var generalName = $generalSelect.data('name'); + var generalOfficerLevel = $generalSelect.data('officer_level'); + + + if (officerLevel >= 5) { + if (generalID == 0) { + if (!confirm('{0}직을 비우시겠습니까?'.format(officerLevelText))) { + return false; + } + } else if (generalOfficerLevel >= 5) { + if (!confirm('이미 수뇌인 {0}을(를) {1}직에 임명하시겠습니까?'.format(generalName, officerLevelText))) { + return false; + } + } else { + if (!confirm('{0}을(를) {1}직에 임명하시겠습니까?'.format(generalName, officerLevelText))) { + return false; + } + } + } else { + cityID = $citySelect.val(); + if (!cityID) { + alert('도시를 선택해주세요'); + return false; + } + cityName = $citySelect.find('option:selected .name_field').text(); + + if (generalID == 0) { + if (!confirm('{0} {1}직을 비우시겠습니까?'.format(cityName, officerLevelText))) { + return false; + } + } else if (generalOfficerLevel >= 5) { + if (!confirm('수뇌인 {0}을(를) {1} {2}직에 임명하시겠습니까?'.format(generalName, cityName, officerLevelText))) { + return false; + } + } else { + if (!confirm('{0}을(를) {1} {2}직에 임명하시겠습니까?'.format(generalName, cityName, officerLevelText))) { + return false; + } + } + } + + $.post({ + url: 'j_myBossInfo.php', + dataType: 'json', + data: { + action: '임명', + destGeneralID: generalID, + destCityID: cityID, + officerLevel: officerLevel + }, + }).then(function(data) { + if (!data) { + alert('임명하지 못했습니다.'); + return false; + } + if (!data.result) { + alert('임명하지 못했습니다. : ' + data.reason); + return false; + } + + if (generalID) { + alert('{0}을(를) 임명했습니다.'.format(generalName)); + } else { + alert('관직을 비웠습니다.'); + } + + location.reload(); + }, errUnknown); + + }) }) \ No newline at end of file