Exemplo n.º 1
0
    void SendGameTurnResult(int turnN)
    {
        Ag.LogIntense(2, true);
        //string myRoll = ((TurnNum % 2 == 1) ^ (MySocket.IsGameHost.Value)) ? "KICK" : "KEEP";
        string myRoll; // = ((TurnNum % 2 == 1) ^ (!MySocket.IsGameHost.Value)) ? "KICK" : "KEEP";

        if (TurnNum % 2 == 1)
        {
            myRoll = MySocket.IsGameHost.Value ? "KICK" : "KEEP";
        }
        else
        {
            myRoll = MySocket.IsGameHost.Value ? "KEEP" : "KICK";
        }

        MyUser.WAS.GameSessionKey = MySocket.sessionKey;

        NodeGameTurnRslt gameTurn = new NodeGameTurnRslt()
        {
            roll       = myRoll,
            direction  = Direction,
            skill      = Skill,
            turnNum    = turnN,
            sessionKey = MySocket.sessionKey,
            grade      = CurMyCard.WAS.grade,
            level      = CurMyCard.WAS.level
        };

        Ag.LogString(MySocket.mName + " NodeAction :: GameTurn  " + TurnNum + "        My Roll is    " + myRoll);
        Ag.LogString(MySocket.mName + " NodeAction :: GameTurn  Send   >>>  my <Dir/Skl>  :  <<< " + Direction + " / " + Skill + " >>>");
        MySocket.ActionGameObj(gameTurn);
        Ag.LogString(MySocket.mName + " NodeAction :: GameTurn   _____ Sent   !!! ");
        Ag.LogIntense(2, false);
    }
Exemplo n.º 2
0
    public void GameTurnBot(int turnN, AmCard EnemCard)
    {
        //Ag.LogIntenseWord ("  Value at Bot   " + " " + Direction + " " + " " + Skill + " " + Ag.mgEnemDirec + " " + Ag.mgEnemSkill);
        //Ag.LogDouble (" NodeActions :: GameTurnBot   ...  turn : " + turnN + "  EnemCard : " + EnemCard.WAS.grade + "  /  " + EnemCard.WAS.level);
        NodeGameTurnRslt gameTurn = new NodeGameTurnRslt()
        {
            roll       = Ag.mgIsKick ? "KICK" : "KEEP",
            direction  = Direction,
            skill      = Skill,
            turnNum    = turnN,
            sessionKey = MySocket.sessionKey,
            grade      = CurMyCard.WAS.grade,
            level      = CurMyCard.WAS.level
        };

        MySocket.arrGameSend.Add(gameTurn);
        NodeGameTurnRslt enemTurn = new NodeGameTurnRslt()
        {
            roll       = !Ag.mgIsKick ? "KICK" : "KEEP",
            direction  = Ag.mgEnemDirec,
            skill      = Ag.mgEnemSkill,
            turnNum    = turnN,
            sessionKey = MySocket.sessionKey,
            grade      = EnemCard.WAS.grade,
            level      = EnemCard.WAS.level
        };

        MySocket.arrGameRcvd.Add(enemTurn);

        Ag.LogIntenseWord(" NodeActions :: GameTurnBot   arrGameSend.count : " + MySocket.arrGameSend.Count + "  Rcvd : " + MySocket.arrGameRcvd.Count);
    }
Exemplo n.º 3
0
    public void GetEnemyDirectSkill(out int direct, out int skill)
    {
        if (MySocket.arrGameRcvd.Count == 0)
        {
            direct = skill = 0;
            return;
        }
        NodeGameTurnRslt enemRslt = (NodeGameTurnRslt)MySocket.arrGameRcvd.GetLastMember();

        direct = enemRslt.direction;
        skill  = enemRslt.skill;
    }
Exemplo n.º 4
0
    public void GameScoreAddNewTurn(int[] pUnifCstmInfo = null)
    {  // 1 at MySocket.arrGameSend, MySocket.arrGameRcvd   each ...
        Ag.LogStartWithStr(7, "  NodeAction  ::  GameScoreAddNewTurn    ");
        bool isMyKick;

        Ag.LogString("         IsGameHost ...  " + MySocket.IsGameHost);

        isMyKick = ((TurnNum % 2 == 0) ^ (MySocket.IsGameHost.Value));
        Ag.LogString(MySocket.mName + " NodeActions :: GameScore . . . . . . . .  ________________________________ ");
        Ag.LogString(MySocket.mName + " NodeActions :: GameScore . . . . . . . .  " + TurnNum.LogWith("Turn") + MySocket.IsGameHost.LogWith("Host? ") + isMyKick.LogWith(" MyKick? "));

        Dlgt_Gen_Obj_Bool <NodeGameBase> dlgtTurnRslt = ( NodeGameBase pObj) => {
            return(pObj.msgType == "TURN_RSLT");
        };

        NodeGameTurnRslt kickNodeRslt, keepNodeRslt;
        NodeGameTurnRslt myRslt = (NodeGameTurnRslt)MySocket.arrGameSend.GetLastMemberWithCond(dlgtTurnRslt);
        NodeGameTurnRslt enRslt = (NodeGameTurnRslt)MySocket.arrGameRcvd.GetLastMemberWithCond(dlgtTurnRslt);

        Ag.LogString("         arrGameSend.count : " + MySocket.arrGameSend.Count + "      Rcvd : " + MySocket.arrGameRcvd.Count);

        bool kickerWin;

        if (isMyKick)
        {
            Ag.LogString("   >>>   I am Kicker   ");
            kickNodeRslt = myRslt;
            keepNodeRslt = enRslt;
        }
        else
        {
            Ag.LogString("   >>>   I am Keeper   ");
            kickNodeRslt = enRslt;
            keepNodeRslt = myRslt;
        }

        kickerWin = AgUtilGame.DidKickerWinThisTurn(kickNodeRslt.direction, kickNodeRslt.skill, keepNodeRslt.direction, keepNodeRslt.skill);   // 골/노골 결정

        Ag.LogString(isMyKick.ShowBool(" I am ", "Kicker", "Keeper") + kickerWin.ShowBool(" Turn : ", "GoalIn", "NoGoal") + "       My Dir/Skl " + myRslt.direction + " / " + myRslt.skill +
                     "       Enem  Dir/Skl " + enRslt.direction + " / " + enRslt.skill);
        Ag.LogString("  Direction in Ag..  Dir / Skl :  " + Ag.mgDirection + "  /  " + Ag.mgSkill);

        int[] myUnCm, enUnCm;

        if (pUnifCstmInfo == null)
        {
            myUnCm = new int[] { 1, 1, 1, 0 };
            enUnCm = new int[] { 1, 1, 1, 0 };
        }
        else
        {
            myUnCm = new int[] { pUnifCstmInfo [0], pUnifCstmInfo [1], pUnifCstmInfo [2], pUnifCstmInfo [3] };
            enUnCm = new int[] { pUnifCstmInfo [4], pUnifCstmInfo [5], pUnifCstmInfo [6], pUnifCstmInfo [7] };
        }

        myGameLogic.AddNewTurn(myRslt, enRslt, 0, myUnCm);
        enGameLogic.AddNewTurn(enRslt, myRslt, 0, enUnCm);

        GameFinish = myGameLogic.DidIFinalWin(enGameLogic);

        if (GameFinish.HasValue)
        {
            Ag.LogIntenseWord(" Game is Finished !!!!!   ");
            float mS, mE;
            GetTotalScore(out mS, out mE);
            Ag.LogString(MySocket.mName + " Total Score :: " + mS + "  /  " + mE);
        }

        int enemD, enemS;

        GetEnemyDirectSkill(out enemD, out enemS);

        Ag.LogString(MySocket.mName + "   Enemy Direct : " + enemD + "   Skill : " + enemS);
        Ag.LogString(MySocket.mName + "   " + MySocket.IsGameHost.ShowBool(" I am ", "Host", "Vstr") + "   Kicker Win ?  " + kickerWin);
        Ag.LogString(MySocket.mName + "   My Score : " + myGameLogic.CurScore + " Enemy Score : " + enGameLogic.CurScore);
        Ag.LogString(MySocket.mName + "   Me : Enemy Goals   << " + myGameLogic.GetGoalNumber() + "  :  " + enGameLogic.GetGoalNumber() + GameFinish.ShowBool(" GameFinish :", "Win", "Lose"));
        Ag.LogString(MySocket.mName + "   NodeActions :: GameScore . . . . . . . .  ________________________________    End   ________");
        Ag.LogIntense(7, false);
    }
    void ResGameMsg(IMessage theData)
    {
        //   {"name":"RES_GAMEMSG","args":[{"status":"FAIL","code":"ERR_NOOPPONENT"}]
        TimerStop();
        Ag.LogStartWithStr(2, mName + "  ResGameMsg    Rcvd  ...  " + IsGameHost.Value.ShowBool("I am ", "Host", "Vstr") + "\t\t\t\t >>>   Re Action   <<<");
        JSONNode argsJ = GetArguments(theData, mName);

        try {
            gameMsgCode = argsJ ["code"];
        } catch {
            Ag.LogString(mName + "  ResGameMsg ::  No code ");
        }

        if (NoOpponentProcess(gameMsgCode))
        {
            return;
        }

        JSONNode gData   = argsJ ["data"];// JsonMapper.ToObject (argsJ ["data"]);
        string   msgType = gData ["msgType"];

        gData = gData ["content"];

        string dodgeStr = gData.ToString().DodgeBackSlashQuoMark();

        (" ResGameMsg ::   dodgeStr  ::: " + dodgeStr).HtLog();
        dodgeStr = dodgeStr.Substring(1, dodgeStr.Length - 2);
        gData    = JSON.Parse(dodgeStr);
        (" ResGameMsg ::   gData ::: " + gData.ToString()).HtLog();

        Ag.LogString(mName + "  msgType    >>>>>  " + msgType + "  <<<<<   ");
        NodeGameBase theObj = null;

        switch (msgType)
        {
        case "GameStartMsg":
            GameStartMsg.Enem = true;
            return;

        case "SceneLoadComplete":
            SceneLoadComplete.Enem = true;
            return;

        case "RematchApply":
            ReMatchSent.Enem = true;
            return;

        case "RematchRefuse":
            ReMatchRefuseSend.Enem = true;
            return;

        case "AmUser":
            gData = JSON.Parse(dodgeStr.RecoverFromDodgeStr("@#@"));
            Ag.LogString(" ResGameMsg :: " + gData.ToString());

            EnemyUser = new AmUser(true, "DodgeDeviceID");
            EnemyUser = (new NodeAmUser()).ParseFrom(gData);
            "  NodeSocket :: ResGameMsg ::     case  ''AmUser''    >>>>>     Parsing Ended .....  ".HtLog();
            //AgStt.IsGaming = EnemyUser.Parsed = true;
            //AgStt.IsGaming = true;


            Ag.GameStt.EnemyInfoExchangeParsed(" AmUser ");


            if (!IsGameHost.Value)
            {
                ExchangeInfo();
            }
            //EnemyUser.ShowMyself ();
            return;

        case "PREPARE":
            AgStt.EnemyNodePrepareObj = new NodeGamePrepare();
            AgStt.MyNodePrepareObj    = new NodeGamePrepare();
            AgStt.EnemyNodePrepareObj.Parse(gData);
            AgStt.EnemyNodePrepareObj.ShowMyself();
            if (!IsGameHost.Value)
            {
                if (AgStt.EnemyNodePrepareObj.sessionKey != null && AgStt.EnemyNodePrepareObj.sessionKey.Length > 5)
                {
                    sessionKey = MyUser.WAS.GameSessionKey = AgStt.EnemyNodePrepareObj.sessionKey;
                }
                ActionGamePrepare(AgStt.MyNodePrepareObj);
            }
            return;

        case "TURN_RSLT":
            Ag.LogString(mName + "  Parsing   NodeGameTurnRslt   Object   ");
            theObj = new NodeGameTurnRslt();
            ((NodeGameTurnRslt)theObj).Parse(gData);
            //theObj = JsonMapper.ToObject<NodeGameTurnRslt> (gData.ToJson ());

            if (!IsGameHost.Value) // 받는 부분
            {
                sessionKey = ((NodeGameTurnRslt)theObj).sessionKey;
            }

            Ag.LogString(mName + "  Parsing Data" + theObj.ToString());
            Ag.LogString(mName + "  Parsing   NodeGameTurnRslt   Object   ... End   ");
            break;

        case "HOST_SEND":
            Ag.LogString(mName + "  Parsing   Game Void   Received    ... End   ");
            Ag.LogIntense(2, false);
            //theObj = JsonMapper.ToObject<NodeGameHostSend> (gData.ToJson ());
            return;//break;

        case "REVERSE":
            Ag.LogString(mName + "  ResGameMsg         REVERSE ... End ");
            dlgtReverseHostVstr();
            return;

        case "GOLDENBALL":
            Ag.LogString(mName + "  ResGameMsg         GOLDENBALL   " + gData ["BallKind"].ToString());
            Ag.LogString(mName + "  ResGameMsg         GOLDENBALL ... End ");
            return;
        }

        Ag.LogString(mName + "  ResGameMsg         Rcvd ... End ");
        arrGameRcvd.Add(theObj);

        dlgtGameGotResult();

        Ag.LogIntense(2, false);
    }
Exemplo n.º 6
0
    public void GameLogic()
    {
        Ag.LogString("//  _////////////////////////////////////////////////_    _____  Test  _____    Score   _____");
        NodeGameTurnRslt my, en;


        int  kickDir = 0, kickSkl, defnDir, defnSkl;
        bool rsss = AgUtilGame.DidKickerWinThisTurn(kickDir++, 3, 1, 2);

        rsss = AgUtilGame.DidKickerWinThisTurn(kickDir++, 3, kickDir, 2);
        rsss = AgUtilGame.DidKickerWinThisTurn(kickDir++, 3, 1, 2);
        rsss = AgUtilGame.DidKickerWinThisTurn(kickDir++, 3, 1, 2);
        rsss = AgUtilGame.DidKickerWinThisTurn(kickDir++, 3, 1, 2);
        rsss = AgUtilGame.DidKickerWinThisTurn(kickDir++, 3, 1, 2);


        Ag.LogIntenseWord(" Test   :::   " + rsss);


        AmGameLogic myLogic = new AmGameLogic("League_3", "League_3");  // 5 - 3 => 2... 3 - 5 => 0 ....  !!!!
        AmGameLogic enLogic = new AmGameLogic("League_3", "League_3");

        Ag.LogStartWithStr(10, " Round 1");
        my = new NodeGameTurnRslt()
        {
            roll = "KICK", direction = 4, skill = 1, grade = "A", level = 2, enchant = 0
        };
        en = new NodeGameTurnRslt()
        {
            roll = "KEEP", direction = 0, skill = 0, grade = "C", level = 2, enchant = 0
        };
        myLogic.AddNewTurn(my, en, 0, new int[] { 1, 1, 1, 1, 0, 0, 0, 0 });  // My Kick, Goal..  Win
        enLogic.AddNewTurn(en, my, 0, new int[] { 0, 0, 0, 0, 1, 1, 1, 1 });
        myLogic.ShowMySelf();
        enLogic.ShowMySelf();

        myLogic.GetTotalScore().ToString().HtLog();
        enLogic.GetTotalScore().ToString().HtLog();

        my = new NodeGameTurnRslt()
        {
            roll = "KEEP", direction = 0, skill = 0, grade = "C", level = 2, enchant = 0
        };
        en = new NodeGameTurnRslt()
        {
            roll = "KICK", direction = 4, skill = 1, grade = "A", level = 2, enchant = 0
        };
        myLogic.AddNewTurn(my, en, 0, new int[] { 0, 0, 0, 0, 1, 1, 1, 1 });  // My Kick, Goal..  Win
        enLogic.AddNewTurn(en, my, 0, new int[] { 1, 1, 1, 1, 0, 0, 0, 0 });
        myLogic.ShowMySelf();
        enLogic.ShowMySelf();
        Ag.LogDouble(" TotalScore : " + myLogic.GetTotalScore() + " Cere : " + myLogic.CeremonyBonus + "  Round : " + myLogic.TotalRound + "   TurnBonus : " + myLogic.UiTurnBonus);

        myLogic.GetTotalScore().ToString().HtLog();
        enLogic.GetTotalScore().ToString().HtLog();



        Ag.LogNewLine(10);

        // N:N => 0:0
        Ag.LogStartWithStr(10, " Round 2");
        my = new NodeGameTurnRslt()
        {
            roll = "KICK", direction = 4, skill = 1, grade = "B", level = 7, enchant = 0
        };
        en = new NodeGameTurnRslt()
        {
            roll = "KEEP", direction = 1, skill = 1, grade = "B", level = 10, enchant = 0
        };
        myLogic.AddNewTurn(my, en, 3, new int[] { 1, 3, 1, 3, 1, 1, 1, 0 });  // My Kick, Goal..  Win
        enLogic.AddNewTurn(en, my, 3, new int[] { 1, 1, 1, 0, 1, 1, 1, 0 });
        my = new NodeGameTurnRslt()
        {
            roll = "KEEP", direction = 2, skill = 1, grade = "D", level = 0, enchant = 0
        };
        en = new NodeGameTurnRslt()
        {
            roll = "KICK", direction = 2, skill = 1, grade = "C", level = 1, enchant = 0
        };
        myLogic.AddNewTurn(my, en, 0, new int[] { 1, 1, 1, 0, 1, 1, 1, 0 });  // My Kick, Goal..  Win
        enLogic.AddNewTurn(en, my, 0, new int[] { 1, 1, 1, 0, 1, 1, 1, 0 });
        myLogic.ShowMySelf();
        enLogic.ShowMySelf();
        Ag.LogDouble(" TotalScore : " + myLogic.GetTotalScore() + " Cere : " + myLogic.CeremonyBonus + "  Round : " + myLogic.TotalRound + "   TurnBonus : " + myLogic.UiTurnBonus);

        // G:G => 1:1
        Ag.LogStartWithStr(10, " Round 3");
        my = new NodeGameTurnRslt()
        {
            roll = "KICK", direction = 4, skill = 1, grade = "B", level = 7, enchant = 0
        };
        en = new NodeGameTurnRslt()
        {
            roll = "KEEP", direction = 1, skill = 1, grade = "B", level = 10, enchant = 0
        };
        myLogic.AddNewTurn(my, en, 2, new int[] { 1, 3, 1, 3, 1, 1, 1, 0 });  // My Kick, Goal..  Win
        enLogic.AddNewTurn(en, my, 2, new int[] { 1, 1, 1, 0, 1, 1, 1, 0 });
        my = new NodeGameTurnRslt()
        {
            roll = "KEEP", direction = 0, skill = 2, grade = "D", level = 0, enchant = 0
        };
        en = new NodeGameTurnRslt()
        {
            roll = "KICK", direction = 1, skill = 1, grade = "C", level = 1, enchant = 0
        };
        myLogic.AddNewTurn(my, en, 0, new int[] { 1, 1, 1, 0, 1, 1, 1, 0 });  // My Kick, Goal..  Win
        enLogic.AddNewTurn(en, my, 0, new int[] { 1, 1, 1, 0, 1, 1, 1, 0 });
        myLogic.ShowMySelf();
        enLogic.ShowMySelf();
        Ag.LogDouble(" TotalScore : " + myLogic.GetTotalScore() + " Cere : " + myLogic.CeremonyBonus + "  Round : " + myLogic.TotalRound + "   TurnBonus : " + myLogic.UiTurnBonus);
        bool?finalWin = myLogic.DidIFinalWin(enLogic);

        if (finalWin.HasValue)
        {
            Ag.LogDouble("   >>>>>>>>>>         Game is Over     Did I Win ? >>  " + finalWin.Value);
        }

        // G:G => 1:1
        Ag.LogStartWithStr(10, " Round 4");
        my = new NodeGameTurnRslt()
        {
            roll = "KICK", direction = 4, skill = 1, grade = "B", level = 7, enchant = 0
        };
        en = new NodeGameTurnRslt()
        {
            roll = "KEEP", direction = 1, skill = 1, grade = "B", level = 10, enchant = 0
        };
        myLogic.AddNewTurn(my, en, 2, new int[] { 1, 3, 1, 3, 1, 1, 1, 0 });  // My Kick, Goal..  Win
        enLogic.AddNewTurn(en, my, 2, new int[] { 1, 1, 1, 0, 1, 1, 1, 0 });
        myLogic.ShowMySelf();
        enLogic.ShowMySelf();
        Ag.LogDouble(" TotalScore : " + myLogic.GetTotalScore() + " Cere : " + myLogic.CeremonyBonus + "  Round : " + myLogic.TotalRound + "   TurnBonus : " + myLogic.UiTurnBonus);

        finalWin = myLogic.DidIFinalWin(enLogic);
        if (finalWin.HasValue)
        {
            Ag.LogDouble("   >>>>>>>>>>         Game is Over     Did I Win ? >>  " + finalWin.Value);
        }



        my = new NodeGameTurnRslt()
        {
            roll = "KEEP", direction = 1, skill = 2, grade = "D", level = 0, enchant = 0
        };
        en = new NodeGameTurnRslt()
        {
            roll = "KICK", direction = 0, skill = 1, grade = "C", level = 1, enchant = 0
        };
        myLogic.AddNewTurn(my, en, 0, new int[] { 1, 1, 1, 0, 1, 1, 1, 0 });  // My Kick, Goal..  Win
        enLogic.AddNewTurn(en, my, 0, new int[] { 1, 1, 1, 0, 1, 1, 1, 0 });
        myLogic.ShowMySelf();
        enLogic.ShowMySelf();
        Ag.LogDouble(" TotalScore : Me >> " + myLogic.GetTotalScore() + " Cere : " + myLogic.CeremonyBonus + "  Round : " + myLogic.TotalRound + "   TurnBonus : " + myLogic.UiTurnBonus);
        Ag.LogDouble(" TotalScore : En >> " + enLogic.GetTotalScore() + " Cere : " + enLogic.CeremonyBonus + "  Round : " + enLogic.TotalRound + "   TurnBonus : " + enLogic.UiTurnBonus);


//        bool? finalWin = myLogic.DidIFinalWin (enLogic);
//        if (finalWin.HasValue)
//            Ag.LogIntenseWord ("   >>>>>>>>>>         Game is Over     Did I Win ? >>  " + finalWin.Value);
//
//        (myLogic.GetTotalScore ().LogWith (" My Total Score ") + enLogic.GetTotalScore ().LogWith (" Enemy Score")).HtLog ();
//        (myLogic.SemiTotal.LogWith ("myLogic.SemiTotal") + "  UI Turn Bonus  " + myLogic.UiTurnBonus).HtLog ();
//        Ag.LogNewLine (2);
    }