コード例 #1
0
        public void DecreasePlayerAlive(string playerID, int count)
        {
            playersAlive += count;
            if (playersAlive <= 0)
            {
                playersAlive = 0;
            }

            // TEST
            PlayerInfoStruct playerInfo = GetPlayerInfoStruct(playerID);

            if (!string.IsNullOrEmpty(playerInfo.playerID))
            {
                Debug.Log("LobbyManager. DecreasePlayerAlive. Found player info id <" + playerID + "> with state of <" + playerInfo.playerState + ">");

                if (playerInfo.playerState != "DEAD")
                {
                }
                else
                {
                }
            }
            else
            {
                Debug.LogError("LobbyManager. DecreasePlayerAlive. Did not find the player info id <" + playerID + ">");
            }
        }
コード例 #2
0
ファイル: ActorLoaderComp.cs プロジェクト: rab000/thappyphone
    public void StartLoad(PlayerInfoStruct info, Listener <string> OnLoadCB)
    {
        _PlayerInfoStruct = info;

        Action <AssetBundle> cb = (bundle) =>
        {
            bodyBundle = bundle;

            var prefabObj = bundle.LoadAsset <GameObject>(_PlayerInfoStruct.BodyModelResID + ".prefab");

            var prefabGo = GameObject.Instantiate(prefabObj) as GameObject;

            prefabGo.transform.SetParent(_ActorRootComp.OffsetTrm, false);

            OnLoadCB?.Invoke(_PlayerInfoStruct.ID);
        };

        Action <string> onError = (error) =>
        {
            LogMgr.E("PlayerLoaderComp", "StartLoad", "error:" + error, BeShowLog);
        };

        GameEnum.SB1.Append(GameConfig.ResRootPathStr);
        GameEnum.SB1.Append("/bundle/");
        GameEnum.SB1.Append(info.BodyModelResID);
        GameEnum.SB1.Append(GameEnum.BundleExtName);
        string path = GameEnum.SB1.ToString();

        GameEnum.SB1.Clear();

        LogMgr.I("ActorLoaderComp", "StartLoad", " path:" + path, BeShowLog);

        SimpleResMgr.GetIns().LoadRes(path, cb, onError);
    }
コード例 #3
0
    /// <summary>
    /// 小结算
    /// </summary>
    /// <param name="msg"></param>
    private void OnSettlement(MessageData msg)
    {
        litSemResponse data = msg.Read <litSemResponse>();

        CardsInfoStruct[] playerCardsDatas = MJGameModel.Inst.allPlayersCardsInfoStruct;
        bool isNoWinner = true;//是否是流局

        for (int i = 0; i < playerCardsDatas.Length; i++)
        {
            if (playerCardsDatas[i] != null && playerCardsDatas[i].huList != null && playerCardsDatas[i].huList.Count > 0)
            {
                isNoWinner = false;
                break;
            }
        }
        if (isNoWinner) //流局
        {
            mGameUI.ServerNoWinner();
        }
        #region 小结算数据处理
        MJGameSettlementInfo mSettlData = new MJGameSettlementInfo();
        MJGameModel.Inst.mLitSem   = data;
        mSettlData.isEnd           = true;
        mSettlData.isHu            = !isNoWinner;
        mSettlData.settleContainer = new List <MJGameSettlementPlayerInfo>();
        for (int i = 0; i < data.litSemList.Count; i++)
        {
            MJGameSettlementPlayerInfo oneSettlementPlayerInfo = new MJGameSettlementPlayerInfo();
            int seatID = data.litSemList[i].seatId;
            PlayerInfoStruct onePData = MJGameModel.Inst.mRoomPlayers[seatID];              //玩家信息
            CardsInfoStruct  cdata    = MJGameModel.Inst.allPlayersCardsInfoStruct[seatID]; //牌信息
            oneSettlementPlayerInfo.seatId   = seatID;
            oneSettlementPlayerInfo.userId   = onePData.uId;
            oneSettlementPlayerInfo.nickName = onePData.nickName;
            oneSettlementPlayerInfo.score    = data.litSemList[i].currScore;
            oneSettlementPlayerInfo.headUrl  = onePData.headUrl;
            oneSettlementPlayerInfo.shoupai  = data.litSemList[i].handList;
            oneSettlementPlayerInfo.peng     = cdata.pengList;
            oneSettlementPlayerInfo.gang     = cdata.gangList;
            oneSettlementPlayerInfo.huPai    = cdata.huList;
            oneSettlementPlayerInfo.huOrder  = data.litSemList[i].huOrder;
            oneSettlementPlayerInfo.huDes    = data.litSemList[i].huIntro;
            mSettlData.settleContainer.Add(oneSettlementPlayerInfo);
        }
        #endregion

        MJGameModel.Inst.mSettlData = mSettlData;
        MJGameModel.Inst.mState     = eMJRoomStatus.GAMEOVER;
        MJGameModel.Inst.mStartGameData.roomInfo.roomState = eRoomState.GAMEOVER;//改变房间状态
        SetTimeout.add(1, ChangHandsCardsShow);

        SetTimeout.add(5, ShowSmallSettle);

        //清理离开游戏的玩家
        if (mGameUI != null)
        {
            mGameUI.SetAllPlayerOutLine();
        }
    }
コード例 #4
0
    void HandleIdentity(SocketIOEvent e)
    {
        Debug.Log("handleIdentity");
        Debug.Log(e.data);
        PlayerInfoStruct playerInfo = JsonUtility.FromJson <PlayerInfoStruct>(e.data);

        GameManager.instance.CreateLocalPlayer(playerInfo.id, playerInfo.handle, playerInfo.spawnPoint);
        //io.Emit("getgameinfo");
    }
コード例 #5
0
    private int mSeatId;       //当前玩家的座位号

    public void SetData(PlayerInfoStruct info, int seatid, bool isself = false)
    {
        if (mFaceGrid != null)
        {
            if (isself)
            {
                mFaceGrid.gameObject.SetActive(false);
            }
            else
            {
                mFaceGrid.gameObject.SetActive(true);
            }
        }
        //头像
        Assets.LoadIcon(info.headUrl, (t) => { mIcon.mainTexture = t; });
        //名字
        mName.text = info.nickName;
        //IP
        //mIp.text = info.lastIp;
        //id
        //mId.text = info.userId.ToString();
        //位置
        //mPos.text = info.addr;
        //性别
        //mSex.spriteName = info.userSex == 1 ? "icon_nan" : "icon_nv";
        //座位号
        mSeatId = seatid;
        //房卡
        #region 房卡
        if (isself)//自己才显示
        {
            mCard.transform.parent.gameObject.SetActive(true);
            //mCard.text = info.roomCard.ToString() + "张";
        }
        else
        {
            mCard.transform.parent.gameObject.SetActive(false);
        }
        #endregion
        //距离
        #region 距离            //****************************位置信息没有数据**********************************************//
        //if (isself)//是自己就不显示
        //    mDistance.transform.parent.gameObject.SetActive(false);
        //else
        //{
        //    mDistance.transform.parent.gameObject.SetActive(true);
        //    if (info.distance == -1)
        //        mDistance.text = "未获取到距离";
        //    else if (info.distance < 1000)
        //        mDistance.text = info.distance + "米";
        //    else
        //        mDistance.text = (info.distance / 1000f).ToString("f2") + "千米";
        //}
        #endregion

        mDetailGrid.Reposition();
    }
コード例 #6
0
    /// <summary>
    /// 小结算
    /// </summary>
    /// <param name="msg"></param>
    public void OnSettlement()
    {
        if (mModel.CurRecordDetailData == null)
        {
            return;
        }
        litSemResponse data = mModel.CurRecordDetailData.semData;

        if (data == null)
        {
            return;
        }
        CardsInfoStruct[] playerCardsDatas = MJGameModel.Inst.allPlayersCardsInfoStruct;
        bool isNoWinner = true;//是否是流局

        for (int i = 0; i < playerCardsDatas.Length; i++)
        {
            if (playerCardsDatas[i] != null && playerCardsDatas[i].huList != null && playerCardsDatas[i].huList.Count > 0)
            {
                isNoWinner = false;
                break;
            }
        }
        if (isNoWinner) //流局
        {
            mGameUI.ServerNoWinner();
        }
        #region 小结算数据处理
        MJGameSettlementInfo mSettlData = new MJGameSettlementInfo();

        mSettlData.isEnd           = true;
        mSettlData.isHu            = !isNoWinner;
        mSettlData.settleContainer = new List <MJGameSettlementPlayerInfo>();
        for (int i = 0; i < data.litSemList.Count; i++)
        {
            MJGameSettlementPlayerInfo oneSettlementPlayerInfo = new MJGameSettlementPlayerInfo();
            int seatID = data.litSemList[i].seatId;
            PlayerInfoStruct onePData = MJGameModel.Inst.mRoomPlayers[seatID];              //玩家信息
            CardsInfoStruct  cdata    = MJGameModel.Inst.allPlayersCardsInfoStruct[seatID]; //牌信息
            oneSettlementPlayerInfo.seatId   = seatID;
            oneSettlementPlayerInfo.userId   = onePData.uId;
            oneSettlementPlayerInfo.nickName = onePData.nickName;
            oneSettlementPlayerInfo.score    = data.litSemList[i].currScore;
            oneSettlementPlayerInfo.headUrl  = onePData.headUrl;
            oneSettlementPlayerInfo.shoupai  = data.litSemList[i].handList;
            oneSettlementPlayerInfo.peng     = cdata.pengList;
            oneSettlementPlayerInfo.gang     = cdata.gangList;
            oneSettlementPlayerInfo.huPai    = cdata.huList;
            oneSettlementPlayerInfo.huDes    = data.litSemList[i].huIntro;
            mSettlData.settleContainer.Add(oneSettlementPlayerInfo);
        }
        #endregion

        MJGameModel.Inst.mSettlData = mSettlData;
        mGameUI.GetChaJiaoData(data.flowSemList);
    }
コード例 #7
0
    /// <summary>
    /// 有玩家加入房间
    /// </summary>
    /// <param name="msg"></param>
    private void OnPlayerJoinInRoom(MessageData msg)
    {
        PlayerInfoStruct data = msg.Read <PlayerInfoStruct>();

        MJGameModel.Inst.mRoomPlayers[data.seatId] = data;
        int count = MJGameModel.Inst.totalPlayerCount == 2 ? 4 : MJGameModel.Inst.totalPlayerCount;

        MJGameModel.Inst.mnewSeatToIndex[data.seatId]       = SeatIdToIndex(MJGameModel.Inst.mMySeatId, data.seatId, count);
        MJGameModel.Inst.mSeatToDirectionIndex[data.seatId] = SeatIdToDirectionIndex(MJGameModel.Inst.mMySeatId, data.seatId, MJGameModel.Inst.totalPlayerCount);
        mGameUI.ServerPlayerJoinGame(data);
    }
コード例 #8
0
    /// <summary>
    /// 初始化其他玩家牌
    /// </summary>
    /// <param name="player"></param>
    /// <param name="info"></param>
    /// <param name="oinfo"></param>
    public void InitOtherPlayerCards(MJPlayerBase player, PlayerInfoStruct info, CardsInfoStruct oinfo)
    {
        //手牌
        int cur = oinfo.isHasCurrCard ? 1 : 0;

        InitOnePlayerHandCards(player, null, oinfo.cardNum, cur);
        //打出的牌
        InitOnePlayerCollectCards(player, oinfo);
        InitOnePlayerPengCard(player, oinfo);
        //胡牌
        InitHuCard(player, oinfo);
    }
コード例 #9
0
ファイル: StageScnMgr.cs プロジェクト: rab000/thappyphone
    private BaseCallback LoadRole(PlayerInfoStruct roleInfo)
    {
        BaseCallback cb = new BaseCallback();

        cb.OnStart = () => {
            Listener <string> onloadOver = (id) =>
            {
                LogMgr.I("StageScnMgr", "LoadRole.cb.OnStart.onloadOver", " id:" + id, BeShowLog);
                cb.End();
            };

            TActor.Create(roleInfo, onloadOver);
        };

        return(cb);
    }
コード例 #10
0
ファイル: StagePanel.cs プロジェクト: rab000/thappyphone
    public void TempEnterStageClick()
    {
        //NTODO 这里数据应该列表,列表数据来自server
        StageScnMgr.scnInfo          = new StageScnInfoStruct();
        StageScnMgr.scnInfo.ScnName  = "stage1";
        StageScnMgr.scnInfo.roleList = new List <PlayerInfoStruct>();

        PlayerInfoStruct r1 = new PlayerInfoStruct();

        r1.ID             = "isabella";
        r1.BodyModelResID = "mdl_isabella_stagea_hairb";
        StageScnMgr.scnInfo.roleList.Add(r1);

        PlayerInfoStruct r2 = new PlayerInfoStruct();

        r2.ID             = "katya";
        r2.BodyModelResID = "mdl_katya_stagea";
        StageScnMgr.scnInfo.roleList.Add(r2);

        PlayerInfoStruct r3 = new PlayerInfoStruct();

        r3.ID             = "moxi";
        r3.BodyModelResID = "mdl_moxi_stagea";
        StageScnMgr.scnInfo.roleList.Add(r3);

        PlayerInfoStruct r4 = new PlayerInfoStruct();

        r4.ID             = "rose";
        r4.BodyModelResID = "mdl_rose_stagea";
        StageScnMgr.scnInfo.roleList.Add(r4);

        PlayerInfoStruct r5 = new PlayerInfoStruct();

        r5.ID             = "tamamo";
        r5.BodyModelResID = "mdl_tamamo_stagea";
        StageScnMgr.scnInfo.roleList.Add(r5);

        PlayerInfoStruct r6 = new PlayerInfoStruct();

        r6.ID             = "yueling";
        r6.BodyModelResID = "mdl_yueling_stagea_low_addblendshape_migicacloth_variant";
        StageScnMgr.scnInfo.roleList.Add(r6);

        AppMgr.GetIns().SetState(AppMgr.AppState.loading);

        StageScnMgr.Create();
    }
コード例 #11
0
    /// <summary>
    /// 大结算
    /// </summary>
    /// <param name="msg"></param>
    private void OnSettlementFinal(MessageData msg)
    {
        BigSemResponse            data    = msg.Read <BigSemResponse>();
        MJGameSettlementFinalInfo bigData = new MJGameSettlementFinalInfo();

        #region  大结算 数据处理
        PlayerInfoStruct[] playerDatas = MJGameModel.Inst.mRoomPlayers;
        bigData.isEnd = true;
        float bigWinScore = -1;
        bigData.totalContainr = new List <MJGameSettlementFinalPlayerInfo>();
        for (int i = 0; i < data.bigSemList.Count; i++)
        {
            BigSemStruct singleData = data.bigSemList[i];
            MJGameSettlementFinalPlayerInfo oneBigData = new MJGameSettlementFinalPlayerInfo();
            int index = MJGameModel.Inst.mnewSeatToIndex[singleData.seatId];
            PlayerInfoStruct onePData = playerDatas[singleData.seatId];

            oneBigData.seatId   = singleData.seatId;
            oneBigData.userId   = onePData.uId;
            oneBigData.headUrl  = onePData.headUrl;
            oneBigData.nickName = onePData.nickName;

            oneBigData.score = singleData.score;
            if (oneBigData.score > bigWinScore)
            {
                bigWinScore = singleData.score;
            }
            oneBigData.winCount = singleData.winCount;
            bigData.totalContainr.Add(oneBigData);
        }
        for (int i = 0; i < bigData.totalContainr.Count; i++)
        {
            if (bigData.totalContainr[i].score == bigWinScore)
            {
                bigData.totalContainr[i].isBigwiner = true;
            }
            else
            {
                bigData.totalContainr[i].isBigwiner = false;
            }
        }
        #endregion
        mModel.mFinalSettlementInfo = bigData;
    }
コード例 #12
0
 /// <summary>
 /// 换3张状态
 /// </summary>
 public void ChangeThreeUI(MJInstructionsProto data)
 {
     for (int i = 0; i < MJGameModel.Inst.mRoomPlayers.Length; i++)
     {
         PlayerInfoStruct item = MJGameModel.Inst.mRoomPlayers[i];
         if (item != null)
         {
             if (item.seatId == MJGameModel.Inst.mMySeatId)
             {
                 mMJChangeThree.IntoThreeWidget(true);
             }
             else
             {
                 mAllPlayer[MJGameModel.Inst.mnewSeatToIndex[item.seatId]].SetChangeStateShow(true);
             }
         }
     }
     InitChaneThreeHandCards(mAllPlayer[MJGameModel.Inst.mnewSeatToIndex[MJGameModel.Inst.mMySeatId]], data.optList[0].cards);
 }
コード例 #13
0
    /// <summary>
    /// 初始化或刷新自己的牌
    /// </summary>
    /// <param name="player"></param>
    /// <param name="info"></param>
    /// <param name="myinfo"></param>
    public void InitSelfPlayerCards(MJPlayerBase player, PlayerInfoStruct info, CardsInfoStruct myinfo, MJoptInfoData opt = null)
    {
        //手牌

        SQDebug.Log(myinfo.currCard);
        InitOnePlayerHandCards(player, myinfo.handList, 0, myinfo.currCard);
        //打出的牌
        InitOnePlayerCollectCards(player, myinfo);
        //碰的牌
        InitOnePlayerPengCard(player, myinfo);
        //胡牌
        if (opt != null)
        {
            bool zimo = false;
            if (opt.huType != null)
            {
                for (int i = 0; i < opt.huType.Length; i++)
                {
                    if (opt.huType[i] == (int)eHuType.ZIMO)
                    {
                        zimo = true;
                    }
                }
            }
            if (zimo)
            {
                InitHuCard(player, myinfo, (int)eHuType.ZIMO);
            }
            else
            {
                InitHuCard(player, myinfo);
            }
        }
        else
        {
            //胡牌
            InitHuCard(player, myinfo);
        }
    }
コード例 #14
0
    private PlayerInfoStruct mRoomPlayerInfo; //玩家数据

    /// <summary>
    /// 设置玩家头像 数据
    /// </summary>
    public void SetPlayerIcon(PlayerInfoStruct info)
    {
        mRoomPlayerInfo = info;
        if (info == null) //没有这个玩家
        {
            mName.text        = "";
            mPoint.text       = "";
            mIcon.mainTexture = null;
            mPreObj.SetActive(false);
        }
        else
        {
            mHeadRoot.SetActive(true);
            //mName.text = GameUtils.GetClampText(info.nickName, mName);
            mName.text  = info.nickName;
            mPoint.text = info.gold.ToString("#0.00");
            Assets.LoadIcon(info.headUrl, (t) =>
            {
                mIcon.mainTexture = t;
            });
        }
    }
コード例 #15
0
ファイル: TActor.cs プロジェクト: rab000/thappyphone
    //public static event Listener PlayerLoadoverEvent;

    public static TActor Create(PlayerInfoStruct info, Listener <string> OnLoadModelOver)
    {
        NLog.LogMgr.I("TActor", "Create", " 创建角色:" + info.ID, true);

        var playerRootGo = GameObject.Instantiate(Resources.Load("Prefabs/Spr/player")) as GameObject;

        playerRootGo.name = "player";

        TActor _player = playerRootGo.AddComponent <TActor>();

        _player.ID = info.ID;

        _player._ActorRootComp.RootTrm = playerRootGo.transform;

        _player._ActorRootComp.OffsetTrm = playerRootGo.transform.Find("offset");

        _player.LoadModel(info, OnLoadModelOver);

        Messenger.Broadcast <string, AbsSpr>(GameEvent.create_spr, _player.ID, _player);

        return(_player);
    }
コード例 #16
0
 /// <summary>
 /// 准备
 /// </summary>
 /// <param name="info"></param>
 private void InitReady(StartGameRespone info)
 {
     if (info.roomInfo.roomState == eRoomState.READY || info.roomInfo.roomState == eRoomState.GAMEOVER)//在准备阶段或是结束阶段
     {
         for (int i = 0; i < info.roomInfo.playerList.Count; i++)
         {
             PlayerInfoStruct item = info.roomInfo.playerList[i];
             if (item.seatId == MJGameModel.Inst.mMySeatId)//自己
             {
             }
             mAllPlayer[MJGameModel.Inst.mnewSeatToIndex[item.seatId]].SetReady(item.isReady);
         }
     }
     else
     {
         //全部不显示准备
         for (int i = 0; i < info.roomInfo.playerList.Count; i++)
         {
             PlayerInfoStruct item = info.roomInfo.playerList[i];
             mAllPlayer[MJGameModel.Inst.mnewSeatToIndex[item.seatId]].SetReady(false);
         }
     }
 }
コード例 #17
0
 /*******************************************************************************************************/
 public void SetIcon(PlayerInfoStruct info)
 {
     mHead.SetPlayerIcon(info);
 }
コード例 #18
0
 /// <summary>
 /// 玩家在线状态
 /// </summary>
 /// <param name="player"></param>
 /// <param name="data"></param>
 private void InitOnePlayerOnlineState(MJPlayerBase player, PlayerInfoStruct data)
 {
     player.SetOffLine((eMJOnlineState)data.onLineType);
 }
コード例 #19
0
 /// <summary>
 /// 玩家头像加载
 /// </summary>
 /// <param name="player"></param>
 /// <param name="info"></param>
 public void InitOnePlayerIcon(MJPlayerBase player, PlayerInfoStruct info)
 {
     player.SetIcon(info);
 }
コード例 #20
0
ファイル: TActor.cs プロジェクト: rab000/thappyphone
 public void LoadModel(PlayerInfoStruct info, Listener <string> cb)
 {
     _ActorLoaderComp.StartLoad(info, cb);
 }