예제 #1
0
 /// <summary>
 /// 右側のチームの選手を追加
 /// </summary>
 /// <param name="p"></param>
 public void AddRightPlayer(Player p)
 {
     try
     {
         playerRight.Add(p);
     }
     catch
     {
         throw;
     }
 }
예제 #2
0
 /// <summary>
 /// 左側のチームの選手を追加
 /// </summary>
 /// <param name="p"></param>
 public void AddLeftPlayer(Player p)
 {
     try
     {
         playerLeft.Add(p);
     }
     catch
     {
         throw;
     }
 }
예제 #3
0
 /// <summary>
 /// parsed Hashtable のデータを Player 型へ変換
 /// </summary>
 /// <param name="data">Hashtable に保存された Player データ</param>
 /// <returns>Player 型</returns>
 private Player ConvertPlayer(Hashtable data)
 {
     try
     {
         Player player = new Player();
         player.Set(data);
         return player;
     }
     catch
     {
         throw;
     }
 }
예제 #4
0
        /// <summary>
        /// ターンを追加する
        /// </summary>
        /// <param name="data">Hashtable 型の構造解析データ</param>
        private void AddParsedTurn(List<Hashtable> data)
        {
            try
            {
                // 現在のターン
                int nowTurn = int.Parse(data[0]["turn"].ToString());

                Turn turn = new Turn();
                Ball ball = new Ball();

                // 既に指定されたターン数があれば playmode のみ引き継ぎ
                if (GetExistTurn(nowTurn))
                {
                    // 既にあるターンを取得
                    Turn existTurn = GetTurn(nowTurn);

                    // playmode のみ引き継ぎ
                    turn.SetPlaymode(existTurn.GetPlaymode());
                }
                else
                    // 指定されていなければ前のターンから playmode を取得
                {
                    // 3000 ターンが無い場合などの対処
                    // 2999 → 3001
                    int i = 0;
                    while (true)
                    {
                        i++;
                        if (GetExistTurn(nowTurn - i))
                        {
                            break;
                        }
                    }
                    turn.SetPlaymode(turns[nowTurn - i].GetPlaymode());
                }

                // 現在のターンをセット
                turn.SetTurn(nowTurn);

                // ボールの状態を格納
                ball = ConvertBall(data[0]);
                turn.SetBall(ball);

                // 先頭にあるボールの配列を削除
                data.RemoveAt(0);

                // player データを格納
                foreach (var ht in data)
                {
                    Player player = new Player();
                    player = ConvertPlayer(ht);

                    // チームに分別
                    switch (ht["team"].ToString())
                    {
                        case "l":
                            turn.AddLeftPlayer(player);
                            break;
                        case "r":
                            turn.AddRightPlayer(player);
                            break;
                        default:
                            throw new FormatException();
                    }
                }

                turns[turn.GetTurn()] = turn;
            }
            catch
            {
                throw;
            }
        }