public ZoneInfoGrid(int zoneWidthAndHeight, ILandValueCalculator landValueCalculator) { ZoneWidthAndHeight = zoneWidthAndHeight; ZoneInfos = (from x in Enumerable.Range(0, zoneWidthAndHeight) from y in Enumerable.Range(0, zoneWidthAndHeight) let localX = x let localY = y select new ZoneInfo( zonePoint: new ZonePoint { X = localX, Y = localY }, getRelativeZoneInfo: (query) => { var point = new ZonePoint { X = (localX + query.RelativeX), Y = (localY + query.RelativeY) }; ZoneInfo matchingZoneInfo; if (ZoneInfos.TryGetValue(point, out matchingZoneInfo)) { return(new QueryResult <IZoneInfo, RelativeZoneInfoQuery>(query, matchingZoneInfo)); } return(new QueryResult <IZoneInfo, RelativeZoneInfoQuery>(query)); }, landValueCalculator: landValueCalculator ) ).ToDictionary(x => x.Point, x => x); }
public void saveInfos() { if (type == Type.collector) { //Debug.Log ("analyzer"); ZoneInfos[] infos; string[] names; if (newImplementation) { //prende tutti i component zoneAnalyzer presenti nella scena GameObject casualAnalyzer = GameObject.FindGameObjectWithTag("ZoneAnalyzer"); Transform zoneFather = casualAnalyzer.transform.parent; Transform[] analyzersTransform = new Transform[zoneFather.childCount]; ZoneAnalyzer[] analyzers = new ZoneAnalyzer[analyzersTransform.Length]; infos = new ZoneInfos[analyzers.Length]; names = new string[analyzers.Length]; for (int i = 0; i < analyzersTransform.Length; i++) { analyzersTransform[i] = zoneFather.GetChild(i); if (analyzersTransform[i] != null) { analyzers[i] = analyzersTransform[i].GetComponent <ZoneAnalyzer>(); if (analyzers[i] != null && analyzers[i].type == Type.analyzer) { infos[i] = analyzers[i].zoneInfos; names[i] = analyzers[i].zoneInfos.name; } } } } else { GameObject[] objs = GameObject.FindGameObjectsWithTag("ZoneAnalyzer"); ZoneAnalyzer[] analyzers = new ZoneAnalyzer[objs.Length]; infos = new ZoneInfos[analyzers.Length]; names = new string[objs.Length]; for (int i = 0; i < objs.Length; i++) { if (objs[i] != null) { analyzers[i] = objs[i].GetComponent <ZoneAnalyzer>(); //prende tutti gli elementi ZoneInfos if (analyzers[i] != null && analyzers[i].type == Type.analyzer) { infos[i] = analyzers[i].zoneInfos; names[i] = analyzers[i].zoneInfos.name; } } } } //ORDINO Array.Sort(names); ZoneInfos[] orderedInfos = new ZoneInfos[infos.Length]; for (int i = 0; i < names.Length; i++) { for (int j = 0; j < infos.Length; j++) { if (names[i] == infos[j].name) { orderedInfos[i] = infos[j]; } } } //creo l'opportuna directory se non esiste già if (!Directory.Exists(directory)) { Directory.CreateDirectory(Path.Combine(Application.persistentDataPath, directory)); } //cerca l'elemento con indice maggiore int actualIndex = 0; string finalPath01 = Path.Combine(Application.persistentDataPath, directory + "/" + Application.loadedLevelName + "_" + pathFileName + "_"); string finalPath02; while (true) { finalPath02 = finalPath01 + actualIndex.ToString() + ".xml"; if (File.Exists(finalPath02)) { actualIndex++; } else { break; } } //salva tutti gli elementi su file zoneContainer = new ZoneAnalyzerContainer(); zoneContainer.zoneInfos = orderedInfos; zoneContainer.Save(finalPath02); } }
public void OnGetZones(ZoneInfos infos) { zoneInfos = infos; zones.Clear(); foreach (ZoneInfo info in zoneInfos.zoneInfo) { zones.Add(info.id); if (info.current) { zoneInfo = info; currentZone = info.id; } } Debug.Log("Zones loaded"); }