public static void UpdateStayTime(string visitPrefabName, float time) { // * 未初期化に対しての例外発生 if (!initialized) { throw new Exception("Uninitialized"); } // * 必要データ取得 StayData stayData = datas[visitPrefabName]; int visitCount = stayData.visitCount; float averageStayTime = stayData.averageStayTime; // * 更新データ計算 float sumTime = averageStayTime * visitCount + time; visitCount++; averageStayTime = sumTime / visitCount; // * 更新データをインスタンスに格納 stayData.visitCount = visitCount; stayData.averageStayTime = averageStayTime; // * リストに戻す datas[visitPrefabName] = stayData; }
public static void SaveSortedByTime(Dictionary <string, string> prefabPointNameDictionary) { // * 未初期化に対しての例外発生 if (!initialized) { throw new Exception("Uninitialized"); } // * 必要データ抽出 List <Pair> stayDataList = new List <Pair>(); foreach (string pointName in prefabPointNameDictionary.Keys) { StayData data = datas[prefabPointNameDictionary[pointName]]; Pair pair = new Pair(pointName, data); stayDataList.Add(pair); } // * ソート int maxIndex = 0; for (int i = 0; i < stayDataList.Count - 1; i++) { maxIndex = i; for (int j = i + 1; j < stayDataList.Count; j++) { float timeMax = stayDataList[maxIndex].stayData.averageStayTime; float timeJ = stayDataList[j].stayData.averageStayTime; if (timeJ > timeMax) { maxIndex = j; } } Pair pair = stayDataList[maxIndex]; stayDataList[maxIndex] = stayDataList[i]; stayDataList[i] = pair; } // * 結果出力 StreamWriter writer = new StreamWriter(Application.dataPath + "/Resources/Data/SortedByTime.txt", false); for (int i = 0; i < stayDataList.Count; i++) { Pair pair = stayDataList[i]; StayData data = pair.stayData; string line = pair.pointName + ": " + data.visitCount + " " + data.averageStayTime; writer.WriteLine(line); } writer.Close(); }
public Pair(string pointName, StayData stayData) { this.pointName = pointName; this.stayData = stayData; }