public void addScore(StageScore ss, string stageName) { if (stages.ContainsKey(stageName)) { //ステージがあるならば ((StageScoreArray)stages[stageName]).add(ss); } else { //ステージが無いならば stages[stageName] = new StageScoreArray(ss); } }
private void split() { if (sr == null) { return; } string line; StageScore ss; while ((line = sr.ReadLine()) != null) { string[] dataArray = line.Split(','); for (int n = 0; (n * 3 + 3) < dataArray.Length; n++) { ss = new StageScore(); ss.date = DateTime.FromBinary(long.Parse(dataArray[n * 3 + 1])); ss.time = TimeSpan.Parse(dataArray[n * 3 + 2]); ss.score = int.Parse(dataArray[n * 3 + 3]); StageScoreList.getInstance().addScore(ss, dataArray[0]); } } }
public void add(StageScore ss) { if (scores.Count == 0) { scores.AddLast(ss); return; } LinkedListNode <StageScore> lln = scores.First; //追加と同時にソート for (int n = 0; n < arrayLimit; n++) { if (lln == null & n < arrayLimit) { //データが登録されていない、かつリミットを超えていない scores.AddLast(ss); break; } else if (lln.Value.score < ss.score) { //新しいほうがスコアが高いならば、比較対象の前に追加 scores.AddBefore(lln, ss); break; } else if (lln.Value.score == ss.score & lln.Value.time.CompareTo(ss.time) == -1) { //スコアは同じだが、時間が早い場合、比較対象の前に追加 scores.AddBefore(lln, ss); break; } lln = lln.Next; } while (scores.Count > arrayLimit) { //要素数がリミットより大きいなら最後を消去 scores.RemoveLast(); } }
/// <summary> /// 先頭にssを追加したStageScoreArrayを作成します /// </summary> /// <param name="ss">追加したいStageScore</param> public StageScoreArray(StageScore ss) { scores = new LinkedList <StageScore>(); scores.AddLast(ss); }