diff --git a/.phan/config.php b/.phan/config.php index 513c421a..b6a5feea 100644 --- a/.phan/config.php +++ b/.phan/config.php @@ -101,13 +101,11 @@ return [ 'hwe/j_export_simulator_object.php', 'hwe/j_general_log_old.php', 'hwe/j_general_set_permission.php', - 'hwe/j_general_turn.php', 'hwe/j_get_basic_general_list.php', 'hwe/j_getChiefTurn.php', 'hwe/j_get_city_list.php', 'hwe/j_get_general_list.php', 'hwe/j_get_nation_general_list.php', - 'hwe/j_get_reserved_command.php', 'hwe/j_get_select_npc_token.php', 'hwe/j_get_select_pool.php', 'hwe/j_image_upload.php', diff --git a/hwe/css/common.css b/hwe/css/common.css index 664b4c21..0dfca57d 100644 --- a/hwe/css/common.css +++ b/hwe/css/common.css @@ -1,7 +1,3 @@ -@charset "UTF-8"; - -/* font-boostring Block */ - html * { max-height: 1000000px; } diff --git a/hwe/css/main.css b/hwe/css/main.css deleted file mode 100644 index 600aea20..00000000 --- a/hwe/css/main.css +++ /dev/null @@ -1,100 +0,0 @@ -@charset "UTF-8"; - -body { -color:white; - background-color:black; - border-width:1px; - border-color:gray; background-position:center; background-repeat:repeat-y; -} - -#container { - width:1000px; - margin: 0 auto; -} - -.buttonPlate{ - width:1000px; - height:60px; -} - -.toolbarButton { - float:left; - background-color:#225500; - color:white; - width:125px; - height:30px; - font-weight:bold; - font-size:13px; - margin:0; - display:block; -} - -.commandButton { - float:left; - width:100px; - height:30px; - font-weight:bold; - font-size:13px; - margin:0; - display:block; -} - -.commandButton:disabled::before{ - content:'【' -} - -.commandButton:disabled::after{ - content:'】' -} - -.commandButton:disabled{ - background-color:transparent !important; - color:gray !important; - border-color:transparent !important; -} - -.toolbarButton2 { - float:left; - background-color:#225500; - color:magenta; - width:125px; - height:30px; - font-weight:bold; - font-size:13px; - margin:0; - display:block; -} - -.nation_info td{ - height:18px; -} - -#generalTurnSelector{ - width:50px; - color:white; - background-color:black; - font-size:13px; -} - -#sidebar{ - position:fixed; - right:0; - top: 50%; - transform: translateY(-50%); -} - -#sidebar button{ - /*width:100px;*/ -} - -.turn_pad{ - white-space:nowrap; - font-weight:lighter; - max-width: 162px; - width: 162px; - -} - -.turn_pad .turn_text{ - display:inline-block; -} \ No newline at end of file diff --git a/hwe/css/map.css b/hwe/css/map.css index 44ff4fb9..9e3f0e73 100644 --- a/hwe/css/map.css +++ b/hwe/css/map.css @@ -5,6 +5,7 @@ background:black; font-size:13px; color:white; + position: relative; } .map_title{ @@ -33,6 +34,7 @@ width:700px; height:500px; position:relative; + overflow: hidden; } .map_body .map_bglayer1{ @@ -88,7 +90,7 @@ .world_map .city_tooltip{ position: absolute; - z-index:6; + z-index:16; display:none; min-width:120px; border: 0.02em gray solid; @@ -99,7 +101,7 @@ z-index: 6; line-height:15px; height:15px; - + } .world_map .nation_name{ background-color: rgb(30, 164, 255); @@ -491,4 +493,9 @@ .map_basic .city_base .city_state.city_state_good{ background-color:blue; +} + +.btn.btn-minimum{ + padding-top: 1px; + padding-bottom: 1px; } \ No newline at end of file diff --git a/hwe/css/msg.css b/hwe/css/msg.css deleted file mode 100644 index dc21a268..00000000 --- a/hwe/css/msg.css +++ /dev/null @@ -1,202 +0,0 @@ -@charset "UTF-8"; - -/*임시용 */ - -#container{ - width:1000px; - margin:auto; - font-size:13px; -} -/*임시용 끝*/ - -#message_board{ - height:1370px; - position:relative; -} - -#message_board section{ - overflow-y:auto; - overflow-x:hidden; -} - -.msg_plate{ - width:100%; - outline-style:solid; - outline-width:1px; - outline-color: gray; - min-height:64px; - font-size:12px; - word-break:break-all; - color:white; -} - -.msg_plate_private{ - background-color:#5d1e1a; -} - -.msg_plate_private.msg_plate_dest{ - background-color:#5d461a; -} - -.msg_plate_public{ - background-color:#141c65; - -} - -.msg_plate_national, .msg_plate_diplomacy{ - background-color:#00582c; -} - -.msg_plate_national.msg_plate_dest, .msg_plate_diplomacy.msg_plate_dest { - background-color:#704615; -} - -.msg_plate_national.msg_plate_src, .msg_plate_diplomacy.msg_plate_src { - background-color:#70153b; -} - -.public_message{ - height:667px; -} - -.diplomacy_message{ - flex: 1; -} - -.national_message{ - height:667px; -} - -.private_message{ - flex: 1; -} - -.msg_icon{ - float:left; - width:64px; - height:64px; - border-right:solid 1px gray; -} - -.msg_time{ - font-size:0.75em; - font-weight:normal; -} - -.msg_header{ - font-weight: bold; - margin-bottom:3px; - color:white; - position: relative; -} - -.message_input_form{ - position:relative; -} - -#msg_input{ - color:white; - background-color:black; - font-size:12px; - width:715px; - margin:0 2px; - height:20px; - border:solid 1px gray; -} - -#msg_submit{ - position:absolute; - right:0; - margin-right:2px; -} - -#mailbox_list{ - float:left; - color:white; - background-color:black; - font-size:12px; - width:160px; - height:20px; -} - -.board_header{ - color:white; - outline-style:solid; - outline-width:1px; - outline-color: gray; -} - -.board_side{ - position:absolute; - height:1370px; - width:50%; - overflow-y: hidden; - outline-style:solid; - outline-width:1px; - outline-color: gray; - display: flex; - flex-wrap: wrap; - flex-direction: column; -} -.board_side > div{ - height: 1.2em; -} - -.msg_invalid{ - color:rgba(255,255,255,0.5); -} - -.msg_body{ - padding-left:64px; -} - -.msg_target{ - margin:2px 2px 0 2px; - padding:2px 3px; - display:inline-block; - box-shadow: 2px 2px black; - border-radius: 3px; -} - -.btn-delete-msg{ - position: absolute; - right: 0; - top: 0; - margin:2px 2px 0 2px; - font-size:8px; -} - -/* -.public_message .msg_target{ - box-shadow: 2px 2px darkslategrey; -} -*/ - -.msg_target.msg_bright{ - color:black; -} - -.msg_target.msg_dark{ - color:white; -} - -.msg_from_to{ - display:inline-block; -} - -.msg_content{ - margin-left:10px; - margin-right:5px; - overflow:hidden; -} - -.msg_prompt{ - text-align:right; - margin-top:5px; - margin-right:5px; -} - -#mailbox_list option{ - color:white; - background-color:black; -} \ No newline at end of file diff --git a/hwe/d_setting/templates/allButton.php.orig b/hwe/d_setting/templates/allButton.php.orig index af1a4562..e21f008b 100644 --- a/hwe/d_setting/templates/allButton.php.orig +++ b/hwe/d_setting/templates/allButton.php.orig @@ -1,5 +1,4 @@ -
+ + + develcost * 5; + MessageBox("설문조사에 참여하시면 금{$develcost}과 유니크템을 드립니다! (우측 상단 설문조사 메뉴)"); + } + ?> + - + + \ No newline at end of file diff --git a/hwe/j_general_turn.php b/hwe/j_general_turn.php deleted file mode 100644 index 358e00b9..00000000 --- a/hwe/j_general_turn.php +++ /dev/null @@ -1,42 +0,0 @@ -setReadOnly(); - -$generalID = $session->generalID; - -$turnAmount = Util::getPost('amount', 'int'); -$isRepeat = Util::getPost('is_repeat', 'bool', false); - -if($turnAmount == null){ - Json::die([ - 'result'=>false, - 'reason'=>'턴이 입력되지 않았습니다.', - ]); -} - -if(abs($turnAmount) >= GameConst::$maxTurn){ - Json::die([ - 'result'=>false, - 'reason'=>'턴 숫자가 올바르지 않습니다.', - ]); -} - -if($isRepeat){ - repeatGeneralCommand($generalID, $turnAmount); -} -else{ - pushGeneralCommand($generalID, $turnAmount); -} - -Json::die([ - 'result'=>true, - 'reason'=>'success', -]); \ No newline at end of file diff --git a/hwe/j_get_reserved_command.php b/hwe/j_get_reserved_command.php deleted file mode 100644 index 593508c9..00000000 --- a/hwe/j_get_reserved_command.php +++ /dev/null @@ -1,49 +0,0 @@ -setReadOnly(); - -$db = DB::db(); - -$commandList = []; -$gameStor = KVStorage::getStorage($db, 'game_env'); -$generalID = $session->generalID; - -$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) - ]; -} - - -[$turnTerm, $year, $month, $lastExecute] = $gameStor->getValuesAsArray(['turnterm', 'year', 'month', 'turntime']); - -[$turnTime, $rawGeneralAux] = $db->queryFirstList('SELECT turntime, aux FROM general WHERE no=%i', $generalID); -$generalAux = Json::decode($rawGeneralAux??'{}'); - -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, - 'autorun_limit'=> $generalAux['autorun_limit']??null, -]); \ No newline at end of file diff --git a/hwe/j_msg_get_old.php b/hwe/j_msg_get_old.php index 858a4c8f..ec332914 100644 --- a/hwe/j_msg_get_old.php +++ b/hwe/j_msg_get_old.php @@ -40,7 +40,7 @@ if(count($lastMsgGet) >= 10){ } catch(\Exception $e){ $lastMsgGet = []; - } + } } $lastMsgGet[] = $now; $session->lastMsgGet = Json::encode($lastMsgGet); @@ -83,7 +83,7 @@ if($reqType == 'private'){ $nextSequence = $msg->id; } return $msg->toArray(); - }, Message::getMessagesFromMailBoxOld($generalID, Message::MSGTYPE_PRIVATE, $reqTo, 20)); + }, Message::getMessagesFromMailBoxOld($generalID, Message::MSGTYPE_PRIVATE, $reqTo, 15)); } else if($reqType == 'public'){ $result['public'] = array_map(function(Message $msg)use (&$nextSequence){ @@ -91,7 +91,7 @@ else if($reqType == 'public'){ $nextSequence = $msg->id; } return $msg->toArray(); - }, Message::getMessagesFromMailBoxOld(Message::MAILBOX_PUBLIC, Message::MSGTYPE_PUBLIC, $reqTo, 20)); + }, Message::getMessagesFromMailBoxOld(Message::MAILBOX_PUBLIC, Message::MSGTYPE_PUBLIC, $reqTo, 15)); } else if($reqType == 'national'){ $result['national'] = array_map(function(Message $msg)use (&$nextSequence){ @@ -99,7 +99,7 @@ else if($reqType == 'national'){ $nextSequence = $msg->id; } return $msg->toArray(); - }, Message::getMessagesFromMailBoxOld(Message::MAILBOX_NATIONAL + $nationID, Message::MSGTYPE_NATIONAL, $reqTo, 20)); + }, Message::getMessagesFromMailBoxOld(Message::MAILBOX_NATIONAL + $nationID, Message::MSGTYPE_NATIONAL, $reqTo, 15)); } else{ $result['diplomacy'] = array_map(function(Message $msg)use (&$nextSequence, $permission){ @@ -112,7 +112,7 @@ else{ $values['option']['invalid'] = true; } return $values; - }, Message::getMessagesFromMailBoxOld(Message::MAILBOX_NATIONAL + $nationID, Message::MSGTYPE_DIPLOMACY, $reqTo, 20)); + }, Message::getMessagesFromMailBoxOld(Message::MAILBOX_NATIONAL + $nationID, Message::MSGTYPE_DIPLOMACY, $reqTo, 15)); } Json::die($result); \ No newline at end of file diff --git a/hwe/j_msg_get_recent.php b/hwe/j_msg_get_recent.php index e71e9b65..addfcc1e 100644 --- a/hwe/j_msg_get_recent.php +++ b/hwe/j_msg_get_recent.php @@ -26,7 +26,7 @@ if(count($lastMsgGet) >= 10){ } catch(\Exception $e){ $lastMsgGet = []; - } + } } $lastMsgGet[] = TimeUtil::now(); $session->lastMsgGet = Json::encode($lastMsgGet); @@ -66,7 +66,7 @@ $result['private'] = array_map(function(Message $msg) use (&$nextSequence, &$min $lastType = 'private'; } return $msg->toArray(); -}, Message::getMessagesFromMailBox($generalID, Message::MSGTYPE_PRIVATE, 20, $reqSequence)); +}, Message::getMessagesFromMailBox($generalID, Message::MSGTYPE_PRIVATE, 15, $reqSequence)); $result['public'] = array_map(function(Message $msg)use (&$nextSequence, &$minSequence, &$lastType){ if($msg->id > $nextSequence){ @@ -77,7 +77,7 @@ $result['public'] = array_map(function(Message $msg)use (&$nextSequence, &$minSe $lastType = 'public'; } return $msg->toArray(); -}, Message::getMessagesFromMailBox(Message::MAILBOX_PUBLIC, Message::MSGTYPE_PUBLIC, 20, $reqSequence)); +}, Message::getMessagesFromMailBox(Message::MAILBOX_PUBLIC, Message::MSGTYPE_PUBLIC, 15, $reqSequence)); $result['national'] = array_map(function(Message $msg)use (&$nextSequence, &$minSequence, &$lastType){ if($msg->id > $nextSequence){ @@ -88,7 +88,7 @@ $result['national'] = array_map(function(Message $msg)use (&$nextSequence, &$min $lastType = 'national'; } return $msg->toArray(); -}, Message::getMessagesFromMailBox(Message::MAILBOX_NATIONAL + $nationID, Message::MSGTYPE_NATIONAL, 20, $reqSequence)); +}, Message::getMessagesFromMailBox(Message::MAILBOX_NATIONAL + $nationID, Message::MSGTYPE_NATIONAL, 15, $reqSequence)); $result['diplomacy']= array_map(function(Message $msg)use (&$nextSequence, &$minSequence, &$lastType, $permission){ if($msg->id > $nextSequence){ @@ -104,7 +104,7 @@ $result['diplomacy']= array_map(function(Message $msg)use (&$nextSequence, &$min $values['option']['invalid'] = true; } return $values; -}, Message::getMessagesFromMailBox(Message::MAILBOX_NATIONAL + $nationID, Message::MSGTYPE_DIPLOMACY, 20, $reqSequence)); +}, Message::getMessagesFromMailBox(Message::MAILBOX_NATIONAL + $nationID, Message::MSGTYPE_DIPLOMACY, 15, $reqSequence)); if($lastType !== null){ array_pop($result[$lastType]); diff --git a/hwe/j_server_basic_info.php b/hwe/j_server_basic_info.php index 334d8f67..db088fdf 100644 --- a/hwe/j_server_basic_info.php +++ b/hwe/j_server_basic_info.php @@ -2,42 +2,7 @@ namespace sammo; include "lib.php"; - -$templates = new \League\Plates\Engine(__DIR__.'/templates'); - -function getAutorunInfo($autorunOption){ - global $templates; - $auto_info = []; - foreach($autorunOption['options'] as $auto_option => $value){ - assert($value); - switch($auto_option){ - case 'develop': $auto_info['내정'] = '내정'; break; - case 'warp': $auto_info['순간이동'] = '순간이동'; break; - case 'recruit': $auto_info['징병'] = $auto_info['징병']??'징병'; break; - case 'recruit_high': $auto_info['징병'] = '모병'; break; - case 'train': $auto_info['훈사'] = '훈련/사기진작'; break; - case 'battle': $auto_info['출병'] = '출병'; break; - case 'chief': $auto_info['사령턴'] = '사령턴'; break; - } - } - $limit = Util::toInt($autorunOption['limit_minutes']); - if($limit >= 43200){ - $auto_info['제한'] = '항상 유효'; - } - else if($limit % 60 == 0){ - $auto_info['제한'] = ($limit/60).'시간 유효'; - } - else{ - $auto_info['제한'] = ($limit).'분 유효'; - } - $auto_info = join(', ', array_values($auto_info)); - return $templates->render('tooltip', [ - 'text'=>'자율행동', - 'info'=>$auto_info, - 'style'=>'text-decoration:underline', - 'copyable_info'=>true - ]); -} +include "func_template.php"; $session = Session::requireLogin([ 'game'=>null, diff --git a/hwe/sammo/API/Command/GetReservedCommand.php b/hwe/sammo/API/Command/GetReservedCommand.php new file mode 100644 index 00000000..5ed77069 --- /dev/null +++ b/hwe/sammo/API/Command/GetReservedCommand.php @@ -0,0 +1,69 @@ +generalID; + + $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) + ]; + } + + + [$turnTerm, $year, $month, $lastExecute] = $gameStor->getValuesAsArray(['turnterm', 'year', 'month', 'turntime']); + + [$turnTime, $rawGeneralAux] = $db->queryFirstList('SELECT turntime, aux FROM general WHERE no=%i', $generalID); + $generalAux = Json::decode($rawGeneralAux ?? '{}'); + + if (cutTurn($turnTime, $turnTerm) > cutTurn($lastExecute, $turnTerm)) { + //이미 이번달에 실행된 턴이다. + $month++; + if ($month >= 13) { + $month -= 12; + $year += 1; + } + } + + return [ + 'result' => true, + 'turnTime' => $turnTime, + 'turnTerm' => $turnTerm, + 'year' => $year, + 'month' => $month, + 'date' => TimeUtil::now(true), + 'turn' => $commandList, + 'autorun_limit' => $generalAux['autorun_limit'] ?? null, + ]; + } +} diff --git a/hwe/sammo/API/Command/PushCommand.php b/hwe/sammo/API/Command/PushCommand.php new file mode 100644 index 00000000..dd3f8bf1 --- /dev/null +++ b/hwe/sammo/API/Command/PushCommand.php @@ -0,0 +1,47 @@ +args); + $v->rule('required', [ + 'amount', + ]) + ->rule('integer', 'amount') + ->rule('min', 'amount', -12) + ->rule('max', 'amount', 12); + + if (!$v->validate()) { + return $v->errorStr(); + } + return null; + } + + public function getRequiredSessionMode(): int + { + return static::REQ_GAME_LOGIN | static::REQ_READ_ONLY; + } + + public function launch(Session $session, ?DateTimeInterface $modifiedSince, ?string $reqEtag) + { + $amount = $this->args['amount']; + if($amount == 0){ + return '0은 불가능합니다'; + } + pushGeneralCommand($session->generalID, $amount); + + return [ + 'result'=>true + ]; + } +} diff --git a/hwe/sammo/API/Command/RepeatCommand.php b/hwe/sammo/API/Command/RepeatCommand.php new file mode 100644 index 00000000..b48e571c --- /dev/null +++ b/hwe/sammo/API/Command/RepeatCommand.php @@ -0,0 +1,45 @@ +args); + $v->rule('required', [ + 'amount', + ]) + ->rule('integer', 'amount') + ->rule('min', 'amount', 1) + ->rule('max', 'amount', 12); + + if (!$v->validate()) { + return $v->errorStr(); + } + return null; + } + + public function getRequiredSessionMode(): int + { + return static::REQ_GAME_LOGIN | static::REQ_READ_ONLY; + } + + public function launch(Session $session, ?DateTimeInterface $modifiedSince, ?string $reqEtag) + { + + $amount = $this->args['amount']; + repeatGeneralCommand($session->generalID, $amount); + + return [ + 'result'=>true + ]; + } +} diff --git a/hwe/sammo/API/Command/ReserveCommand.php b/hwe/sammo/API/Command/ReserveCommand.php new file mode 100644 index 00000000..802c5dbd --- /dev/null +++ b/hwe/sammo/API/Command/ReserveCommand.php @@ -0,0 +1,56 @@ +args); + $v->rule('required', [ + 'action', + 'turnList' + ]) + ->rule('lengthMin', 'action', 1) + ->rule('integerArray', 'turnList'); + + if (!$v->validate()) { + return $v->errorStr(); + } + return null; + } + + public function getRequiredSessionMode(): int + { + return static::REQ_GAME_LOGIN | static::REQ_READ_ONLY; + } + + public function launch(Session $session, ?DateTimeInterface $modifiedSince, ?string $reqEtag) + { + $action = $this->args['action']; + $turnList = $this->args['turnList']; + $arg = $this->args['arg']??[]; + + if(!$turnList){ + return '턴이 입력되지 않았습니다'; + } + + if(!in_array($action, Util::array_flatten(GameConst::$availableGeneralCommand))){ + return '사용할 수 없는 커맨드입니다.'; + } + + if(!is_array($arg)){ + '올바른 arg 형태가 아닙니다.'; + } + + return setGeneralCommand($session->generalID, $turnList, $action, $arg); + } +} diff --git a/hwe/scss/bootstrap5.scss b/hwe/scss/bootstrap5.scss index dcae837e..eaf644ee 100644 --- a/hwe/scss/bootstrap5.scss +++ b/hwe/scss/bootstrap5.scss @@ -7,6 +7,8 @@ $input-color: #303030; @import url("https://cdn.jsdelivr.net/npm/bootstrap-icons/font/bootstrap-icons.css"); -@import "../../node_modules/bootswatch/dist/darkly/_variables.scss"; +@import "./variables.scss"; +@import "./bootswatch_custom_variables.scss"; @import "../../node_modules/bootstrap5/scss/bootstrap.scss"; -@import "../../node_modules/bootswatch/dist/darkly/_bootswatch.scss"; \ No newline at end of file +@import "./bootswatch_custom.scss"; +@import "./bootstrap_sammo.scss"; \ No newline at end of file diff --git a/hwe/scss/bootstrap_sammo.scss b/hwe/scss/bootstrap_sammo.scss new file mode 100644 index 00000000..2a7bcb18 --- /dev/null +++ b/hwe/scss/bootstrap_sammo.scss @@ -0,0 +1,67 @@ + + +@function frontColor($color) { + @return color-contrast($color); +} + +@each $colorType, $color in $nationColors { + .sam-color-#{$colorType} { + .sam-nation-own-bgcolor{ + background-color: $color; + color: frontColor($color); + } + + .btn-sammo-nation{ + @include button-variant($color, $color); + + &:hover, + &:active, + &:focus { + background-color: $color; + } + + &, + &:not(.disabled):hover, + &:not(.disabled):active, + &:focus { + border-color: shade-color($color, 10%); + } + } + } + + .btn-sammo-nation-#{$colorType}{ + @include button-variant($color, $color); + + &:hover, + &:active, + &:focus { + background-color: $color; + } + + &, + &:not(.disabled):hover, + &:not(.disabled):active, + &:focus { + border-color: shade-color($color, 10%); + } + } +} + +@each $colorType, $color in $sammoColors { + .btn-sammo-#{$colorType}{ + @include button-variant($color, $color); + + &:hover, + &:active, + &:focus { + background-color: $color; + } + + &, + &:not(.disabled):hover, + &:not(.disabled):active, + &:focus { + border-color: shade-color($color, 10%); + } + } +} \ No newline at end of file diff --git a/hwe/scss/bootswatch_custom.scss b/hwe/scss/bootswatch_custom.scss new file mode 100644 index 00000000..029220c2 --- /dev/null +++ b/hwe/scss/bootswatch_custom.scss @@ -0,0 +1,329 @@ +// Lumen 5.1.3 +// Bootswatch + + +// Variables + +$web-font-path: "https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400&display=swap" !default; +@if $web-font-path { + @import url($web-font-path); +} + +// Mixins + +@mixin shadow($width: 4px){ + border-style: solid; + border-width: 0 1px $width 1px; +} + +// Navbar + +.navbar { + @include shadow(); + + @each $color, $value in $theme-colors { + &.bg-#{$color} { + border-color: shade-color($value, 10%); + } + } +} + +// Buttons + +.btn { + @include shadow(); + text-transform: uppercase; + + &:not(.disabled):hover { + margin-top: 1px; + border-bottom-width: 3px; + } + + &:not(.disabled):active { + margin-top: 2px; + border-bottom-width: 2px; + @include box-shadow(none); + } + + @each $color, $value in $theme-colors { + &-#{$color} { + &:hover, + &:active, + &:focus { + background-color: $value; + } + + &, + &:not(.disabled):hover, + &:not(.disabled):active, + &:focus { + border-color: shade-color($value, 10%); + } + } + } +} + +[class*="btn-outline"] { + border-top-width: 1px; +} + +.btn-group-vertical { + .btn + .btn { + &:hover { + margin-top: -1px; + border-top-width: 1px; + } + + &:active { + margin-top: -1px; + border-top-width: 2px; + } + } +} + +// Typography + +.text-secondary { + color: $gray-700 !important; +} + +.blockquote-footer { + color: $gray-600; +} + +// Forms + + +.form-control { + box-shadow: inset 0 2px 0 rgba(0, 0, 0, .075); +} + +// Navs + +.nav { + .open > a, + .open > a:hover, + .open > a:focus { + border-color: transparent; + } +} + +.nav-tabs { + .nav-link { + color: $body-color; + + &, + &.disabled, + &.disabled:hover, + &.disabled:focus { + margin-top: 6px; + border-color: $nav-tabs-border-color; + transition: padding-bottom .2s ease-in-out, margin-top .2s ease-in-out, border-bottom .2s ease-in-out; + } + + &:not(.disabled):hover, + &:not(.disabled):focus, + &.active { + padding-bottom: add(.5rem, 6px); + border-bottom-color: transparent; + margin-top: 0; + } + } + + &.nav-justified > li { + vertical-align: bottom; + } +} + +.dropdown-menu { + margin-top: 0; + @include shadow(); + border-top-width: 1px; + @include box-shadow(none); +} + +.breadcrumb { + border-color: shade-color($breadcrumb-bg, 10%); + @include shadow(); +} + +.pagination { + a:hover { + text-decoration: none; + } +} + + +.pagination { + > li > a, + > li > span { + position: relative; + top: 0; + @include shadow(); + color: $pagination-color; + font-weight: 700; + text-transform: uppercase; + + &:hover, + &:focus { + top: 1px; + border-bottom-width: 3px; + text-decoration: none; + } + + &:active { + top: 2px; + border-bottom-width: 2px; + } + } + + > .disabled > a, + > .disabled > span { + &:hover { + top: 0; + @include shadow(); + } + + &:active { + top: 0; + @include shadow(); + } + } +} + +.pager { + > li > a, + > li > span, + > .disabled > a, + > .disabled > span { + &, + &:hover, + &:active { + border-left-width: 2px; + border-right-width: 2px; + } + } +} + +// Indicators + +.btn-close { + text-decoration: none; + opacity: .4; + + &:hover, + &:focus { + opacity: 1; + } +} + +.alert { + color: $white; + @include shadow(); + + &-primary { + background-color: $primary; + border-color: shade-color($primary, 10%); + } + + &-secondary { + background-color: $secondary; + border-color: shade-color($secondary, 10%); + } + + &-success { + background-color: $success; + border-color: shade-color($success, 10%); + } + + &-info { + background-color: $info; + border-color: shade-color($info, 10%); + } + + &-danger { + background-color: $danger; + border-color: shade-color($danger, 10%); + } + + &-warning { + background-color: $warning; + border-color: shade-color($warning, 10%); + } + + &-dark { + background-color: $dark; + border-color: shade-color($dark, 10%); + } + + &-light { + background-color: $light; + border-color: shade-color($light, 10%); + } + + .alert-link { + font-weight: 400; + color: $white; + text-decoration: underline; + } + + &-secondary, + &-light { + &, + a, + .alert-link { + color: $body-color; + } + } +} + +.badge { + &.bg-secondary, + &.bg-light { + color: $dark; + } +} + +// Containers + +a.list-group-item { + &-success { + &.active { + background-color: $success; + } + + &.active:hover, + &.active:focus { + background-color: shade-color($success, 10%); + } + } + + &-warning { + &.active { + background-color: $warning; + } + + &.active:hover, + &.active:focus { + background-color: shade-color($warning, 10%); + } + } + + &-danger { + &.active { + background-color: $danger; + } + + &.active:hover, + &.active:focus { + background-color: shade-color($danger, 10%); + } + } +} + +.modal, +.toast { + .btn-close { + background-image: url("data:image/svg+xml,"); + } +} diff --git a/hwe/scss/bootswatch_custom_variables.scss b/hwe/scss/bootswatch_custom_variables.scss new file mode 100644 index 00000000..652500df --- /dev/null +++ b/hwe/scss/bootswatch_custom_variables.scss @@ -0,0 +1,177 @@ +// Darkly 5.1.3 +// Bootswatch + +$theme: "darkly" !default; + +// +// Color system +// + +$white: #fff !default; +$gray-100: #f8f9fa !default; +$gray-200: #ebebeb !default; +$gray-300: #dee2e6 !default; +$gray-400: #ced4da !default; +$gray-500: #adb5bd !default; +$gray-600: #888 !default; +$gray-700: #444 !default; +$gray-800: #303030 !default; +$gray-900: #222 !default; +$black: #000 !default; + +$blue: #375a7f !default; +$indigo: #6610f2 !default; +$purple: #6f42c1 !default; +$pink: #e83e8c !default; +$red: #e74c3c !default; +$orange: #fd7e14 !default; +$yellow: #f39c12 !default; +$green: #00bc8c !default; +$teal: #20c997 !default; +$cyan: #3498db !default; + +$primary: $blue !default; +$secondary: $gray-700 !default; +$success: $green !default; +$info: $cyan !default; +$warning: $yellow !default; +$danger: $red !default; +$light: $gray-500 !default; +$dark: $gray-800 !default; + +$min-contrast-ratio: 1.9 !default; + +// Body + +$body-bg: $gray-900 !default; +$body-color: $white !default; + +// Links + +$link-color: $success !default; + +// Fonts + +// stylelint-disable-next-line value-keyword-case +$font-family-sans-serif: Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default; +$h1-font-size: 3rem !default; +$h2-font-size: 2.5rem !default; +$h3-font-size: 2rem !default; +$text-muted: $gray-600 !default; + +// Tables + +$table-border-color: $gray-700 !default; + +$table-bg-scale: 0 !default; + +// Buttons + +$btn-font-weight: 700 !default; + +// Forms + +$input-bg: $white !default; +$input-color: $gray-800 !default; +$input-border-color: $body-bg !default; +$input-group-addon-color: $gray-500 !default; +$input-group-addon-bg: $gray-700 !default; + +$form-check-input-bg: $white !default; +$form-check-input-border: none !default; + +$form-file-button-color: $white !default; + +// Dropdowns + +$dropdown-bg: $gray-900 !default; +$dropdown-border-color: $gray-700 !default; +$dropdown-divider-bg: $gray-700 !default; +$dropdown-link-color: $white !default; +$dropdown-link-hover-color: $white !default; +$dropdown-link-hover-bg: $primary !default; + +// Navs + +$nav-link-padding-x: 2rem !default; +$nav-link-disabled-color: $gray-500 !default; +$nav-tabs-border-color: $gray-700 !default; +$nav-tabs-link-hover-border-color: $nav-tabs-border-color $nav-tabs-border-color transparent !default; +$nav-tabs-link-active-color: $white !default; +$nav-tabs-link-active-border-color: $nav-tabs-border-color $nav-tabs-border-color transparent !default; + +// Navbar + +$navbar-padding-y: 1rem !default; +$navbar-dark-color: rgba($white, .6) !default; +$navbar-dark-hover-color: $white !default; +$navbar-light-color: rgba($gray-900, .7) !default; +$navbar-light-hover-color: $gray-900 !default; +$navbar-light-active-color: $gray-900 !default; +$navbar-light-toggler-border-color: rgba($gray-900, .1) !default; + +// Pagination + +$pagination-color: $white !default; +$pagination-bg: $success !default; +$pagination-border-width: 0 !default; +$pagination-border-color: transparent !default; +$pagination-hover-color: $white !default; +$pagination-hover-bg: lighten($success, 10%) !default; +$pagination-hover-border-color: transparent !default; +$pagination-active-bg: $pagination-hover-bg !default; +$pagination-active-border-color: transparent !default; +$pagination-disabled-color: $white !default; +$pagination-disabled-bg: darken($success, 15%) !default; +$pagination-disabled-border-color: transparent !default; + +// Cards + +$card-cap-bg: $gray-700 !default; +$card-bg: $gray-800 !default; + +// Popovers + +$popover-bg: $gray-800 !default; +$popover-header-bg: $gray-700 !default; + +// Toasts + +$toast-background-color: $gray-700 !default; +$toast-header-background-color: $gray-800 !default; + +// Modals + +$modal-content-bg: $gray-800 !default; +$modal-content-border-color: $gray-700 !default; +$modal-header-border-color: $gray-700 !default; + +// Progress bars + +$progress-bg: $gray-700 !default; + +// List group + +$list-group-color: $body-color !default; +$list-group-bg: $gray-800 !default; +$list-group-border-color: $gray-700 !default; +$list-group-hover-bg: $gray-700 !default; +$list-group-action-hover-color: $list-group-color !default; +$list-group-action-active-bg: $gray-900 !default; + +// Breadcrumbs + +$breadcrumb-padding-y: .375rem !default; +$breadcrumb-padding-x: .75rem !default; +$breadcrumb-bg: $gray-700 !default; +$breadcrumb-border-radius: .25rem !default; + +// Close + +$btn-close-color: $white !default; +$btn-close-opacity: .4 !default; +$btn-close-hover-opacity: 1 !default; + +// Code + +$pre-color: inherit !default; diff --git a/hwe/scss/break_500px.scss b/hwe/scss/break_500px.scss new file mode 100644 index 00000000..abcbe6e7 --- /dev/null +++ b/hwe/scss/break_500px.scss @@ -0,0 +1,16 @@ +$container-max-widths: ( + sm: 500px, + md: 500px, + lg: 1020px, + xl: 1140px, + xxl: 1320px + ) !default; + +$grid-breakpoints: ( + xs: 0, + sm: 520px, + md: 900px, + lg: 992px, + xl: 1200px, + xxl: 1400px +); \ No newline at end of file diff --git a/hwe/scss/common_legacy.scss b/hwe/scss/common_legacy.scss new file mode 100644 index 00000000..9520d2af --- /dev/null +++ b/hwe/scss/common_legacy.scss @@ -0,0 +1,286 @@ +@import "./bootstrap5.scss"; + +html * { + max-height: 1000000px; +} + +html, +body { + background-color: black; + color: white; + line-height: 1.3; + font-family: '맑은 고딕'; + font-size: 13px; +} + +table { + font-family: '맑은 고딕'; +} + +font { + font-family: '맑은 고딕'; +} + +input { + font-family: '맑은 고딕'; + font-size: 13px; +} + +select { + font-family: '굴림'; + line-height: 100%; +} + +.center { + text-align: center; +} + +table.mimic_flex { + border-collapse: collapse; + border: none; + padding: 0; +} + +.mimic_flex td, +.mimic_flex th { + border: none !important; + padding: 0px; + word-break: break-all; +} + +table.tb_layout { + border-collapse: collapse; + padding: 0px; + font-size: 13px; + word-break: break-all; + font-family: '맑은 고딕'; +} + +.tb_layout td, +.tb_layout th { + border: solid 1px gray; + padding: 0px; + word-break: break-all; + font-family: '맑은 고딕'; + ; +} + +div.bar_out { + position: relative; + border-top: solid 1px #888888; + border-bottom: solid 1px #333333; + padding: 0; + margin: 0; + width: 100%; + overflow: hidden; +} + +div.bar_out div { + position: absolute; + left: 0; + top: 0; + height: 100%; +} + +div.bar_out div.bar_in { + width: 100%; +} + + +/* */ + +.ev_warning { + color: orangered; +} + +.ev_notice { + color: orangered; +} + +.ev_succes { + color: lightgreen; +} + +.ev_sell { + color: orange; +} + +.ev_failed { + color: orangered; +} + +.ev_highlight { + color: orangered; +} + + +/* TODO: 색상값이 아니라 의미에 따라 클래스 지정 */ + +.o_bullet::before { + color: cyan; + content: "●"; +} + +.o_diamond::before { + color: orangered; + content: "◆"; +} + +.small_war_log { + display: inline-block; +} + +.small_war_log .war_type_attack { + color: cyan; +} + +.small_war_log .war_type_defense { + color: magenta; +} + +.small_war_log .war_type_siege { + color: white; +} + +.small_war_log .name_plate { + font-size: 0.75em; +} + +.small_war_log .name_plate_cover { + color: yellow; +} + +.small_war_log .crew_plate { + color: orangered; + font-size: 90%; +} + +.t_date { + font-size: 0.75em; +} + +.t_red { + color: red; +} + +.t_blue { + color: blue; +} + +.t_green { + color: green; +} + +.t_magenta { + color: magenta; +} + +.t_cyan { + color: cyan; +} + +.t_limegreen { + color: limegreen; +} + +.t_skyblue { + color: skyblue; +} + +.t_orangered { + color: orangered; +} + +.t_yellow { + color: yellow; +} + +.t_white { + color: white; +} + +.float_left { + float: left; +} + +.tooltip { + font-size: 12px; + font-family: '맑은 고딕'; +} + +.tooltip_copyable_info .tooltiptext { + display: inline; + color: rgba(0, 0, 0, 0); + font-size: 0; +} + +.tooltiptext { + display: none; +} + +.hidden_but_copyable { + color: rgba(0, 0, 0, 0); + font-size: 0; +} + +.btn-group-xs>.btn, +.btn-xs { + padding: .25rem .4rem; + font-size: .875rem; + line-height: .5; + border-radius: .2rem; +} + +.edit_form.viewer { + max-height: 200px; + overflow-y: auto; +} + +.trumbowyg-box { + margin: 0; + border-left: none; + border-right: none; +} + +.edit_form.trumbowyg-editor { + margin: 0; + padding: 0; +} + +.commandBasic { + background-color: black; + color: white; +} + +.compensatePositive { + color: skyblue; +} + +.compensateNegative { + color: orange; +} + +.compensateNeutral { + color: white; +} + +.commandBasic.commandImpossible { + background-color: red; + color: white; +} + +.select2-selection--single.simple-select2-align-center .select2-selection__rendered { + text-align: center; +} + +.select2-dropdown.simple-select2-align-center li.select2-results__option { + text-align: center; +} + +.select2-container--bootstrap4 .select2-selection--single.text-secondary .select2-selection__rendered { + color: white; +} + +.select2-container--bootstrap4 .text-secondary .select2-results__option[aria-selected=false] { + color: white; +} \ No newline at end of file diff --git a/hwe/scss/game_bg.scss b/hwe/scss/game_bg.scss index 716bcecd..5bde826d 100644 --- a/hwe/scss/game_bg.scss +++ b/hwe/scss/game_bg.scss @@ -1,5 +1,3 @@ -@charset "UTF-8"; - @import url('https://fonts.googleapis.com/css2?family=Nanum+Gothic:wght@400;700&display=swap'); @import '../../d_shared/common.css'; diff --git a/hwe/scss/main.scss b/hwe/scss/main.scss new file mode 100644 index 00000000..06db29f4 --- /dev/null +++ b/hwe/scss/main.scss @@ -0,0 +1,545 @@ +@import "./break_500px.scss"; +@import "./bootstrap5.scss"; + +body { + color: white; + background-color: black; + border-width: 1px; + border-color: gray; + background-position: center; + background-repeat: repeat-y; +} + +@include media-breakpoint-up(md) { + #container { + width: 1000px; + margin: 0 auto; + } +} + +@include media-breakpoint-down(md) { + body { + overflow-x: hidden; + } + + #container { + width: 500px; + margin: 0 auto; + } +} + +.avoid-wrap { + display: inline-block; +} + + +#map_view { + display: grid; +} + +.mainCityInfo { + display: grid; + border-right: solid 1px gray; + border-bottom: solid 1px gray; + + .gPanel { + display: grid; + grid-template-columns: 1fr 2fr; + border-top: solid 1px gray; + border-left: solid 1px gray; + + .gHead { + display: flex; + justify-content: center; + align-items: center; + } + } + + .cityNamePanel, + .nationNamePanel { + font-weight: bold; + text-align: center; + border-top: solid 1px gray; + border-left: solid 1px gray; + } + + .popPanel { + grid-column: 1 / 3; + grid-template-columns: 1fr 5fr; + } +} + +.vote-cell { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +@include media-breakpoint-up(md) { + #map_view { + grid-template-columns: 700px 300px; + grid-template-rows: 520px 130px auto; + } + + #mapZone { + height: 520px; + grid-column: 1 / 2; + grid-row: 1 / 2; + } + + #cityInfo { + grid-column: 1 / 2; + grid-row: 2 / 3; + } + + + #routeButtons { + grid-column: 1 / 3; + grid-row: 3 / 4; + } + + #reservedCommandList { + width: 300px; + grid-column: 2 / 3; + grid-row: 1 / 3; + position: relative; + } + + .commandPad { + position: absolute; + z-index: 7; + } + + + .buttonPlate { + display: grid; + grid-template-columns: repeat(10, 1fr); + padding: 0; + } + + .toolbars>.buttonPlate { + grid-template-columns: repeat(8, 1fr); + } + + .buttonPlate>a { + display: block; + text-decoration: none; + } + + .commandButton { + width: 100%; + font-weight: bold; + font-size: 13px; + display: block; + } + + + .mainCityInfo { + grid-template-columns: 1fr 1fr 1fr 1fr; + + .cityNamePanel, + .nationNamePanel { + grid-column: 1 / 5; + } + + .officer4Panel { + grid-column: 4 / 5; + grid-row: 3 / 4; + } + + .officer3Panel { + grid-column: 4 / 5; + grid-row: 4 / 5; + } + + .officer2Panel { + grid-column: 4 / 5; + grid-row: 5 / 6; + } + } +} + +#nation-msg-box { + position: relative; + overflow: hidden; +} + +@include media-breakpoint-down(md) { + .buttonPlate { + display: grid; + grid-template-columns: repeat(5, 1fr); + padding: 0; + } + + .toolbars>.buttonPlate { + grid-template-columns: repeat(4, 1fr); + } + + .buttonPlate>a { + display: block; + text-decoration: none; + } + + .commandButton { + width: 100%; + font-weight: bold; + font-size: 13px; + display: block; + } + + #nation-msg { + transform-origin: 0px 0px; + width: 1000px; + transform: scale(0.5); + } + + #mapZone { + grid-column: 1 / 2; + grid-row: 1 / 2; + + + .world_map { + width: 500px; + height: calc((500px + 20px) * 500 / 700); + } + + .map_title { + transform-origin: 0px 0px; + transform: scale(calc(500 / 700)); + margin-bottom: calc(-20px * 200 / 700); + } + + .map_body { + transform-origin: 0px 0px; + transform: scale(calc(500 / 700)); + } + } + + + #reservedCommandList { + grid-column: 1 / 2; + grid-row: 2 / 3; + } + + #routeButtons { + grid-column: 1 / 2; + grid-row: 3 / 4; + } + + + #cityInfo { + grid-column: 1 / 2; + grid-row: 4 / 5; + } + + .mainCityInfo { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + + .cityNamePanel, + .nationNamePanel { + grid-column: 1 / 4; + } + } +} + +.toolbarButton { + @extend .btn; + @extend .btn-sammo-base2; + width: 100%; + font-weight: bold; + font-size: 13px; +} + +.toolbarButton2 { + @extend .btn; + @extend .btn-sammo-base2; + color: magenta; + width: 100%; + font-weight: bold; + font-size: 13px; + + &:hover, + &:focus, + &:active { + color: magenta; + } +} + +.nation_info td { + height: 18px; +} + +#sidebar { + position: fixed; + right: 0; + top: 50%; + transform: translateY(-50%); +} + +/*임시용 */ + +#container { + /*width:1000px;*/ + margin: auto; + font-size: 13px; +} + +/*임시용 끝*/ + +#message_board { + position: relative; +} + +/* +#message_board section{ + overflow-y:auto; + overflow-x:hidden; +} +*/ +.msg_plate { + width: 100%; + outline-style: solid; + outline-width: 1px; + outline-color: gray; + min-height: 64px; + font-size: 12px; + word-break: break-all; + color: white; +} + +.msg_plate_private { + background-color: #5d1e1a; +} + +.msg_plate_private.msg_plate_dest { + background-color: #5d461a; +} + +.msg_plate_public { + background-color: #141c65; + +} + +@include media-breakpoint-up(md) { + #message_board section { + overflow-y: auto; + overflow-x: hidden; + height: 650px; + } + + + .public_message, + .diplomacy_message, + .national_message, + .private_message { + min-height: 300px; + } +} + +@include media-breakpoint-down(md) { + + .public_message, + .diplomacy_message, + .national_message, + .private_message { + min-height: 150px; + } +} + +.msg_plate_national, +.msg_plate_diplomacy { + background-color: #00582c; +} + +.msg_plate_national.msg_plate_dest, +.msg_plate_diplomacy.msg_plate_dest { + background-color: #704615; +} + +.msg_plate_national.msg_plate_src, +.msg_plate_diplomacy.msg_plate_src { + background-color: #70153b; +} + +.msg_icon { + float: left; + width: 64px; + height: 64px; + border-right: solid 1px gray; +} + +.msg_time { + font-size: 0.75em; + font-weight: normal; +} + +.msg_header { + font-weight: bold; + margin-bottom: 3px; + color: white; + position: relative; +} + +.message_input_form { + position: relative; +} + +#mailbox_list { + font-weight: bold; +} + +.board_header { + color: white; + outline-style: solid; + outline-width: 1px; + outline-color: gray; +} + +/* +.board_side{ + position:absolute; + height:1370px; + width:50%; + overflow-y: hidden; + outline-style:solid; + outline-width:1px; + outline-color: gray; + display: flex; + flex-wrap: wrap; + flex-direction: column; +} +.board_side > div{ + height: 1.2em; +} +*/ +.msg_invalid { + color: rgba(255, 255, 255, 0.5); +} + +.msg_body { + padding-left: 64px; +} + +.msg_target { + margin: 2px 2px 0 2px; + padding: 2px 3px; + display: inline-block; + box-shadow: 2px 2px black; + border-radius: 3px; +} + +.btn-delete-msg { + position: absolute; + right: 0; + top: 0; + margin: 2px 2px 0 2px; + font-size: 8px; +} + + +@include media-breakpoint-down(md) { + #mailbox_list-col { + order: 1; + } + + #msg_submit-col { + order: 2; + } + + #msg_input-col { + order: 3; + } +} + + +/* +.public_message .msg_target{ + box-shadow: 2px 2px darkslategrey; +} +*/ + +.msg_target.msg_bright { + color: black; +} + +.msg_target.msg_dark { + color: white; +} + +.msg_from_to { + display: inline-block; +} + +.msg_content { + margin-left: 10px; + margin-right: 5px; + overflow: hidden; +} + +.msg_prompt { + text-align: right; + margin-top: 5px; + margin-right: 5px; +} + +#mailbox_list option { + color: white; + background-color: black; +} + + +@include media-breakpoint-up(md) { + #float-tabs { + display: none; + } +} + +@include media-breakpoint-down(md) { + #float-tabs { + position: fixed; + right: -1rem; + top: 10%; + width: 3rem; + + .btn-group-vertical { + margin-bottom: 0.5em; + } + + .btn { + padding-left: 0.5em; + padding-right: 1.5rem; + line-height: 1em; + } + } +} + +@media (max-width: 560px) { + #float-tabs { + .btn { + opacity: 0.7; + } + + .btn.active { + opacity: 1.0; + } + + .btn:active { + opacity: 0.7; + } + } +} + + +.s-border-t { + border-top: gray solid 1px; +} + +.s-border-b { + border-bottom: gray solid 1px; +} + +.s-border-tb { + border-top: gray solid 1px; + border-bottom: gray solid 1px; +} \ No newline at end of file diff --git a/hwe/scss/troop.scss b/hwe/scss/troop.scss index d86a7477..060d2d1c 100644 --- a/hwe/scss/troop.scss +++ b/hwe/scss/troop.scss @@ -1,5 +1,3 @@ -@charset "UTF-8"; - #troop_list .cityText{ display:none; } diff --git a/hwe/scss/variables.scss b/hwe/scss/variables.scss new file mode 100644 index 00000000..cb85a787 --- /dev/null +++ b/hwe/scss/variables.scss @@ -0,0 +1,49 @@ +$base1color: #141c65; +$base2color: #00582c; +$base3color: #704615; +$base4color: #70153b; + +$sammoColors: ( + 'base1': $base1color, + 'base2': $base2color, + 'base3': $base3color, + 'base4': $base4color, +); + +$nationColors: ( + "000000": #000000, + "FF0000": #FF0000, + "800000": #800000, + "A0522D": #A0522D, + "FF6347": #FF6347, + "FFA500": #FFA500, + "FFDAB9": #FFDAB9, + "FFD700": #FFD700, + "FFFF00": #FFFF00, + "7CFC00": #7CFC00, + "00FF00": #00FF00, + "808000": #808000, + "008000": #008000, + "2E8B57": #2E8B57, + "008080": #008080, + "20B2AA": #20B2AA, + "6495ED": #6495ED, + "7FFFD4": #7FFFD4, + "AFEEEE": #AFEEEE, + "87CEEB": #87CEEB, + "00FFFF": #00FFFF, + "00BFFF": #00BFFF, + "0000FF": #0000FF, + "000080": #000080, + "483D8B": #483D8B, + "7B68EE": #7B68EE, + "BA55D3": #BA55D3, + "800080": #800080, + "FF00FF": #FF00FF, + "FFC0CB": #FFC0CB, + "F5F5DC": #F5F5DC, + "E0FFFF": #E0FFFF, + "FFFFFF": #FFFFFF, + "A9A9A9": #A9A9A9, + "330000": #330000, +); diff --git a/hwe/templates/allButton.php b/hwe/templates/allButton.php index af1a4562..52663965 100644 --- a/hwe/templates/allButton.php +++ b/hwe/templates/allButton.php @@ -1,22 +1,18 @@ - + \ No newline at end of file diff --git a/hwe/templates/commandButton.php b/hwe/templates/commandButton.php index a2770617..478e79e5 100644 --- a/hwe/templates/commandButton.php +++ b/hwe/templates/commandButton.php @@ -1,25 +1,22 @@ \ No newline at end of file diff --git a/hwe/templates/mainCityInfo.php b/hwe/templates/mainCityInfo.php index 6a21122b..dd86ced2 100644 --- a/hwe/templates/mainCityInfo.php +++ b/hwe/templates/mainCityInfo.php @@ -1,47 +1,48 @@ -| 【 =$region?> | =$levelText?> 】 =$name?> | |||||||
| =$nationName?"지배 국가 【 {$nationName} 】":'공 백 지'?> | -|||||||
| 주민 | -=$this->bar($pop/$pop_max*100)?> | -민심 | -=$this->bar($trust)?> | -태수 | -=$officerName[4]?> | -||
| =$pop?>/=$pop_max?> | -=round($trust, 1)?> | -||||||
| 농업 | -=$this->bar($agri/$agri_max*100)?> | -상업 | -=$this->bar($comm/$comm_max*100)?> | -치안 | -=$this->bar($secu/$secu_max*100)?> | -군사 | -=$officerName[3]?> | -
| =$agri?>/=$agri_max?> | -=$comm?>/=$comm_max?> | -=$secu?>/=$secu_max?> | -|||||
| 수비 | -=$this->bar($def/$def_max*100)?> | -성벽 | -=$this->bar($wall/$wall_max*100)?> | -시세 | -=$this->bar(($trade-95)*10)?> | -종사 | -=$officerName[2]?> | -
| =$def?>/=$def_max?> | -=$wall?>/=$wall_max?> | -=$trade?"{$trade}%":'상인없음'?> | -|||||