示例#1
0
        /// <summary>
        /// Faz um teste de colisão do Turista com a área Visitável de um Ponto de Interesse.
        /// A Área Visitável é apenas a área de colisão um pouco maior (*2)
        /// 
        /// Quando existe uma colisão com um Ponto de Interesse Visitável é mostrada a informação acerca
        /// das características da atracção.
        /// 
        /// Da mesma forma quando não existe nenhuma colisão e estava a ser mostrada informação sobre o ponto de interesse
        /// esta é eliminada
        /// </summary>
        /// <param name="list">Lista com os pontos de interesse presentes na simulaçao</param>
        /// <returns>Indica se foi visitado ou não um qualquer ponto de interesse que ainda não tenha sido visitado</returns>
        public bool visitedPointOfInterest(List<PointOfInterest> list)
        {
            bool visitedSomething = false;

            foreach (PointOfInterest poi in list)
            {
                if ((this.Position.Px <= poi.Position.Px + poi.ColisionArea.Adjustment.Px + poi.ColisionArea.Dimensions.Px * 2
                    && this.Position.Px >= poi.Position.Px + poi.ColisionArea.Adjustment.Px - poi.ColisionArea.Dimensions.Px * 2)

                    && (this.Position.Pz <= poi.Position.Pz + poi.ColisionArea.Adjustment.Pz + poi.ColisionArea.Dimensions.Pz * 2
                    && this.Position.Pz >= poi.Position.Pz + poi.ColisionArea.Adjustment.Pz - poi.ColisionArea.Dimensions.Pz * 2))
                {

                    if (poi.ToVisit && poi != this.LastVisited)
                    {
                        this.LastVisited = poi;
                        Messaging.Instance.addCharacteristics(poi);
                    }

                    if (!poi.Visited && poi.ToVisit)
                    {
                        Messaging.Instance.Information.Enqueue("Acabaste de visitar: " + poi.Nome);

                        Messaging.Instance.Permanent.Add("- " + poi.Nome + " (visitado)");
                        Messaging.Instance.Permanent.Remove("- " + poi.Nome);

                        poi.Visited = true;
                    }

                    visitedSomething = true;
                    break;                    
                }
            }

            if (!visitedSomething)
            {
                this.LastVisited = null;
                Messaging.Instance.removeCharacteristics();
            }

            return visitedSomething;
        }
示例#2
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="p"></param>
        public void addCharacteristics(PointOfInterest p)
        {
            Messaging.Instance.PoiInfo.Add(AppState.Instance.ResourceManager.GetString("AttractionFeatures") + ":");

            foreach (String c in p.Features)
            {
                Messaging.Instance.PoiInfo.Add(c);
            }
        }
示例#3
0
        public void loadCartography(ref Cartography cartography, int cityID)
        {

            WebService.Cartography c = this.Ws.CityCartographyFull(cityID);

            Intersection itr;
            foreach (WebService.Intersection i in c.intersections)
            {
                itr = new Intersection(i.id);
                itr.Position.set(i.position.x, i.position.y, i.position.z);
                cartography.intersections.Add(itr);
            }

            RoadSegment rs;
            foreach (WebService.RoadSegment r in c.roadSegments)
            {
                rs = new RoadSegment(cartography.getIntersectionWithID(r.idIntersectionBegin), cartography.getIntersectionWithID(r.idIntersectionEnd));
                rs.SegmentName = r.name;
                cartography.segments.Add(rs);
            }

            PointOfInterest poi;
            foreach (WebService.PointOfInterest p in c.pointsOfInterest)
            {
                poi = new PointOfInterest(new Vector3D(p.position.x, p.position.y, p.position.z));
                poi.ID = p.id;
                poi.ModelName = p.model;

                /// TODO: Alterar para "Nome"
                poi.Nome = p.description;
                poi.Description = p.description;

                poi.Facing = p.facing;

                for (int i = 0; i < p.features.Length; i++)
                {
                    poi.Features.Add(p.features[i]);
                }

                //adjustment = new String[0];
                //dimensions = new String[0];


                //NameValueConfigurationCollection nvc = ModelSettings.Default.Properties;
                //Console.WriteLine(ConfigurationSettings.AppSettings.AllKeys.);

                //if (poi.ModelName == "Castelo")
                //{

                //    //if (ModelSettings.Default.PropertyValues..Contains(poi.ModelName + "Adjustment"))
                //    //{
                //    adjustment = ModelSettings.Default[poi.ModelName + "Adjustment"].ToString().Split('|');
                //    //}

                //    //if (ModelSettings.Default.SettingsKey.Contains(poi.ModelName + "Dimensions"))
                //    //{
                //    dimensions = ModelSettings.Default[poi.ModelName + "Dimensions"].ToString().Split('|');
                //    //}

                //    //if (ModelSettings.Default.SettingsKey.Contains(poi.ModelName + "SoundName"))
                //    //{
                //    poi.SoundName = ModelSettings.Default[poi.ModelName + "SoundName"].ToString();
                //    //}

                //    if (adjustment.Length > 0)
                //    {
                //        poi.ColisionArea.Adjustment.set(Double.Parse(adjustment[0]), Double.Parse(adjustment[1]), Double.Parse(adjustment[2]));
                //    }

                //    if (dimensions.Length > 0)
                //    {
                //        poi.ColisionArea.Dimensions.set(Double.Parse(dimensions[0]), Double.Parse(dimensions[1]), Double.Parse(dimensions[2]));
                //    }

                //    poi.ColisionArea.Visible = true;
                //}

                poi.ColisionArea.Visible = true;

                poi.ColisionArea.Adjustment.set(0, 0, -1.5);
                poi.ColisionArea.Dimensions.set(3, 1, 2);

                cartography.pointsOfInterest.Add(poi);
            }

            GenericObject go;
            foreach (WebService.GenericObject g in c.genericObjects)
            {
                go = GenericObjectFactory.getGenericObject(g.type);
                go.Position.set(g.position.x, g.position.y, g.position.z);
                cartography.genericObjects.Add(go);
            }
        }