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); } } }
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("交換を終了しました"); } }
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; } } }
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; } } }
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(); } }
public abstract void run(game.net.NetworkData data);
public string createCodeSendData(game.net.NetworkData data) { return(createCode(COMMAND.SEND_DATA, 0, data)); }
public override void run(game.net.NetworkData data) { Logger.info("story.Morning():run."); }
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(); } }