Skip to content
This repository was archived by the owner on Feb 8, 2019. It is now read-only.

Commit 3f39da3

Browse files
committed
Merge branch 'release/v0.0.9-BETA'
2 parents 115ac17 + af5d888 commit 3f39da3

File tree

7 files changed

+130
-13
lines changed

7 files changed

+130
-13
lines changed

plugin.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ softdepend:
66

77
description: "Original game of VectorNetwork"
88
website: "https://vector-network.tk"
9-
version: 0.0.8-BETA
9+
version: 0.0.9-BETA
1010
authors:
1111
- InkoHX
1212
- MazaiCrafty

src/VectorNetworkProject/TheMix/TheMix.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
use VectorNetworkProject\TheMix\event\LibraryEventListener;
2626
use VectorNetworkProject\TheMix\event\PlayerEventListener;
2727
use VectorNetworkProject\TheMix\game\DefaultConfig;
28+
use VectorNetworkProject\TheMix\task\PhaseTask;
2829

2930
class TheMix extends PluginBase
3031
{
@@ -52,6 +53,7 @@ public function onEnable()
5253
FormApi::register($this);
5354
$this->registerCommands();
5455
$this->registerEvents();
56+
$this->getScheduler()->scheduleRepeatingTask(new PhaseTask(), 20);
5557
$this->getServer()->loadLevel(DefaultConfig::getStageLevelName())
5658
? $this->getLogger()->notice('Loaded stage.')
5759
: $this->getServer()->generateLevel(DefaultConfig::getStageLevelName());

src/VectorNetworkProject/TheMix/event/BlockEventListener.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@
2525

2626
class BlockEventListener implements Listener
2727
{
28+
/** @var bool $diamond */
29+
private static $diamond = true;
30+
2831
/**
2932
* @param BlockBreakEvent $event
3033
*/
@@ -59,6 +62,12 @@ public function onOreBreak(BlockBreakEvent $event): void
5962
TheMix::getInstance()->getScheduler()->scheduleDelayedTask(new BlockReGeneratorTask($block), 15 * 20);
6063
break;
6164
case Block::DIAMOND_ORE:
65+
if (!self::isDiamond()) {
66+
$event->getPlayer()->sendMessage('§cRASH TIME§fになるまでダイヤモンドは破壊出来ません。');
67+
$event->setCancelled();
68+
69+
return;
70+
}
6271
$inventory->addItem(Item::get(Item::DIAMOND));
6372
TheMix::getInstance()->getScheduler()->scheduleDelayedTask(new BlockReGeneratorTask($block), 60 * 20);
6473
break;
@@ -155,4 +164,22 @@ public function onBlockPlace(BlockPlaceEvent $event)
155164
$event->setCancelled();
156165
}
157166
}
167+
168+
/**
169+
* @return bool
170+
*/
171+
public static function isDiamond(): bool
172+
{
173+
return self::$diamond;
174+
}
175+
176+
/**
177+
* ダイヤモンドの破壊を許可するかどうか.
178+
*
179+
* @param bool $diamond
180+
*/
181+
public static function setDiamond(bool $diamond): void
182+
{
183+
self::$diamond = $diamond;
184+
}
158185
}

src/VectorNetworkProject/TheMix/event/GameEventListener.php

Lines changed: 77 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,13 @@
1515
use pocketmine\Server;
1616
use pocketmine\utils\TextFormat;
1717
use VectorNetworkProject\TheMix\game\corepvp\blue\BlueTeamManager;
18+
use VectorNetworkProject\TheMix\game\corepvp\PhaseManager;
1819
use VectorNetworkProject\TheMix\game\corepvp\red\RedTeamManager;
1920
use VectorNetworkProject\TheMix\game\DefaultConfig;
2021
use VectorNetworkProject\TheMix\game\event\game\BreakCoreEvent;
2122
use VectorNetworkProject\TheMix\game\event\game\GameWinEvent;
23+
use VectorNetworkProject\TheMix\game\event\game\PhaseTimeUpdateEvent;
24+
use VectorNetworkProject\TheMix\game\event\game\PhaseUpdateEvent;
2225
use VectorNetworkProject\TheMix\game\event\player\PlayerStreakEvent;
2326
use VectorNetworkProject\TheMix\lib\sound\LevelSounds;
2427
use VectorNetworkProject\TheMix\task\ResetGameTask;
@@ -29,6 +32,9 @@ class GameEventListener implements Listener
2932
/** @var bool $finish */
3033
private static $finish = false;
3134

35+
/** @var bool $break */
36+
private $break = false;
37+
3238
/**
3339
* @param BreakCoreEvent $event
3440
*
@@ -45,6 +51,12 @@ public function onBreakCore(BreakCoreEvent $event)
4551
}
4652
switch ($event->getTeam()) {
4753
case BreakCoreEvent::RED:
54+
if (!$this->isBreak()) {
55+
$event->setCancelled();
56+
$event->getPlayer()->sendMessage('§6WAR TIME §fになるまでコアは破壊出来ません。HAHAHA');
57+
58+
return;
59+
}
4860
Server::getInstance()->broadcastMessage("§l§cRED§rのコアが§b{$player->getName()}§rによって攻撃を受けています。");
4961
foreach (Server::getInstance()->getOnlinePlayers() as $player) {
5062
LevelSounds::NotePiano($player);
@@ -55,6 +67,12 @@ public function onBreakCore(BreakCoreEvent $event)
5567
}
5668
break;
5769
case BreakCoreEvent::BLUE:
70+
if (!$this->isBreak()) {
71+
$event->setCancelled();
72+
$event->getPlayer()->sendMessage('§6WAR TIME §fになるまでコアは破壊出来ません。HAHAHA');
73+
74+
return;
75+
}
5876
Server::getInstance()->broadcastMessage("§l§bBLUR§rのコアが§c{$player->getName()}§rによって攻撃を受けています。");
5977
foreach (Server::getInstance()->getOnlinePlayers() as $player) {
6078
LevelSounds::NotePiano($player);
@@ -96,7 +114,7 @@ public function onStreak(PlayerStreakEvent $event)
96114
/**
97115
* @param GameWinEvent $event
98116
*/
99-
public function event(GameWinEvent $event)
117+
public function onGameWin(GameWinEvent $event)
100118
{
101119
if (DefaultConfig::isDev()) {
102120
$event->setCancelled();
@@ -123,10 +141,50 @@ public function event(GameWinEvent $event)
123141
TheMix::getInstance()->getScheduler()->scheduleDelayedTask(new ResetGameTask(), 30 * 20);
124142
Server::getInstance()->broadcastTitle('§l§f===< §6決着 §f>===', '§aWin:§l '.$event->getType() === GameWinEvent::WIN_RED ? '§cRED' : '§bBLUE', 20, 5 * 20, 20);
125143
Server::getInstance()->broadcastMessage('===< END GAME >===');
126-
Server::getInstance()->broadcastMessage('§l§eGG! TheMix v0.0.8-BETA');
144+
Server::getInstance()->broadcastMessage('§l§eGG! TheMix v0.0.9-BETA');
127145
Server::getInstance()->broadcastMessage('§lDiscordに参加して遊んだ感想や改善してほしい点などを書いて下さい!');
128146
Server::getInstance()->broadcastMessage('§lDiscord: https://discord.gg/EF2G5dh');
129-
Server::getInstance()->broadcastMessage('§c30秒後プレイヤーの再接続とサーバー再起動を開始します。');
147+
Server::getInstance()->broadcastMessage('§c30秒後ゲームをリセットします。');
148+
}
149+
150+
/**
151+
* @param PhaseTimeUpdateEvent $event
152+
*
153+
* @throws \ReflectionException
154+
*/
155+
public function onPhaseTimeUpdate(PhaseTimeUpdateEvent $event)
156+
{
157+
if (RedTeamManager::getListCount() < 1 || BlueTeamManager::getListCount() < 1 || PhaseManager::MAX_PHASE === $event->getPhase() || self::isFinish()) {
158+
Server::getInstance()->broadcastPopup("§l§cTIME: {$event->getTime()} : Phase: {$event->getPhase()}");
159+
$event->setCancelled();
160+
161+
return;
162+
} elseif ($event->getTime() === 0) {
163+
PhaseManager::addPhase();
164+
}
165+
Server::getInstance()->broadcastPopup("§l{$event->getTime()} : Phase: {$event->getPhase()}");
166+
}
167+
168+
/**
169+
* @param PhaseUpdateEvent $event
170+
*/
171+
public function onPhaseUpdate(PhaseUpdateEvent $event)
172+
{
173+
if (RedTeamManager::getListCount() < 1 || BlueTeamManager::getListCount()) {
174+
$event->setCancelled();
175+
176+
return;
177+
}
178+
switch ($event->getPhase()) {
179+
case 2:
180+
$this->setBreak(true);
181+
Server::getInstance()->broadcastTitle('§l§6WAR TIME', 'コアの破壊が可能になりました。', 20, 100, 20);
182+
break;
183+
case 3:
184+
BlockEventListener::setDiamond(true);
185+
Server::getInstance()->broadcastTitle('§l§cRUSH TIME', '攻め時だ!ダイヤを確保し敵陣へ乗り込め!', 20, 100, 20);
186+
break;
187+
}
130188
}
131189

132190
/**
@@ -144,4 +202,20 @@ public static function isFinish(): bool
144202
{
145203
return self::$finish;
146204
}
205+
206+
/**
207+
* @return bool
208+
*/
209+
private function isBreak(): bool
210+
{
211+
return $this->break;
212+
}
213+
214+
/**
215+
* @param bool $break
216+
*/
217+
private function setBreak(bool $break): void
218+
{
219+
$this->break = $break;
220+
}
147221
}

src/VectorNetworkProject/TheMix/game/GameManager.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
use pocketmine\Server;
1515
use VectorNetworkProject\TheMix\event\GameEventListener;
1616
use VectorNetworkProject\TheMix\game\corepvp\CoreManager;
17+
use VectorNetworkProject\TheMix\game\corepvp\PhaseManager;
1718
use VectorNetworkProject\TheMix\game\corepvp\TeamManager;
19+
use VectorNetworkProject\TheMix\task\PhaseTask;
1820
use VectorNetworkProject\TheMix\TheMix;
1921

2022
class GameManager
@@ -24,6 +26,8 @@ public static function resetGame(): void
2426
TeamManager::resetTeam();
2527
CoreManager::resetHP();
2628
GameEventListener::setFinish(false);
29+
PhaseManager::setPhase(1);
30+
PhaseTask::setTime();
2731
foreach (Server::getInstance()->getOnlinePlayers() as $player) {
2832
$player->teleport(Server::getInstance()->getDefaultLevel()->getSpawnLocation());
2933
$player->setGamemode(Player::ADVENTURE);

src/VectorNetworkProject/TheMix/game/corepvp/PhaseManager.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,24 @@
99
namespace VectorNetworkProject\TheMix\game\corepvp;
1010

1111
use VectorNetworkProject\TheMix\game\event\game\PhaseUpdateEvent;
12+
use VectorNetworkProject\TheMix\task\PhaseTask;
1213

1314
class PhaseManager
1415
{
1516
/** @var int */
16-
public const MAX_PHASE = 5;
17+
public const MAX_PHASE = 3;
1718

1819
/** @var int $phase */
1920
private static $phase = 1;
2021

22+
/**
23+
* @param int $phase
24+
*/
25+
public static function setPhase(int $phase): void
26+
{
27+
self::$phase = $phase;
28+
}
29+
2130
/**
2231
* @throws \ReflectionException
2332
*/
@@ -27,6 +36,7 @@ public static function addPhase(): void
2736
$event->call();
2837
if (!$event->isCancelled()) {
2938
self::$phase++;
39+
PhaseTask::setTime();
3040
}
3141
}
3242

src/VectorNetworkProject/TheMix/task/PhaseTask.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
class PhaseTask extends Task
1616
{
1717
/** @var int $time */
18-
private $time;
18+
private static $time;
1919

2020
/**
2121
* PhaseTask constructor.
@@ -24,7 +24,7 @@ class PhaseTask extends Task
2424
*/
2525
public function __construct(int $time = 600)
2626
{
27-
$this->time = $time;
27+
self::$time = $time;
2828
}
2929

3030
/**
@@ -34,26 +34,26 @@ public function __construct(int $time = 600)
3434
*/
3535
public function onRun(int $currentTick)
3636
{
37-
$event = new PhaseTimeUpdateEvent($this->getTime() - 1, PhaseManager::getPhase());
37+
$event = new PhaseTimeUpdateEvent(self::getTime() - 1, PhaseManager::getPhase());
3838
$event->call();
3939
if (!$event->isCancelled()) {
40-
$this->setTime($this->getTime() - 1);
40+
self::setTime($this->getTime() - 1);
4141
}
4242
}
4343

4444
/**
4545
* @return int
4646
*/
47-
public function getTime(): int
47+
public static function getTime(): int
4848
{
49-
return $this->time;
49+
return self::$time;
5050
}
5151

5252
/**
5353
* @param int $time
5454
*/
55-
public function setTime(int $time): void
55+
public static function setTime(int $time = 600): void
5656
{
57-
$this->time = $time;
57+
self::$time = $time;
5858
}
5959
}

0 commit comments

Comments
 (0)