Esempio n. 1
0
        public float GetNearResourceCount()
        {
            NaturalResource[] resList = battleField.NaturalResources;
            float             result  = 0;

            for (int i = 0; i < resList.Length; i++)
            {
                if (resList[i].Type == NaturalResourceType.Wood)
                {
                    ForestObject forest = (ForestObject)resList[i];
                    float        d      = Vector3.Distance(forest.ForestCenter, this.Position);
                    if (d < gatherDistance)
                    {
                        result++;
                    }
                }
                else if (resList[i].Type == NaturalResourceType.Oil)
                {
                    float d = Vector3.Distance(resList[i].Position, this.Position);
                    if (d < gatherDistance)
                    {
                        result++;
                    }
                }
            }
            return(result);
        }
Esempio n. 2
0
        public override void Update(GameTime time)
        {
            float ddt = time.ElapsedGameTimeSeconds;

            ringRotation += ddt / 4.5f;
            if (ringRotation > 2 * MathEx.PIf)
            {
                ringRotation -= 2 * MathEx.PIf;
            }

            if (mouseHoverCity != null)
            {
                float  s     = CitySelScale * City.CityOutterRadius / RingRadius;
                Matrix scale = Matrix.Scaling(s, 1, s);

                outter_marker.CurrentAnimation.Clear();
                outter_marker.CurrentAnimation.Add(new NoAnimaionPlayer(scale * Matrix.RotationY(-ringRotation) * mouseHoverCity.Transformation));
            }

            if (mouseHoverResource != null)
            {
                float  s     = ResourceRingRadius / RingRadius;
                Matrix scale = Matrix.Scaling(s, 1, s);

                outter_marker.CurrentAnimation.Clear();

                if (mouseHoverResource.Type == NaturalResourceType.Wood)
                {
                    ForestObject forest = mouseHoverResource as ForestObject;
                    outter_marker.CurrentAnimation.Add(new NoAnimaionPlayer(Matrix.Translation(0, 5, 0) * scale * Matrix.RotationY(-ringRotation) * forest.ForestTransform));
                }
                else
                {
                    outter_marker.CurrentAnimation.Add(new NoAnimaionPlayer(Matrix.Translation(0, 5, 0) * scale * Matrix.RotationY(-ringRotation) * mouseHoverResource.Transformation));
                }
            }

            if (mouseHoverHarv != null)
            {
                float  s     = HarvestRingRadius / RingRadius;
                Matrix scale = Matrix.Scaling(s, 1, s);

                outter_marker.CurrentAnimation.Clear();
                outter_marker.CurrentAnimation.Add(new NoAnimaionPlayer(Matrix.Translation(0, 5, 0) * scale * Matrix.RotationY(-ringRotation) * mouseHoverHarv.Transformation));
            }


            if (selectedHarv != null)
            {
                float  s     = HarvestRingRadius / RingRadius;
                Matrix scale = Matrix.Scaling(s, 1, s);

                inner_marker.CurrentAnimation.Clear();
                inner_marker.CurrentAnimation.Add(new NoAnimaionPlayer(Matrix.Translation(0, 5, 0) * scale * selectedHarv.Transformation));
            }
        }
Esempio n. 3
0
 public void FindResources(List <NaturalResource> resList)
 {
     nearResource.Clear();
     for (int i = 0; i < resList.Count; i++)
     {
         if (Type == CityType.Green)
         {
             if (resList[i].Type == NaturalResourceType.Wood)
             {
                 ForestObject forest = (ForestObject)resList[i];
                 float        d      = Vector3.Distance(forest.ForestCenter, this.Position);
                 if (d < gatherDistance)
                 {
                     nearResource.Add(resList[i]);
                 }
             }
         }
         else if (Type == CityType.Oil)
         {
             if (resList[i].Type == NaturalResourceType.Oil)
             {
                 float d = Vector3.Distance(resList[i].Position, this.Position);
                 if (d < gatherDistance)
                 {
                     nearResource.Add(resList[i]);
                 }
             }
         }
     }
     if (Type == CityType.Green)
     {
         nearResource.Sort(CamparisionForest);
     }
     else
     {
         nearResource.Sort(Camparision);
     }
 }
Esempio n. 4
0
        /// <summary>
        /// 初始化自然资源
        /// </summary>
        void InitializeNaturalResource()
        {
            FileLocation fl = FileSystem.Instance.Locate("resources.xml", GameFileLocs.Config);
            GameConfiguration resCon = new GameConfiguration(fl);
            GameConfiguration.ValueCollection resVals = resCon.Values;

            List<NaturalResource> resources = new List<NaturalResource>(MaxCities);

            foreach (GameConfigurationSection sect in resVals)
            {
                string type = sect.GetString("Type", string.Empty).ToLowerInvariant();

                if (type == "wood")
                {
                    ForestObject forest = new ForestObject(this);
                    forest.Parse(sect);
                    resources.Add(forest);

                }
                else if (type == "petro")
                {
                    OilFieldObject fld = new OilFieldObject(this);
                    fld.Parse(sect);
                    resources.Add(fld);
                }           
            }
            naturalResource = resources.ToArray();

            for (int i = 0; i < cities.Length; i++)
            {
                if ( cities[i].Type == CityType.Oil || cities[i].Type == CityType.Green)
                {
                    ((GatherCity)cities[i]).FindResources(resources);
                }
            }   


        }