Example #1
0
        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);
        }
Example #2
0
    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);
        }
    }
Example #3
0
 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");
 }