Пример #1
0
        public override GameState GetMessage(MjsonMessageAll msgobj)
        {
            if ((msgobj.IsDAHAI()) ||
                (msgobj.IsNONE()))
            {
                getMsgList.Add(msgobj);

                if (getMsgList.Count(e => e.IsDAHAI()) == 1 &&
                    getMsgList.Count(e => e.IsNONE()) == Constants.PLAYER_NUM - 1)
                {
                    var dahaiObj = getMsgList.First(e => e.IsDAHAI());
                    serverController.Dahai(dahaiObj.actor, dahaiObj.pai, dahaiObj.tsumogiri);
                    getMsgList.Dispose();
                    return(new AfterReachDahaiState(this));
                }
                if ((getMsgList.Count == Constants.PLAYER_NUM))
                {
                    serverController.SendErrorToRoomMember(msgobj);
                }
            }
            else
            {
                //errorhandling
                serverController.SendErrorToRoomMember(msgobj);
            }
            return(this);
        }
Пример #2
0
        public override GameState GetMessage(MjsonMessageAll msgobj)
        {

            if ((msgobj.IsDAHAI())
              || (msgobj.IsNONE()))
            {
                getMsgList.Add(msgobj);

                if (getMsgList.Count(e => e.IsDAHAI()) == 1 &&
                    getMsgList.Count(e => e.IsNONE()) == Constants.PLAYER_NUM - 1)
                {
                    var dahaiObj = getMsgList.First(e => e.IsDAHAI());
                    serverController.Dahai(dahaiObj.actor, dahaiObj.pai, dahaiObj.tsumogiri);
                    getMsgList.Dispose();
                    return new AfterReachDahaiState(this);
                }
                if ((getMsgList.Count == Constants.PLAYER_NUM))
                {
                    serverController.SendErrorToRoomMember(msgobj);
                }
            }
            else
            {
                //errorhandling
                serverController.SendErrorToRoomMember(msgobj);
            }
            return this;
        }
Пример #3
0
        public override GameState GetMessage(MjsonMessageAll msgobj)
        {
            if ((msgobj.IsDAHAI()) ||
                (msgobj.IsREACH()) ||
                (msgobj.IsANKAN()) ||
                (msgobj.IsKAKAN()) ||
                (msgobj.IsHORA()) ||
                (msgobj.IsNONE()))
            {
                getMsgList.Add(msgobj);

                if (getMsgList.Count == Constants.PLAYER_NUM)
                {
                    //
                    if (getMsgList.Count(e => e.IsHORA()) >= 1)
                    {
                        var horaObj = GetNearestHoraPlayerMsg(getMsgList);
                        serverController.Hora(horaObj.actor, horaObj.target, horaObj.pai);
                        getMsgList.Dispose();
                        return(new AfterHoraState(this));
                    }

                    //RinshanFlggOff
                    //serverController.ResetRinshanFlag();
                    //serverController.ResetIppatsuFlag();



                    if (getMsgList.Count(e => e.IsDAHAI()) == 1 &&
                        getMsgList.Count(e => e.IsNONE()) == Constants.PLAYER_NUM - 1)
                    {
                        var dahaiObj = getMsgList.Where(e => e.IsDAHAI())
                                       .First();
                        serverController.Dahai(dahaiObj.actor, dahaiObj.pai, dahaiObj.tsumogiri);
                        getMsgList.Dispose();
                        return(new AfterDahaiState(this));
                    }
                    else if (getMsgList.Count(e => e.IsREACH()) == 1 &&
                             getMsgList.Count(e => e.IsNONE()) == Constants.PLAYER_NUM - 1)
                    {
                        var reachObj = getMsgList.First(e => e.IsREACH());
                        serverController.Reach(reachObj.actor);
                        getMsgList.Dispose();
                        return(new AfterReachState(this));
                    }
                    else if (getMsgList.Count(e => e.IsANKAN()) == 1 &&
                             getMsgList.Count(e => e.IsNONE()) == Constants.PLAYER_NUM - 1)
                    {
                        var kanObj = getMsgList.First(e => e.IsREACH());
                        serverController.Ankan(kanObj.actor, kanObj.target, kanObj.pai, kanObj.consumed);
                        getMsgList.Dispose();
                        return(new AfterKanState(this));
                    }
                }
            }
            else
            {
                //error handling
                serverController.SendErrorToRoomMember(msgobj);
            }
            return(this);
        }
Пример #4
0
        public override GameState GetMessage(MjsonMessageAll msgobj)
        {
            
            if ((msgobj.IsDAHAI())
                || (msgobj.IsREACH())
                || (msgobj.IsANKAN())
                || (msgobj.IsKAKAN())
                || (msgobj.IsHORA())
                || (msgobj.IsNONE()))
            {
                getMsgList.Add(msgobj);
                
                if (getMsgList.Count == Constants.PLAYER_NUM)
                {

                    //
                    if (getMsgList.Count(e => e.IsHORA()) >= 1 )
                    {
                        var horaObj = GetNearestHoraPlayerMsg(getMsgList);
                        serverController.Hora(horaObj.actor, horaObj.target, horaObj.pai);
                        getMsgList.Dispose();
                        return new AfterHoraState(this);
                    }

                    //RinshanFlggOff
                    //serverController.ResetRinshanFlag();
                    //serverController.ResetIppatsuFlag();



                    if (getMsgList.Count(e => e.IsDAHAI()) == 1 &&
                        getMsgList.Count(e => e.IsNONE()) == Constants.PLAYER_NUM - 1)
                    {
                        var dahaiObj = getMsgList.Where(e => e.IsDAHAI())
                            .First();
                        serverController.Dahai(dahaiObj.actor, dahaiObj.pai, dahaiObj.tsumogiri);
                        getMsgList.Dispose();
                        return new AfterDahaiState(this);
                    }
                    else if (getMsgList.Count(e => e.IsREACH()) == 1 &&
                            getMsgList.Count(e => e.IsNONE()) == Constants.PLAYER_NUM - 1)
                    {
                        var reachObj = getMsgList.First(e => e.IsREACH());
                        serverController.Reach(reachObj.actor);
                        getMsgList.Dispose();
                        return new AfterReachState(this);
                    }
                    else if (getMsgList.Count(e => e.IsANKAN()) == 1 &&
                            getMsgList.Count(e => e.IsNONE()) == Constants.PLAYER_NUM - 1)
                    {
                        var kanObj = getMsgList.First(e => e.IsREACH());
                        serverController.Ankan(kanObj.actor, kanObj.target, kanObj.pai, kanObj.consumed);
                        getMsgList.Dispose();
                        return new AfterKanState(this);
                    }

                }
            }
            else
            {
                //error handling
                serverController.SendErrorToRoomMember(msgobj);
            }
            return this;
        }