Skip to content
This repository was archived by the owner on Feb 8, 2019. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,8 @@

namespace VectorNetworkProject\TheMix\event\block;

use InkoHX\GoldLibrary\GoldAPI;
use InkoHX\LeveLibrary\LevelAPI;
use pocketmine\event\block\BlockBreakEvent;
use pocketmine\event\Listener;
use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
use pocketmine\Server;
use VectorNetworkProject\TheMix\event\game\TheEndGameEvent;
use VectorNetworkProject\TheMix\game\corepvp\blue\BlueCoreManager;
Expand All @@ -21,7 +18,6 @@
use VectorNetworkProject\TheMix\game\corepvp\red\RedTeamManager;
use VectorNetworkProject\TheMix\game\DefaultConfig;
use VectorNetworkProject\TheMix\game\event\game\BreakCoreEvent;
use VectorNetworkProject\TheMix\lib\sound\LevelSounds;

class TheBlockBreakEvent implements Listener
{
Expand All @@ -48,15 +44,19 @@ public function event(BlockBreakEvent $event)
if (!DefaultConfig::isDev()) {
if (RedCoreManager::isCore($block)) {
$event->setCancelled();
if (RedTeamManager::isJoined($player)) return;
if (RedTeamManager::isJoined($player)) {
return;
}
$revent = new BreakCoreEvent($player, BreakCoreEvent::RED);
$revent->call();
if (!$revent->isCancelled()) {
RedCoreManager::reduceHP($revent->getDamage(), $player);
}
} elseif (BlueCoreManager::isCore($block)) {
$event->setCancelled();
if (BlueTeamManager::isJoined($player)) return;
if (BlueTeamManager::isJoined($player)) {
return;
}
$bevent = new BreakCoreEvent($player, BreakCoreEvent::BLUE);
$bevent->call();
if (!$bevent->isCancelled()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ class TheBreakCoreEvent implements Listener
{
/**
* @param BreakCoreEvent $event
*
* @throws \ErrorException
*/
public function event(BreakCoreEvent $event)
Expand All @@ -30,6 +31,7 @@ public function event(BreakCoreEvent $event)
if (RedTeamManager::getListCount() < 1 || BlueTeamManager::getListCount() < 1) {
$player->sendMessage(TextFormat::RED.'プレイヤーが足りないのでコアを破壊する事が出来ません。');
$event->setCancelled();

return;
}
switch ($event->getTeam()) {
Expand Down
40 changes: 40 additions & 0 deletions src/VectorNetworkProject/TheMix/game/corepvp/PhaseManager.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?php
/**
* Copyright (c) 2018 VectorNetworkProject. All rights reserved. MIT license.
*
* GitHub: https://github.com/VectorNetworkProject/TheMix
* Website: https://www.vector-network.tk
*/

namespace VectorNetworkProject\TheMix\game\corepvp;

use VectorNetworkProject\TheMix\game\event\game\PhaseUpdateEvent;

class PhaseManager
{
/** @var int */
public const MAX_PHASE = 5;

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

/**
* @throws \ReflectionException
*/
public static function addPhase(): void
{
$event = new PhaseUpdateEvent(self::getPhase() + 1);
$event->call();
if (!$event->isCancelled()) {
self::$phase++;
}
}

/**
* @return int
*/
public static function getPhase(): int
{
return self::$phase;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<?php
/**
* Copyright (c) 2018 VectorNetworkProject. All rights reserved. MIT license.
*
* GitHub: https://github.com/VectorNetworkProject/TheMix
* Website: https://www.vector-network.tk
*/

namespace VectorNetworkProject\TheMix\game\event\game;

use pocketmine\event\Cancellable;
use pocketmine\event\Event;

class PhaseTimeUpdateEvent extends Event implements Cancellable
{
/** @var int $time */
private $time;
/** @var int $phase */
private $phase;

/**
* PhaseTimeUpdateEvent constructor.
*
* @param int $time
* @param int $phase
*/
public function __construct(int $time, int $phase)
{
$this->time = $time;
$this->phase = $phase;
}

/**
* @return int
*/
public function getTime(): int
{
return $this->time;
}

/**
* @return int
*/
public function getPhase(): int
{
return $this->phase;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php
/**
* Copyright (c) 2018 VectorNetworkProject. All rights reserved. MIT license.
*
* GitHub: https://github.com/VectorNetworkProject/TheMix
* Website: https://www.vector-network.tk
*/

namespace VectorNetworkProject\TheMix\game\event\game;

use pocketmine\event\Cancellable;
use pocketmine\event\Event;

class PhaseUpdateEvent extends Event implements Cancellable
{
/** @var int $phase */
private $phase;

public function __construct(int $phase)
{
$this->phase = $phase;
}

/**
* @return int
*/
public function getPhase(): int
{
return $this->phase;
}
}
59 changes: 59 additions & 0 deletions src/VectorNetworkProject/TheMix/task/PhaseTask.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<?php
/**
* Copyright (c) 2018 VectorNetworkProject. All rights reserved. MIT license.
*
* GitHub: https://github.com/VectorNetworkProject/TheMix
* Website: https://www.vector-network.tk
*/

namespace VectorNetworkProject\TheMix\task;

use pocketmine\scheduler\Task;
use VectorNetworkProject\TheMix\game\corepvp\PhaseManager;
use VectorNetworkProject\TheMix\game\event\game\PhaseTimeUpdateEvent;

class PhaseTask extends Task
{
/** @var int $time */
private $time;

/**
* PhaseTask constructor.
*
* @param int $time
*/
public function __construct(int $time = 600)
{
$this->time = $time;
}

/**
* @param int $currentTick
*
* @throws \ReflectionException
*/
public function onRun(int $currentTick)
{
$event = new PhaseTimeUpdateEvent($this->getTime() - 1, PhaseManager::getPhase());
$event->call();
if (!$event->isCancelled()) {
$this->setTime($this->getTime() - 1);
}
}

/**
* @return int
*/
public function getTime(): int
{
return $this->time;
}

/**
* @param int $time
*/
public function setTime(int $time): void
{
$this->time = $time;
}
}