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

Commit 5241a94

Browse files
committed
Merge branch 'release/v0.0.4'
2 parents e117819 + 512902d commit 5241a94

File tree

12 files changed

+397
-24
lines changed

12 files changed

+397
-24
lines changed

.styleci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
preset: psr2
1+
preset: recommended
22
risky: false

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.3
9+
version: 0.0.4
1010
authors:
1111
- InkoHX
1212
- MazaiCrafty

src/VectorNetworkProject/TheMix/command/PingCommand.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class PingCommand extends PluginCommand
1818
{
1919
/**
2020
* PingCommand constructor.
21+
*
2122
* @param Plugin $owner
2223
*/
2324
public function __construct(Plugin $owner)
@@ -29,8 +30,8 @@ public function __construct(Plugin $owner)
2930

3031
/**
3132
* @param CommandSender $sender
32-
* @param string $commandLabel
33-
* @param array $args
33+
* @param string $commandLabel
34+
* @param array $args
3435
*
3536
* @return bool
3637
*/

src/VectorNetworkProject/TheMix/command/TpsCommand.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class TpsCommand extends PluginCommand
1818
{
1919
/**
2020
* TpsCommand constructor.
21+
*
2122
* @param Plugin $owner
2223
*/
2324
public function __construct(Plugin $owner)
@@ -29,8 +30,8 @@ public function __construct(Plugin $owner)
2930

3031
/**
3132
* @param CommandSender $sender
32-
* @param string $commandLabel
33-
* @param array $args
33+
* @param string $commandLabel
34+
* @param array $args
3435
*
3536
* @return bool
3637
*/

src/VectorNetworkProject/TheMix/event/ThePlayerLoginEvent.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@
1010

1111
use pocketmine\event\Listener;
1212
use pocketmine\event\player\PlayerLoginEvent;
13-
use VectorNetworkProject\TheMix\provider\DataFile;
13+
use VectorNetworkProject\TheMix\game\level\Level;
1414
use VectorNetworkProject\TheMix\provider\JSON;
1515

1616
class ThePlayerLoginEvent implements Listener
1717
{
1818
public function event(PlayerLoginEvent $event)
1919
{
2020
$player = $event->getPlayer();
21-
$db = new JSON($player->getXuid(), DataFile::PLAYER_LEVEL);
22-
$db->init();
21+
$db = new JSON($player->getXuid(), Level::FILE_NAME);
22+
$db->init(Level::init());
2323
}
2424
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
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\event\game;
10+
11+
use pocketmine\event\Cancellable;
12+
use pocketmine\event\player\PlayerEvent;
13+
use pocketmine\Player;
14+
15+
class PlayerLevelChangeEvent extends PlayerEvent implements Cancellable
16+
{
17+
/* @var int $newLevel*/
18+
private $newLevel;
19+
20+
/* @var int $oldLevel */
21+
private $oldLevel;
22+
23+
/* @var bool $complete */
24+
private $complete;
25+
26+
/**
27+
* PlayerLevelChangeEvent constructor.
28+
*
29+
* @param Player $player
30+
* @param int $oldLevel
31+
* @param int $newLevel
32+
* @param bool $complete
33+
*/
34+
public function __construct(Player $player, int $oldLevel, int $newLevel, bool $complete = false)
35+
{
36+
$this->player = $player;
37+
$this->newLevel = $newLevel;
38+
$this->oldLevel = $oldLevel;
39+
$this->complete = $complete;
40+
}
41+
42+
/**
43+
* 新しいレベルを返します。
44+
*
45+
* @return int
46+
*/
47+
public function getNewLevel(): int
48+
{
49+
return $this->newLevel;
50+
}
51+
52+
/**
53+
* 古いレベルを返します。
54+
*
55+
* @return int
56+
*/
57+
public function getOldLevel(): int
58+
{
59+
return $this->oldLevel;
60+
}
61+
62+
/**
63+
* レベルが120かどうかを返します。
64+
*
65+
* @return bool
66+
*/
67+
public function isComplete(): bool
68+
{
69+
return $this->complete;
70+
}
71+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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\event\game;
10+
11+
use pocketmine\event\Cancellable;
12+
use pocketmine\event\player\PlayerEvent;
13+
use pocketmine\Player;
14+
15+
class PlayerMaxXpChangeEvent extends PlayerEvent implements Cancellable
16+
{
17+
/* @var int $max */
18+
private $max;
19+
20+
/**
21+
* PlayerMaxXpChangeEvent constructor.
22+
*
23+
* @param Player $player
24+
* @param int $max
25+
*/
26+
public function __construct(Player $player, int $max)
27+
{
28+
$this->player = $player;
29+
$this->max = $max;
30+
}
31+
32+
/**
33+
* MaxXPを返します。
34+
*
35+
* @return int
36+
*/
37+
public function getMaxXP(): int
38+
{
39+
return $this->max;
40+
}
41+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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\event\game;
10+
11+
use pocketmine\event\Cancellable;
12+
use pocketmine\event\player\PlayerEvent;
13+
use pocketmine\Player;
14+
15+
class PlayerXpChangeEvent extends PlayerEvent implements Cancellable
16+
{
17+
/* @var int $xp */
18+
private $xp;
19+
20+
/**
21+
* PlayerXpChangeEvent constructor.
22+
*
23+
* @param Player $player
24+
* @param int $xp
25+
*/
26+
public function __construct(Player $player, int $xp)
27+
{
28+
$this->player = $player;
29+
$this->xp = $xp;
30+
}
31+
32+
/**
33+
* 入手したXPを返します。
34+
*
35+
* @return int
36+
*/
37+
public function getXp(): int
38+
{
39+
return $this->xp;
40+
}
41+
}
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
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\level;
10+
11+
use pocketmine\Player;
12+
use pocketmine\Server;
13+
use VectorNetworkProject\TheMix\event\game\PlayerLevelChangeEvent;
14+
use VectorNetworkProject\TheMix\provider\JSON;
15+
16+
class Level
17+
{
18+
/* @var string */
19+
public const FILE_NAME = 'Level';
20+
21+
/* @var string */
22+
public const LEVEL = 'level';
23+
24+
public static function init(): array
25+
{
26+
return [
27+
'level' => 1,
28+
'xp' => 0,
29+
'max' => 15,
30+
'prestige' => 0,
31+
'complete' => false,
32+
];
33+
}
34+
35+
/**
36+
* プレイヤーのレベルを設定します。
37+
*
38+
* @param Player $player
39+
* @param int $level
40+
*
41+
* @throws \Error
42+
*
43+
* @return void
44+
*/
45+
public static function setLevel(Player $player, int $level): void
46+
{
47+
if (self::CheckLevel($level)) {
48+
throw new \Error('数値は120以下にして下さい。');
49+
}
50+
$event = new PlayerLevelChangeEvent($player, self::getLevel($player), $level, self::isComplete($level));
51+
Server::getInstance()->getPluginManager()->callEvent($event);
52+
if ($event->isCancelled()) {
53+
return;
54+
}
55+
$db = new JSON($player->getXuid(), self::FILE_NAME);
56+
$db->set(self::FILE_NAME, $level);
57+
}
58+
59+
/**
60+
* プレイヤーのレベルを1上げます。
61+
*
62+
* @param Player $player
63+
*
64+
* @return void
65+
*/
66+
public static function addLevel(Player $player): void
67+
{
68+
$level = self::getLevel($player);
69+
if (!$level >= 120) {
70+
return;
71+
}
72+
$event = new PlayerLevelChangeEvent($player, $level, $level + 1, self::isComplete($level + 1));
73+
Server::getInstance()->getPluginManager()->callEvent($event);
74+
if ($event->isCancelled()) {
75+
return;
76+
}
77+
$db = new JSON($player->getXuid(), self::FILE_NAME);
78+
$db->set(self::LEVEL, $level + 1);
79+
}
80+
81+
/**
82+
* プレイヤーのレベルを返します。
83+
*
84+
* @param Player $player
85+
*
86+
* @return int
87+
*/
88+
public static function getLevel(Player $player): int
89+
{
90+
$db = new JSON($player->getXuid(), self::FILE_NAME);
91+
92+
return $db->get(self::LEVEL);
93+
}
94+
95+
/**
96+
* レベルが120か調べる。
97+
*
98+
* @param int $level
99+
*
100+
* @return bool
101+
*/
102+
public static function isComplete(int $level): bool
103+
{
104+
return $level >= 120
105+
? true
106+
: false;
107+
}
108+
109+
/**
110+
* レベルが120を超えていないか調べる。
111+
*
112+
* @param int $level
113+
*
114+
* @return bool
115+
*/
116+
private static function CheckLevel(int $level): bool
117+
{
118+
return $level > 120
119+
? true
120+
: false;
121+
}
122+
}

0 commit comments

Comments
 (0)