Example #1
0
        private void request(Player src, Player dest, game.net.NetworkData data)
        {
            // 交換要求
            if (dest == null)
            {
                return;
            }
            if (src.state != db.PLAYER_STATE.NONE)
            {
                src.addMessage("交換中です");
            }
            else if (dest.state != db.PLAYER_STATE.NONE)
            {
                src.addMessage(dest.name + "さんは交換中です");
            }
            else
            {
                src.state    = db.PLAYER_STATE.NOON_WAIT_ACK;
                dest.state   = db.PLAYER_STATE.NOON_REQUEST_RETURN;
                src.net_opp  = dest.id;
                dest.net_opp = src.id;
                src.addMessage(dest.name + "さんに交換申請しました。返答を待っています。");
                dest.addMessage(src.name + "さんから交換申請がありました。返信してください。");
                src.dayNoonCount += 1;

                // ai
                if (GameFactory.getGame().localData.fgm)
                {
                    GameFactory.getAiManager().noon_ack(dest);
                }
            }
        }
Example #2
0
        public override void run(game.net.NetworkData data)
        {
            Logger.info("story.Noon():run.");

            var src  = GameFactory.getGame().shareData.players.getPlayer(data.src);
            var dest = GameFactory.getGame().shareData.players.getPlayer(data.dest);


            if (src.state == PLAYER_STATE.NOON_END)
            {
                return;
            }

            if (data.cmd == game.net.NET_COMMAND.NOON_REQUEST)
            {
                request(src, dest, data);
            }
            else if (data.cmd == game.net.NET_COMMAND.NOON_ACK)
            {
                ack(src, dest, data);
            }
            else if (data.cmd == game.net.NET_COMMAND.NOON_ITEM)
            {
                item(src, dest, data);
            }
            else if (data.cmd == game.net.NET_COMMAND.NOON_END)
            {
                // 終わり
                src.state = PLAYER_STATE.NOON_END;
                src.addMessage("交換を終了しました");
            }
        }
Example #3
0
        private void item(Player src, Player dest, game.net.NetworkData data)
        {
            var oppo = GameFactory.getGame().shareData.players.getPlayer(src.net_opp);

            if (src.state != PLAYER_STATE.NOON_ITEM || oppo == null)
            {
                src.state = PLAYER_STATE.NONE;
                src.addMessage("内部エラーです。交換前に戻します");
                if (oppo != null)
                {
                    oppo.state = PLAYER_STATE.NONE;
                    oppo.addMessage("内部エラーです。交換前に戻します");
                }
                return;
            }

            src.state    = db.PLAYER_STATE.NOON_ITEM_OK;
            src.net_item = data.item;
            src.addMessage("アイテムを選択しました");

            if (oppo.state == db.PLAYER_STATE.NOON_ITEM_OK && src.state == db.PLAYER_STATE.NOON_ITEM_OK)
            {
                src.addMessage(oppo.name + "さんとアイテムを交換しました");
                src.addMessage(" " + src.getItemStr(src.net_item) + "(" + src.name + ")");
                src.addMessage(" " + oppo.getItemStr(oppo.net_item) + "(" + oppo.name + ")");

                oppo.addMessage(src.name + "さんとアイテムを交換しました");
                oppo.addMessage(" " + oppo.getItemStr(oppo.net_item) + "(" + oppo.name + ")");
                oppo.addMessage(" " + src.getItemStr(src.net_item) + "(" + src.name + ")");


                //交換を実施
                ITEM tmp = src.getItem(src.net_item);
                src.setItem(src.net_item, oppo.getItem(oppo.net_item));
                oppo.setItem(oppo.net_item, tmp);

                src.state  = db.PLAYER_STATE.NONE;
                oppo.state = db.PLAYER_STATE.NONE;


                if (src.dayNoonCount >= 1)
                {
                    //交換上限
                    src.addMessage("交換回数の上限を超えました。交換は終了します");
                    src.state = PLAYER_STATE.NOON_END;
                }
                if (oppo.dayNoonCount >= 1)
                {
                    //交換上限
                    oppo.addMessage("交換回数の上限を超えました。交換は終了します");
                    oppo.state = PLAYER_STATE.NOON_END;
                }
            }
        }
Example #4
0
        private void ack(Player src, Player dest, game.net.NetworkData data)
        {
            if (dest == null)
            {
                return;
            }
            if (dest.state != PLAYER_STATE.NOON_WAIT_ACK)
            {
                src.state  = PLAYER_STATE.NONE;
                dest.state = PLAYER_STATE.NONE;
                src.addMessage("内部エラーです。交換前に戻します");
                dest.addMessage("内部エラーです。交換前に戻します");
                return;
            }
            if (src.state != PLAYER_STATE.NOON_REQUEST_RETURN)
            {
                src.state  = PLAYER_STATE.NONE;
                dest.state = PLAYER_STATE.NONE;
                src.addMessage("内部エラーです。交換前に戻します");
                dest.addMessage("内部エラーです。交換前に戻します");
                return;
            }
            if (data.fyes)
            {
                src.state  = db.PLAYER_STATE.NOON_ITEM;
                dest.state = db.PLAYER_STATE.NOON_ITEM;

                src.addMessage(dest.name + "さんと交換が成立しました。アイテムを選んでください。");
                dest.addMessage(src.name + "さんと交換が成立しました。アイテムを選んでください。");

                // ai
                if (GameFactory.getGame().localData.fgm)
                {
                    GameFactory.getAiManager().noon_item(dest, src);
                    GameFactory.getAiManager().noon_item(src, dest);
                }
            }
            else
            {
                src.state  = db.PLAYER_STATE.NONE;
                dest.state = db.PLAYER_STATE.NONE;

                src.addMessage(dest.name + "さんとの交換はできませんでした");
                dest.addMessage(src.name + "さんとの交換はできませんでした");

                if (dest.dayNoonCount >= 1)
                {
                    //交換上限
                    dest.addMessage("交換回数の上限を超えました。交換は終了します");
                    dest.state = PLAYER_STATE.NOON_END;
                }
            }
        }
Example #5
0
        public override void run(game.net.NetworkData data)
        {
            Logger.info("story.Night():run.");

            var src = GameFactory.getGame().shareData.players.getPlayer(data.src);

            if (data.cmd == game.net.NET_COMMAND.NIGHT_ACK)
            {
                src.net_yes = data.fyes;
                src.message = "投票しました";
                src.state   = PLAYER_STATE.NIGHT_SELECT_OK;
                if (!GameFactory.getGame().shareData.players.isAllPlayerState(PLAYER_STATE.NIGHT_SELECT_OK))
                {
                    return;
                }

                foreach (var p in GameFactory.getGame().shareData.players.players)
                {
                    p.message = "";
                }

                //全員選択が終わった
                allselect();
            }
            else if (data.cmd == game.net.NET_COMMAND.NIGHT_VOTE)
            {
                src.state   = db.PLAYER_STATE.NIGHT_VOTE_OK;
                src.net_opp = data.dest;
                src.addMessage("投票しました");

                if (!GameFactory.getGame().shareData.players.isAllPlayerState(PLAYER_STATE.NIGHT_VOTE_OK))
                {
                    return;
                }


                foreach (var p in GameFactory.getGame().shareData.players.players)
                {
                    p.message = "";
                }

                //全員選択が終わった
                allvote();
            }
        }
Example #6
0
 public abstract void run(game.net.NetworkData data);
Example #7
0
 public string createCodeSendData(game.net.NetworkData data)
 {
     return(createCode(COMMAND.SEND_DATA, 0, data));
 }
Example #8
0
 public override void run(game.net.NetworkData data)
 {
     Logger.info("story.Morning():run.");
 }
Example #9
0
        public override void run(game.net.NetworkData data)
        {
            Logger.info("story.MidNight():run.");

            sub = new MidNightSub();

            var src = GameFactory.getGame().shareData.players.getPlayer(data.src);

            if (data.cmd == game.net.NET_COMMAND.MIDNIGHT_SELECT)
            {
                src.state    = PLAYER_STATE.MIDNIGHT_SELECT_OK;
                src.net_item = data.item;
                src.net_opp  = data.dest;
                src.message  = "選択しました";

                //全員選択が終わった
                if (!GameFactory.getGame().shareData.players.isAllPlayerState(PLAYER_STATE.MIDNIGHT_SELECT_OK))
                {
                    return;
                }

                //判定
                checkAllSelectOk();
            }
            else if (data.cmd == game.net.NET_COMMAND.MIDNIGHT_SELECT_ITEM)
            {
                var dest = GameFactory.getGame().shareData.players.getPlayer(data.dest);
                if ((src.state == PLAYER_STATE.MIDNIGHT_KILL_ITEM_SELECT &&
                     dest.state == PLAYER_STATE.MIDNIGHT_KILL_ITEM_SELECT_WAIT) ||
                    (src.state == PLAYER_STATE.MIDNIGHT_SELECT_OK_DISCOVERER_ITEM_SELECT &&
                     dest.state == PLAYER_STATE.MIDNIGHT_SELECT_OK_DISCOVERER_ITEM_SELECT_WAIT)
                    )
                {
                    //アイテムを選択
                    for (int i = 0; i < src.items.Length; i++)
                    {
                        src.setItem(i, data.srcItem[i]);
                        dest.setItem(i, data.destItem[i]);
                    }

                    //状態を更新
                    if (src.state == PLAYER_STATE.MIDNIGHT_KILL_ITEM_SELECT)
                    {
                        src.state = PLAYER_STATE.MIDNIGHT_SELECT_OK;
                    }
                    else if (src.state == PLAYER_STATE.MIDNIGHT_SELECT_OK_DISCOVERER_ITEM_SELECT)
                    {
                        src.state = PLAYER_STATE.MIDNIGHT_END;
                    }

                    if (dest.state == PLAYER_STATE.MIDNIGHT_KILL_ITEM_SELECT_WAIT)
                    {
                        dest.state = PLAYER_STATE.MIDNIGHT_SELECT_OK_DISCOVERER_ITEM_SELECT_WAIT;
                    }
                    else if (dest.state == PLAYER_STATE.MIDNIGHT_SELECT_OK_DISCOVERER_ITEM_SELECT_WAIT)
                    {
                        dest.state = PLAYER_STATE.MIDNIGHT_END;
                    }
                }
            }

            //ナイフ処理
            // 全員SELECT_OKか、第1発見者待機になるまでknife
            if (GameFactory.getGame().shareData.players.isAllPlayerState(
                    PLAYER_STATE.MIDNIGHT_SELECT_OK,
                    PLAYER_STATE.MIDNIGHT_SELECT_OK_DISCOVERER_ITEM_SELECT_WAIT))
            {
                checkKnife();
            }

            // knifeが全員終わった後の処理
            if (GameFactory.getGame().shareData.players.isAllPlayerState(
                    PLAYER_STATE.MIDNIGHT_SELECT_OK,
                    PLAYER_STATE.MIDNIGHT_SELECT_OK_DISCOVERER_ITEM_SELECT_WAIT))
            {
                GameFactory.getGame().shareData.players.setAllState(PLAYER_STATE.MIDNIGHT_END);

                // 発狂処理
                checkMurdere();

                //第1発見者を選ぶ
                checkDiscover();
            }

            //aiの処理
            aiItem();


            // item処理が終わるまで待つ
            if (GameFactory.getGame().shareData.players.isAllPlayerState(PLAYER_STATE.MIDNIGHT_END))
            {
                // 完了判定
                checkEnd();
            }
        }