/*
* bawo.zone - <a href="https://bawo.zone">https://bawo.zone</a>
* <a href="https://github.com/fumba/bawo.zone">https://github.com/fumba/bawo.zone</a>
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import PlayerSide from "./PlayerSide";
import AppConstants from "./AppConstants";
import PlayerBoardHoles from "./PlayerBoardHoles";
import Board from "./Board";
import PlayerUI from "../ui_entities/PlayerUI";
import { isEmpty } from "lodash";
/**
* <p>
* {@link Player} represents a bawo game player
* </p>
*/
class Player {
//player can take up either TOP or BOTTOM side of the board
public side: PlayerSide;
//number of seeds that the player is holding
public numSeedsInHand: number;
// keeps track if the player captured on the previous move
public capturedOnPrevMove: boolean;
// all the board holes belonging to player
public boardHoles: PlayerBoardHoles;
// ui player
public ui: PlayerUI;
/**
* constructor
*
* @param {PlayerSide} side the side on which the player is on the board
* @param {Board} board the board on which the player is
*/
constructor(side: PlayerSide, board?: Board) {
this.side = side;
this.numSeedsInHand = 0;
this.capturedOnPrevMove = false;
if (!isEmpty(board)) {
if (board.isInGraphicsMode()) {
this.ui = board.me.pool.pull(AppConstants.PLAYER_UI, this);
board.ui.addChild(this.ui);
}
}
}
/**
* Checks to see if the current player is positioned on the top side of the
* board.
*
* @returns {boolean} true if the player is on the top side.
*/
public isOnTopSide(): boolean {
return this.side == PlayerSide.Top;
}
public toString(): string {
return `PLAYER[ side: ${this.side}, hand-seeds: ${this.numSeedsInHand}, captured-on-prev-move?: ${this.capturedOnPrevMove}]`;
}
}
export default Player;
Source