Beispiel #1
0
        //-----------------------------------------------------------------------------------------------
        public InfluenceMapPoint ConvertWorldPosToMapPos(InfluenceObjectWorldPoint objectWorldPos)
        {
            InfluenceMapPoint mapPos;

            mapPos.x = (uint)Math.Round((objectWorldPos.x / GameMapDimensions.x) * (BaseMap.INFLUENCE_MAP_RESOLUTION));
            mapPos.y = (uint)Math.Round((objectWorldPos.y / GameMapDimensions.y) * (BaseMap.INFLUENCE_MAP_RESOLUTION));
            return(mapPos);
        }
Beispiel #2
0
        //-----------------------------------------------------------------------------------------------
        public void GenerateInfluenceMaps()
        {
            InfluenceSystem influenceSystemRef = InfluenceSystem.GetInstance();
            List <BaseMap>  baseMapsToGenerate = influenceSystemRef.InfluenceMaps;

            foreach (BaseMap baseMap in baseMapsToGenerate)
            {
                baseMap.Reset();

                List <IInfluenceObject> objectsForMap = influenceSystemRef.GetAllObjectsWithTag(baseMap.ObjectTag);
                if (objectsForMap == null)
                {
                    continue;
                }

                List <InfluenceTemplate> templatesForMap = influenceSystemRef.GetInfluencesTemplatesWithID(baseMap.InfluenceID);
                if (templatesForMap == null)
                {
                    throw new ArgumentNullException("templatesForMap");
                }

                foreach (IInfluenceObject influenceObject in objectsForMap)
                {
                    uint influenceSize = influenceObject.GetTemplateSizeForInfluenceType(baseMap.InfluenceID);
                    InfluenceTemplate templateToApply = GetInfluenceTemplateForSize(templatesForMap, influenceSize);
                    if (templateToApply == null)
                    {
                        throw new ArgumentNullException("templateToApply");
                    }

                    InfluenceObjectWorldPoint objWorldPos = influenceObject.WorldPosition;
                    InfluenceMapPoint         mapPos      = ConvertWorldPosToMapPos(objWorldPos);
                    baseMap.ApplyTemplate(templateToApply, mapPos.x, mapPos.y);
                }
            }
        }