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

Commit f1ca6ae

Browse files
authored
Merge pull request #32 from VectorNetworkProject/feature/cooldown
Feature/cooldown
2 parents 3e4f8e3 + 011f8c1 commit f1ca6ae

File tree

6 files changed

+186
-6
lines changed

6 files changed

+186
-6
lines changed

src/VectorNetworkProject/TheMix/event/block/TheBlockBreakEvent.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,8 @@
88

99
namespace VectorNetworkProject\TheMix\event\block;
1010

11-
use InkoHX\GoldLibrary\GoldAPI;
12-
use InkoHX\LeveLibrary\LevelAPI;
1311
use pocketmine\event\block\BlockBreakEvent;
1412
use pocketmine\event\Listener;
15-
use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
1613
use pocketmine\Server;
1714
use VectorNetworkProject\TheMix\event\game\TheEndGameEvent;
1815
use VectorNetworkProject\TheMix\game\corepvp\blue\BlueCoreManager;
@@ -21,7 +18,6 @@
2118
use VectorNetworkProject\TheMix\game\corepvp\red\RedTeamManager;
2219
use VectorNetworkProject\TheMix\game\DefaultConfig;
2320
use VectorNetworkProject\TheMix\game\event\game\BreakCoreEvent;
24-
use VectorNetworkProject\TheMix\lib\sound\LevelSounds;
2521

2622
class TheBlockBreakEvent implements Listener
2723
{
@@ -48,15 +44,19 @@ public function event(BlockBreakEvent $event)
4844
if (!DefaultConfig::isDev()) {
4945
if (RedCoreManager::isCore($block)) {
5046
$event->setCancelled();
51-
if (RedTeamManager::isJoined($player)) return;
47+
if (RedTeamManager::isJoined($player)) {
48+
return;
49+
}
5250
$revent = new BreakCoreEvent($player, BreakCoreEvent::RED);
5351
$revent->call();
5452
if (!$revent->isCancelled()) {
5553
RedCoreManager::reduceHP($revent->getDamage(), $player);
5654
}
5755
} elseif (BlueCoreManager::isCore($block)) {
5856
$event->setCancelled();
59-
if (BlueTeamManager::isJoined($player)) return;
57+
if (BlueTeamManager::isJoined($player)) {
58+
return;
59+
}
6060
$bevent = new BreakCoreEvent($player, BreakCoreEvent::BLUE);
6161
$bevent->call();
6262
if (!$bevent->isCancelled()) {

src/VectorNetworkProject/TheMix/event/game/TheBreakCoreEvent.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class TheBreakCoreEvent implements Listener
2222
{
2323
/**
2424
* @param BreakCoreEvent $event
25+
*
2526
* @throws \ErrorException
2627
*/
2728
public function event(BreakCoreEvent $event)
@@ -30,6 +31,7 @@ public function event(BreakCoreEvent $event)
3031
if (RedTeamManager::getListCount() < 1 || BlueTeamManager::getListCount() < 1) {
3132
$player->sendMessage(TextFormat::RED.'プレイヤーが足りないのでコアを破壊する事が出来ません。');
3233
$event->setCancelled();
34+
3335
return;
3436
}
3537
switch ($event->getTeam()) {
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
/**
3+
* Copyright (c) 2018 VectorNetworkProject. All rights reserved. MIT license.
4+
*
5+
* GitHub: https://github.com/VectorNetworkProject/TheMix
6+
* Website: https://www.vector-network.tk
7+
*/
8+
9+
namespace VectorNetworkProject\TheMix\game\corepvp;
10+
11+
use VectorNetworkProject\TheMix\game\event\game\PhaseUpdateEvent;
12+
13+
class PhaseManager
14+
{
15+
/** @var int */
16+
public const MAX_PHASE = 5;
17+
18+
/** @var int $phase */
19+
private static $phase = 1;
20+
21+
/**
22+
* @throws \ReflectionException
23+
*/
24+
public static function addPhase(): void
25+
{
26+
$event = new PhaseUpdateEvent(self::getPhase() + 1);
27+
$event->call();
28+
if (!$event->isCancelled()) {
29+
self::$phase++;
30+
}
31+
}
32+
33+
/**
34+
* @return int
35+
*/
36+
public static function getPhase(): int
37+
{
38+
return self::$phase;
39+
}
40+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
/**
3+
* Copyright (c) 2018 VectorNetworkProject. All rights reserved. MIT license.
4+
*
5+
* GitHub: https://github.com/VectorNetworkProject/TheMix
6+
* Website: https://www.vector-network.tk
7+
*/
8+
9+
namespace VectorNetworkProject\TheMix\game\event\game;
10+
11+
use pocketmine\event\Cancellable;
12+
use pocketmine\event\Event;
13+
14+
class PhaseTimeUpdateEvent extends Event implements Cancellable
15+
{
16+
/** @var int $time */
17+
private $time;
18+
/** @var int $phase */
19+
private $phase;
20+
21+
/**
22+
* PhaseTimeUpdateEvent constructor.
23+
*
24+
* @param int $time
25+
* @param int $phase
26+
*/
27+
public function __construct(int $time, int $phase)
28+
{
29+
$this->time = $time;
30+
$this->phase = $phase;
31+
}
32+
33+
/**
34+
* @return int
35+
*/
36+
public function getTime(): int
37+
{
38+
return $this->time;
39+
}
40+
41+
/**
42+
* @return int
43+
*/
44+
public function getPhase(): int
45+
{
46+
return $this->phase;
47+
}
48+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
/**
3+
* Copyright (c) 2018 VectorNetworkProject. All rights reserved. MIT license.
4+
*
5+
* GitHub: https://github.com/VectorNetworkProject/TheMix
6+
* Website: https://www.vector-network.tk
7+
*/
8+
9+
namespace VectorNetworkProject\TheMix\game\event\game;
10+
11+
use pocketmine\event\Cancellable;
12+
use pocketmine\event\Event;
13+
14+
class PhaseUpdateEvent extends Event implements Cancellable
15+
{
16+
/** @var int $phase */
17+
private $phase;
18+
19+
public function __construct(int $phase)
20+
{
21+
$this->phase = $phase;
22+
}
23+
24+
/**
25+
* @return int
26+
*/
27+
public function getPhase(): int
28+
{
29+
return $this->phase;
30+
}
31+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<?php
2+
/**
3+
* Copyright (c) 2018 VectorNetworkProject. All rights reserved. MIT license.
4+
*
5+
* GitHub: https://github.com/VectorNetworkProject/TheMix
6+
* Website: https://www.vector-network.tk
7+
*/
8+
9+
namespace VectorNetworkProject\TheMix\task;
10+
11+
use pocketmine\scheduler\Task;
12+
use VectorNetworkProject\TheMix\game\corepvp\PhaseManager;
13+
use VectorNetworkProject\TheMix\game\event\game\PhaseTimeUpdateEvent;
14+
15+
class PhaseTask extends Task
16+
{
17+
/** @var int $time */
18+
private $time;
19+
20+
/**
21+
* PhaseTask constructor.
22+
*
23+
* @param int $time
24+
*/
25+
public function __construct(int $time = 600)
26+
{
27+
$this->time = $time;
28+
}
29+
30+
/**
31+
* @param int $currentTick
32+
*
33+
* @throws \ReflectionException
34+
*/
35+
public function onRun(int $currentTick)
36+
{
37+
$event = new PhaseTimeUpdateEvent($this->getTime() - 1, PhaseManager::getPhase());
38+
$event->call();
39+
if (!$event->isCancelled()) {
40+
$this->setTime($this->getTime() - 1);
41+
}
42+
}
43+
44+
/**
45+
* @return int
46+
*/
47+
public function getTime(): int
48+
{
49+
return $this->time;
50+
}
51+
52+
/**
53+
* @param int $time
54+
*/
55+
public function setTime(int $time): void
56+
{
57+
$this->time = $time;
58+
}
59+
}

0 commit comments

Comments
 (0)