Some game stuff I don't know why this no work!
Signed-off-by: Aaron Brock <TheMineBench@gmail.com>
This commit is contained in:
parent
e3b0ee9ae3
commit
7d55221515
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Exerosis
|
||||
* Date: 6/30/2015
|
||||
* Time: 1:35 PM
|
||||
*/
|
||||
namespace mineplex\plugin\bench\arenas;
|
||||
|
||||
use pocketmine\plugin\Plugin;
|
||||
use pocketmine\Player;
|
||||
|
||||
interface Arena
|
||||
{
|
||||
public function getCurrentGame();
|
||||
|
||||
/**
|
||||
* @return Player[]
|
||||
*/
|
||||
public function getPlayers();
|
||||
|
||||
/**
|
||||
* @return Plugin
|
||||
*/
|
||||
public function getPlugin();
|
||||
|
||||
public function endGame();
|
||||
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Exerosis
|
||||
* Date: 6/30/2015
|
||||
* Time: 9:06 PM
|
||||
*/
|
||||
namespace mineplex\plugin\bench\arenas;
|
||||
|
||||
use pocketmine\event\Event;
|
||||
|
||||
class ArenaEvent extends Event
|
||||
{
|
||||
private $arena;
|
||||
|
||||
public function __construct(Arena $arena)
|
||||
{
|
||||
$this->arena = $arena;
|
||||
}
|
||||
|
||||
public function getArena()
|
||||
{
|
||||
return $this->arena;
|
||||
}
|
||||
}
|
@ -0,0 +1,110 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Bench
|
||||
* Date: 6/30/2015
|
||||
* Time: 1:37 PM
|
||||
*/
|
||||
namespace mineplex\plugin\bench\arenas;
|
||||
|
||||
use mineplex\plugin\bench\arenas\events\ArenaEndEvent;
|
||||
use pocketmine\event\Listener;
|
||||
use pocketmine\plugin\Plugin;
|
||||
use pocketmine\event\player\PlayerJoinEvent;
|
||||
use pocketmine\event\player\PlayerQuitEvent;
|
||||
use pocketmine\Player;
|
||||
use pocketmine\Server;
|
||||
use mineplex\plugin\bench\game\Game;
|
||||
use mineplex\plugin\bench\arenas\events\ArenaCanJoinEvent;
|
||||
use mineplex\plugin\bench\arenas\events\ArenaJoinEvent;
|
||||
use mineplex\plugin\bench\arenas\events\ArenaQuitEvent;
|
||||
|
||||
class SingleGameArena implements Arena, Listener {
|
||||
//I really have no idea if there is a better way to store players... but this is what I'm using for now.
|
||||
|
||||
/** @var Player[] */
|
||||
private $players = array();
|
||||
|
||||
private $game;
|
||||
private $plugin;
|
||||
|
||||
public function __construct(Plugin $plugin, Game $game)
|
||||
{
|
||||
print 'SimpleGameArena Created!';
|
||||
Server::getInstance()->getPluginManager()->registerEvents($this, $plugin);
|
||||
$this->game = $game;
|
||||
$this->plugin = $plugin;
|
||||
$this->getCurrentGame()->start($this);
|
||||
}
|
||||
|
||||
public function canJoin(Player $player)
|
||||
{
|
||||
$event = new ArenaCanJoinEvent($this, $player);
|
||||
$this->plugin->getServer()->getPluginManager()->callEvent($event);
|
||||
return !$event->isCancelled();
|
||||
}
|
||||
|
||||
public function addPlayer(Player $player)
|
||||
{
|
||||
$this->plugin->getServer()->getPluginManager()->callEvent(new ArenaJoinEvent($this, $player));
|
||||
array_push($this->players, $player);
|
||||
}
|
||||
|
||||
public function removePlayer(Player $player)
|
||||
{
|
||||
|
||||
if(($key = array_search($player, $this->players, true)) !== FALSE) {
|
||||
unset($this->players[$key]);
|
||||
}
|
||||
Server::getInstance()->broadcastMessage("Calling ArenaQuitEvent");
|
||||
$this->plugin->getServer()->getPluginManager()->callEvent(new ArenaQuitEvent($this, $player));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public function onJoin(PlayerJoinEvent $event)
|
||||
{
|
||||
if ($this->canJoin($event->getPlayer()))
|
||||
{
|
||||
$this->addPlayer($event->getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
public function onQuit(PlayerQuitEvent $event)
|
||||
{
|
||||
$this->removePlayer($event->getPlayer());
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function getPlayers()
|
||||
{
|
||||
return $this->players;
|
||||
}
|
||||
|
||||
public function getCurrentGame()
|
||||
{
|
||||
return $this->game;
|
||||
}
|
||||
|
||||
public function getPlugin()
|
||||
{
|
||||
return $this->plugin;
|
||||
}
|
||||
|
||||
public function endGame()
|
||||
{
|
||||
Server::getInstance()->getPluginManager()->callEvent(new ArenaEndEvent($this));
|
||||
Server::getInstance()->broadcastMessage("MooCount: ".(string)count($this->players));
|
||||
|
||||
foreach ($this->players as $player)
|
||||
{
|
||||
Server::getInstance()->broadcastMessage((string)$player->getName());
|
||||
$player->kick('Game Over...');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Exerosis
|
||||
* Date: 6/30/2015
|
||||
* Time: 9:22 PM
|
||||
*/
|
||||
namespace mineplex\plugin\bench\arenas\events;
|
||||
|
||||
use pocketmine\event\Cancellable;
|
||||
use pocketmine\Player;
|
||||
use mineplex\plugin\bench\arenas\ArenaEvent;
|
||||
use mineplex\plugin\bench\arenas\Arena;
|
||||
|
||||
class ArenaCanJoinEvent extends ArenaEvent implements Cancellable {
|
||||
public static $handlerList = null;
|
||||
|
||||
private $player;
|
||||
|
||||
public function __construct(Arena $arena, Player $player)
|
||||
{
|
||||
parent::__construct($arena);
|
||||
$this->player = $player;
|
||||
}
|
||||
|
||||
public function getPlayer()
|
||||
{
|
||||
return $this->player;
|
||||
}
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Exerosis
|
||||
* Date: 6/30/2015
|
||||
* Time: 10:12 PM
|
||||
*/
|
||||
namespace mineplex\plugin\bench\arenas\events;
|
||||
|
||||
use mineplex\plugin\bench\arenas\ArenaEvent;
|
||||
use mineplex\plugin\bench\arenas\Arena;
|
||||
|
||||
|
||||
class ArenaEndEvent extends ArenaEvent{
|
||||
public static $handlerList = null;
|
||||
|
||||
public function __construct(Arena $arena)
|
||||
{
|
||||
parent::__construct($arena);
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Exerosis
|
||||
* Date: 6/30/2015
|
||||
* Time: 9:22 PM
|
||||
*/
|
||||
namespace mineplex\plugin\bench\arenas\events;
|
||||
|
||||
use pocketmine\Player;
|
||||
|
||||
use mineplex\plugin\bench\arenas\ArenaEvent;
|
||||
|
||||
use mineplex\plugin\bench\arenas\Arena;
|
||||
|
||||
class ArenaJoinEvent extends ArenaEvent {
|
||||
public static $handlerList = null;
|
||||
|
||||
private $player;
|
||||
|
||||
public function __construct(Arena $arena, Player $player)
|
||||
{
|
||||
parent::__construct($arena);
|
||||
$this->player = $player;
|
||||
}
|
||||
|
||||
public function getPlayer()
|
||||
{
|
||||
return $this->player;
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Exerosis
|
||||
* Date: 6/30/2015
|
||||
* Time: 9:22 PM
|
||||
*/
|
||||
|
||||
namespace mineplex\plugin\bench\arenas\events;
|
||||
|
||||
use pocketmine\Player;
|
||||
use mineplex\plugin\bench\arenas\ArenaEvent;
|
||||
use mineplex\plugin\bench\arenas\Arena;
|
||||
|
||||
class ArenaQuitEvent extends ArenaEvent {
|
||||
public static $handlerList = null;
|
||||
|
||||
private $player;
|
||||
|
||||
public function __construct(Arena $arena, Player $player)
|
||||
{
|
||||
parent::__construct($arena);
|
||||
$this->player = $player;
|
||||
}
|
||||
|
||||
public function getPlayer()
|
||||
{
|
||||
return $this->player;
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Exerosis
|
||||
* Date: 6/30/2015
|
||||
* Time: 9:04 PM
|
||||
*/
|
||||
namespace mineplex\plugin\bench\game;
|
||||
|
||||
use mineplex\plugin\bench\arenas\Arena;
|
||||
|
||||
interface Game {
|
||||
public function start(Arena $arena);
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Exerosis
|
||||
* Date: 6/30/2015
|
||||
* Time: 9:18 PM
|
||||
*/
|
||||
namespace mineplex\plugin\bench\game\games\pvp;
|
||||
|
||||
use pocketmine\event\Listener;
|
||||
use mineplex\plugin\bench\game\Game;
|
||||
use mineplex\plugin\bench\arenas\Arena;
|
||||
|
||||
class Pvp implements Game, Listener {
|
||||
|
||||
public function start(Arena $arena)
|
||||
{
|
||||
new PvpComponent($arena);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,89 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Exerosis
|
||||
* Date: 6/30/2015
|
||||
* Time: 10:15 PM
|
||||
*/
|
||||
|
||||
namespace mineplex\plugin\bench\game\games\pvp;
|
||||
|
||||
use pocketmine\event\Listener;
|
||||
use pocketmine\Server;
|
||||
use pocketmine\event\HandlerList;
|
||||
use pocketmine\event\player\PlayerDeathEvent;
|
||||
use mineplex\plugin\bench\arenas\events\ArenaQuitEvent;
|
||||
use mineplex\plugin\bench\arenas\events\ArenaJoinEvent;
|
||||
use mineplex\plugin\bench\arenas\events\ArenaEndEvent;
|
||||
use mineplex\plugin\bench\arenas\Arena;
|
||||
|
||||
|
||||
|
||||
class PvpComponent implements Listener {
|
||||
|
||||
private $arena;
|
||||
|
||||
public function __construct(Arena $arena)
|
||||
{
|
||||
Server::getInstance()->getPluginManager()->registerEvents($this, $arena->getPlugin());
|
||||
$this->arena = $arena;
|
||||
}
|
||||
|
||||
public function onJoin(ArenaJoinEvent $event)
|
||||
{
|
||||
|
||||
if ($event->getArena() !== $this->arena)
|
||||
return;
|
||||
$event->getPlayer()->sendMessage("Welcome to the arena");
|
||||
|
||||
|
||||
$players = $this->arena->getPlayers();
|
||||
|
||||
array_push($players, $event->getPlayer());
|
||||
Server::getInstance()->broadcastMessage("JoinCount: ".(string)count($players));
|
||||
if (count($this->arena->getPlayers()) >= 2)
|
||||
{
|
||||
foreach ($this->arena->getPlayers() as $player)
|
||||
{
|
||||
$player->sendPopup("Game started! Try to kill everyone else.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function onDeath(PlayerDeathEvent $event)
|
||||
{
|
||||
if (in_array($event->getEntity(), $this->arena->getPlayers()))
|
||||
$event->getEntity()->kick('You done got yourself keeled!');
|
||||
|
||||
}
|
||||
|
||||
public function onQuit(ArenaQuitEvent $event)
|
||||
{
|
||||
if ($event->getArena() !== $this->arena)
|
||||
return;
|
||||
|
||||
Server::getInstance()->broadcastMessage(" has quit.");
|
||||
$this->checkEnd();
|
||||
}
|
||||
|
||||
public function onEnd(ArenaEndEvent $event)
|
||||
{
|
||||
if ($event->getArena() !== $this->arena)
|
||||
return;
|
||||
Server::getInstance()->broadcastMessage("Unregistered!");
|
||||
HandlerList::unregisterAll($this);
|
||||
}
|
||||
|
||||
public function checkEnd()
|
||||
{
|
||||
Server::getInstance()->broadcastMessage("Count: ".(string)(count($this->arena->getPlayers()) <= 1) ? 'true' : 'false');
|
||||
|
||||
if (count($this->arena->getPlayers()) <= 1)
|
||||
{
|
||||
Server::getInstance()->broadcastMessage('game ending...');
|
||||
$this->arena->endGame();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user