protected override Piece initPiece(PieceLoadInfo loadInfo, int x, int y)
        {
            if (_inspectInfos == null)
            {
                _inspectInfos = new Dictionary <int, CoVidPlayerInspectInfo>();
                foreach (var playerInfo in coVidPlayers)
                {
                    _inspectInfos.Add(playerInfo.Id, playerInfo);
                }
            }

            var piece = base.initPiece(loadInfo, x, y);

            CoVidAttribute coVidAttribute = null;

            switch (loadInfo.PieceName)
            {
            case "pawn":
                coVidAttribute = new PawnCoVidAttribute();
                break;

            case "knight":
                coVidAttribute = new KnightCoVidAttribute();
                break;

            case "luke":
                coVidAttribute = new LukeCoVidAttribute();
                break;

            case "bishop":
                coVidAttribute = new BishopCoVidAttribute();
                break;

            case "queen":
                coVidAttribute = new QueenCoVidAttribute();
                break;

            case "king":
                coVidAttribute = new KingCoVidAttribute();
                break;
            }

            if (coVidAttribute != null)
            {
                piece.addAttribute(coVidAttribute);
                var coVidPlayer = _inspectInfos[loadInfo.Player.getId()].Player;
                piece.addAttribute(new StayHomeAttribute(coVidAttribute, coVidPlayer));
            }


            return(piece);
        }
        protected virtual Piece initPiece(PieceLoadInfo loadInfo, int x, int y)
        {
            var obj   = Instantiate(loadInfo.PiecePrefab, canvas, true);
            var piece = obj.GetComponent <PieceBase>();

            piece.initializePiece(loadInfo.Player);
            piece.moveTo(listBoard.getStartScreenPos(), listBoard.getSquareScale(), new BoardVector(x, y), 1);
            obj.GetComponent <Image>().color = loadInfo.Player.PlayerColor;
            loadInfo.Player.setPieceNum(loadInfo.Player.getPieceNum() + 1);

            if (piece.hasAttribute <PawnAttribute>())
            {
                piece.getAttribute <PawnAttribute>().setStartPos(new BoardVector(x, y));
            }

            return(piece);
        }