/** * Lane情報を取得する * <lane>~</lane> の中を行をすべて取得する */ private Lanes GetLanesText(StreamReader sr) { Lanes _lanes = new Lanes(); while (!sr.EndOfStream) { string line = sr.ReadLine().Trim(); Dictionary <string, string> fields = SplitLineStr(line); if (fields.Count == 0) { continue; } // 終了判定 if (line.Equals("</lane>")) { break; } // レーン情報を取得 Lane lane = new Lane(); foreach (KeyValuePair <string, string> kvp in fields) { // keyとvalueに分割 if (kvp.Value != null) { switch (kvp.Key) { case "id": UInt32 id; if (UInt32.TryParse(kvp.Value, out id)) { lane.ID = id; } break; case "name": lane.Name = kvp.Value; break; case "color": try { // FF001122 のような16進数文字列を整数値に変換 lane.Color = Convert.ToUInt32(kvp.Value, 16); } catch (Exception e) { lane.Color = 0; } break; } } } _lanes.Add(lane); } return(_lanes); }
// レーン情報を追加 public void AddLane(UInt32 id, string name, UInt32 color) { lanes.Add(id, name, color); }