• R/O
  • SSH
  • HTTPS

jinrousiki: Commit


Commit MetaInfo

Revisão2748 (tree)
Hora2021-06-20 05:03:27
Autorumethyl

Mensagem de Log

仮 GM モード:オプション変更権限実装

Mudança Sumário

Diff

--- trunk/include/controller/game_play_class.php (revision 2747)
+++ trunk/include/controller/game_play_class.php (revision 2748)
@@ -611,7 +611,7 @@
611611 protected function OutputHeaderLinkFooter() {
612612 $url = sprintf('%s&user_no=%s', $this->SelectURL([]), DB::$SELF->id);
613613 GamePlayHTML::OutputHeaderLink('user_manager', $url); //登録情報変更
614- if (DB::$SELF->IsDummyBoy()) { //村オプション変更
614+ if (RoomOptionManager::EnableChange()) { //村オプション変更
615615 GamePlayHTML::OutputHeaderLink('room_manager', $this->SelectURL([]));
616616 }
617617 }
--- trunk/include/controller/room_manager_class.php (revision 2747)
+++ trunk/include/controller/room_manager_class.php (revision 2748)
@@ -144,9 +144,8 @@
144144 //ユーザー情報ロード
145145 DB::LoadUser();
146146 DB::LoadSelf();
147+ DB::$ROOM->ParseOption(true);
147148 self::ValidateSelfCreateInChange();
148-
149- DB::$ROOM->ParseOption(true);
150149 }
151150
152151 //データロード (村作成 / オプション変更時)
@@ -168,9 +167,8 @@
168167
169168 //本人情報ロード
170169 DB::LoadSelf();
170+ DB::$ROOM->ParseOption(true);
171171 self::ValidateSelfCreateInChange();
172-
173- DB::$ROOM->ParseOption(true);
174172 }
175173
176174 //村情報チェック (オプション変更時)
@@ -185,7 +183,7 @@
185183
186184 //本人情報チェック (オプション変更時)
187185 private static function ValidateSelfCreateInChange() {
188- if (false === DB::$SELF->IsDummyBoy()) {
186+ if (false === RoomOptionManager::EnableChange()) {
189187 $body = sprintf(RoomManagerMessage::ERROR_CHANGE_NOT_GM, Message::DUMMY_BOY, Message::GM);
190188 self::OutputCreateInChangeError($body);
191189 }
@@ -388,6 +386,10 @@
388386 Text::p($_POST, '◆Post');
389387 Text::p(RoomOption::Get(OptionGroup::GAME), '◆GameOption');
390388 Text::p(RoomOption::Get(OptionGroup::ROLE), '◆OptionRole');
389+ if (RoomOptionManager::IsChange()) {
390+ Text::p(DB::$ROOM->game_option, '◆ROOM/game_option');
391+ Text::p(DB::$ROOM->option_role, '◆ROOM/role_option');
392+ }
391393 RQ::p();
392394 HTML::OutputFooter(true);
393395 }
--- trunk/include/html/controller/game_play_html_class.php (revision 2747)
+++ trunk/include/html/controller/game_play_html_class.php (revision 2748)
@@ -45,7 +45,7 @@
4545
4646 //時間設定出力
4747 public static function OutputTimeSetting() {
48- echo TableHTML::GenerateTdHeader('real-time');
48+ TableHTML::OutputTdHeader('real-time');
4949 if (DB::$ROOM->IsRealTime()) { //実時間の制限時間を取得
5050 printf(GamePlayMessage::REAL_TIME, DB::$ROOM->real_time->day, DB::$ROOM->real_time->night);
5151 }
--- trunk/include/option/room_option_manager_class.php (revision 2747)
+++ trunk/include/option/room_option_manager_class.php (revision 2748)
@@ -12,7 +12,7 @@
1212 return $stack;
1313 }
1414
15- //村オプション変更判定
15+ //村オプション変更実施判定
1616 public static function IsChange() {
1717 if (self::Stack()->IsEmpty('change')) {
1818 self::Stack()->Set('change', false);
@@ -20,6 +20,25 @@
2020 return self::Stack()->Get('change');
2121 }
2222
23+ //村オプション変更権限判定
24+ /*
25+ 身代わり君 or 仮 GM
26+ */
27+ public static function EnableChange() {
28+ return DB::$SELF->IsDummyBoy() || self::IsTemporaryGM();
29+ }
30+
31+ //仮 GM 判定
32+ public static function IsTemporaryGM() {
33+ $option = 'temporary_gm';
34+ if (DB::$ROOM->IsOption($option)) {
35+ $filter = OptionLoader::Load($option);
36+ return $filter->IsTemporaryGM();
37+ } else {
38+ return false;
39+ }
40+ }
41+
2342 //村作成オプション入力情報ロード
2443 public static function LoadPost() {
2544 self::LoadPostBase();
@@ -72,6 +91,11 @@
7291 }
7392 }
7493 }
94+
95+ $option = 'temporary_gm';
96+ if (DB::$ROOM->IsOption($option)) {
97+ RoomOption::Set(OptionGroup::GAME, $option);
98+ }
7599 }
76100
77101 //村作成オプション入力情報ロード (クイズ村)
@@ -104,7 +128,9 @@
104128 RoomOption::Set(OptionGroup::GAME, 'dummy_boy');
105129 RoomOption::LoadPost('gerd', 'dummy_boy_cast_limit');
106130 } else {
107- RoomOption::LoadPost('temporary_gm'); //「身代わり君は GM」が OFF なら仮 GM モードを設定可能
131+ if (false === RQ::Get()->change_room) {
132+ RoomOption::LoadPost('temporary_gm'); //「身代わり君は GM」が OFF なら仮 GM モードを設定可能
133+ }
108134 if (RQ::Get()->dummy_boy) {
109135 if (false === RQ::Get()->change_room) {
110136 self::Stack()->Set('gm_name', Message::DUMMY_BOY);
--- trunk/include/option/temporary_gm.php (revision 2747)
+++ trunk/include/option/temporary_gm.php (revision 2748)
@@ -4,6 +4,12 @@
44 ○仕様
55 */
66 class Option_temporary_gm extends OptionCastCheckbox {
7+ protected function FilterEnable() {
8+ if (RoomOptionManager::IsChange()) {
9+ $this->enable = false;
10+ }
11+ }
12+
713 public function GetCaption() {
814 return '仮 GM モード';
915 }
@@ -11,4 +17,20 @@
1117 public function GetExplain() {
1218 return '最初の入村者が一部のゲームオプションを編集できるようになります';
1319 }
20+
21+ //仮 GM 権限者判定
22+ /*
23+ 最初の入村者IDを特定 (キックでずれるので固定ではない) して SELF と比較する
24+ DB取得時にソート順が指定されているので身代わり君の次で確定
25+ */
26+ public function IsTemporaryGM() {
27+ $id = null;
28+ foreach (DB::$USER->Get() as $user) {
29+ if (false === $user->IsDummyBoy()) {
30+ $id = $user->id;
31+ break;
32+ }
33+ }
34+ return (null !== $id && DB::$SELF->id == $id);
35+ }
1436 }
Show on old repository browser