mirror of
https://github.com/bs-community/blessing-skin-server.git
synced 2025-03-07 15:16:40 +08:00
abstract registering player
This commit is contained in:
parent
a22357d1c6
commit
d0a5191a61
@ -9,9 +9,7 @@ use Option;
|
||||
use App\Models\User;
|
||||
use App\Models\Player;
|
||||
use App\Models\Texture;
|
||||
use App\Models\PlayerModel;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Events\PlayerWasAdded;
|
||||
use App\Exceptions\PrettyPageException;
|
||||
|
||||
class PlayerController extends Controller
|
||||
@ -49,26 +47,19 @@ class PlayerController extends Controller
|
||||
'player_name' => 'required|'.(Option::get('allow_chinese_playername') == "1") ? 'pname_chinese' : 'player_name'
|
||||
]);
|
||||
|
||||
$player_name = $request->input('player_name');
|
||||
$player = new Player(null, $request->input('player_name'));
|
||||
|
||||
if (!PlayerModel::where('player_name', $player_name)->get()->isEmpty())
|
||||
if ($player->is_registered) {
|
||||
return json(trans('user.player.add.repeated'), 6);
|
||||
}
|
||||
|
||||
if ($this->user->getScore() < Option::get('score_per_player'))
|
||||
if ($this->user->getScore() < Option::get('score_per_player')) {
|
||||
return json(trans('user.player.add.lack-score'), 7);
|
||||
}
|
||||
|
||||
$player = new PlayerModel();
|
||||
$player->uid = $this->user->uid;
|
||||
$player->player_name = $player_name;
|
||||
$player->preference = "default";
|
||||
$player->last_modified = Utils::getTimeFormatted();
|
||||
$player->save();
|
||||
$player->register($this->user);
|
||||
|
||||
Event::fire(new PlayerWasAdded($player));
|
||||
|
||||
$this->user->setScore(Option::get('score_per_player'), 'minus');
|
||||
|
||||
return json(trans('user.player.add.success', ['name' => $player_name]), 0);
|
||||
return json(trans('user.player.add.success', ['name' => $request->input('player_name')]), 0);
|
||||
}
|
||||
|
||||
public function delete(Request $request)
|
||||
@ -78,7 +69,7 @@ class PlayerController extends Controller
|
||||
if ($this->player->delete()) {
|
||||
$this->user->setScore(Option::get('score_per_player'), 'plus');
|
||||
|
||||
return json("trans('user.player.delete.success', ['name' => $player_name])", 0);
|
||||
return json(trans('user.player.delete.success', ['name' => $player_name]), 0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -93,15 +84,17 @@ class PlayerController extends Controller
|
||||
'new_player_name' => 'required|'.(Option::get('allow_chinese_playername') == "1") ? 'pname_chinese' : 'player_name'
|
||||
]);
|
||||
|
||||
$new_player_name = $request->input('new_player_name');
|
||||
$new_name = $request->input('new_player_name');
|
||||
|
||||
if (!PlayerModel::where('player_name', $new_player_name)->get()->isEmpty())
|
||||
if ((new Player(null, $new_name))->is_registered) {
|
||||
return json(trans('user.player.rename.repeated'), 6);
|
||||
}
|
||||
|
||||
$old_player_name = $this->player->player_name;
|
||||
$this->player->rename($new_player_name);
|
||||
$old_name = $this->player->player_name;
|
||||
|
||||
return json(trans('user.player.rename.success', ['old' => $old_player_name, 'new' => $new_player_name]), 0);
|
||||
$this->player->rename($new_name);
|
||||
|
||||
return json(trans('user.player.rename.success', ['old' => $old_name, 'new' => $new_name]), 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -7,7 +7,9 @@ use Event;
|
||||
use Utils;
|
||||
use Storage;
|
||||
use Response;
|
||||
use App\Models\User;
|
||||
use App\Events\GetPlayerJson;
|
||||
use App\Events\PlayerWasAdded;
|
||||
use App\Events\PlayerWasDeleted;
|
||||
use App\Events\PlayerProfileUpdated;
|
||||
use App\Exceptions\PrettyPageException;
|
||||
@ -19,6 +21,8 @@ class Player
|
||||
|
||||
public $is_banned = false;
|
||||
|
||||
public $is_registered = false;
|
||||
|
||||
public $model;
|
||||
|
||||
/**
|
||||
@ -43,21 +47,21 @@ class Player
|
||||
$this->pid = $pid;
|
||||
$this->model = PlayerModel::find($pid);
|
||||
} else {
|
||||
$this->player_name = $player_name;
|
||||
$this->model = PlayerModel::where('player_name', $player_name)->first();
|
||||
}
|
||||
|
||||
if (!$this->model) {
|
||||
abort(404, '角色不存在');
|
||||
} else {
|
||||
if ($this->model) {
|
||||
$this->pid = $this->model->pid;
|
||||
|
||||
$this->player_name = $this->model->player_name;
|
||||
|
||||
$this->owner = new User($this->model->uid);
|
||||
|
||||
$this->is_registered = true;
|
||||
|
||||
$this->is_banned = ($this->owner->getPermission() == "-1");
|
||||
}
|
||||
|
||||
$this->player_name = $this->model->player_name;
|
||||
|
||||
$this->owner = new User($this->model->uid);
|
||||
|
||||
if ($this->owner->getPermission() == "-1")
|
||||
$this->is_banned = true;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -123,8 +127,9 @@ class Player
|
||||
}
|
||||
|
||||
/**
|
||||
* Set preferred model
|
||||
* @param string $type, 'slim' or 'default'
|
||||
* Set preferred model.
|
||||
*
|
||||
* @param string $type 'slim' or 'default'
|
||||
*/
|
||||
public function setPreference($type)
|
||||
{
|
||||
@ -141,6 +146,35 @@ class Player
|
||||
return $this->model['preference'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a new player.
|
||||
*
|
||||
* @param User $owner Owner of the player.
|
||||
* @return void
|
||||
*/
|
||||
public function register(User $owner)
|
||||
{
|
||||
$this->owner = $owner;
|
||||
|
||||
$player = new PlayerModel();
|
||||
|
||||
$player->uid = $this->owner->uid;
|
||||
$player->player_name = $this->player_name;
|
||||
$player->preference = "default";
|
||||
$player->last_modified = Utils::getTimeFormatted();
|
||||
$player->save();
|
||||
|
||||
Event::fire(new PlayerWasAdded($player));
|
||||
|
||||
$this->owner->setScore(option('score_per_player'), 'minus');
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename the player.
|
||||
*
|
||||
* @param string $new_name
|
||||
* @return mixed
|
||||
*/
|
||||
public function rename($new_name)
|
||||
{
|
||||
$this->model->update([
|
||||
@ -153,6 +187,11 @@ class Player
|
||||
return Event::fire(new PlayerProfileUpdated($this));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a new owner for the player.
|
||||
*
|
||||
* @param int $uid
|
||||
*/
|
||||
public function setOwner($uid) {
|
||||
$this->model->update(['uid' => $uid]);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user