Example #1
0
        private string RenderResource(ResourceRegistrationType registrationType,
                                      ResourcePlacementType placementType, bool includeAsBundle = false)
        {
            var resourcesEnqueued =
                _resourceRegistrations[registrationType].Where(x => x.Enqueued && x.PlacementType == placementType)
                .ToList();

            //set all as unrendered because we are using singleton instance
            foreach (var resource in resourcesEnqueued)
            {
                resource.Rendered = false;
            }

            var renderFormat = registrationType == ResourceRegistrationType.Style
                ? "<link href='{0}' rel='stylesheet' type='text/css' />"
                : "<script src='{0}' type='text/javascript'></script>";
            var renderBuilder = new StringBuilder();

            foreach (var resource in resourcesEnqueued)
            {
                renderBuilder.Append(_RenderSingleResource(resource, renderFormat));
            }

            return(renderBuilder.ToString());
        }
Example #2
0
        public void EnqueueStyles(string[] resourceNames, string[] requiredResourceNames, ResourcePlacementType placementType = ResourcePlacementType.HeadTag)
        {
            if (requiredResourceNames == null)
                requiredResourceNames = new string[] { };

            //append required resources
            foreach (var resourceName in requiredResourceNames)
            {
                EnqueueResource(resourceName, ResourceRegistrationType.Script, placementType, null);
            }

            //first get the dependent resources
            var dependentResources =
                _resourceRegistrations[ResourceRegistrationType.Style].Where(
                    x => requiredResourceNames.Contains(x.ResourceName)).ToList();

            //and now the actual resources
            foreach (var resourceName in resourceNames)
            {
                EnqueueResource(resourceName, ResourceRegistrationType.Style, placementType, dependentResources);
            }
        }
        private void SpawnResourcesAndDoodads()
        {
            Transform resources = transform.Find("Resources");
            Transform doodads   = transform.Find("Doodads");

            ClearResources(resources, doodads);

            // TODO: get rid of this water junk
            GameObject water = GameObject.Find("Water4Simple");

            List <GameObject> doodadPrefabs = ListUtility.From(
                (GameObject)Resources.Load("Doodads/DeadTree6"),
                (GameObject)Resources.Load("Doodads/DeadTree7"),
                (GameObject)Resources.Load("Doodads/Smallbush4"),
                (GameObject)Resources.Load("Doodads/SmallRock4"),
                (GameObject)Resources.Load("Doodads/SmallRock7"));

            var prefabs = new Dictionary <ResourcePlacementType, IReadOnlyList <GameObject> > {
                [ResourcePlacementType.Trees]   = ListUtility.From(Resources.Load <GameObject>("Buildings/WoodSource")),
                [ResourcePlacementType.Stone]   = ListUtility.From(Resources.Load <GameObject>("Buildings/StoneRocks")),
                [ResourcePlacementType.Gold]    = ListUtility.From(Resources.Load <GameObject>("Buildings/GoldRocks")),
                [ResourcePlacementType.Fish]    = ListUtility.From(Resources.Load <GameObject>("Prefabs/FishingHole")),
                [ResourcePlacementType.Berries] = ListUtility.From(Resources.Load <GameObject>("Buildings/ForagingGround")),
                [ResourcePlacementType.Doodad]  = doodadPrefabs,
            };

            TerrainData terrainData = GetComponent <Terrain>().terrainData;
            float       waterHeight = (water.transform.position.y - transform.position.y) / terrainData.size.y;

            ResourcePlacer placer = new ResourcePlacer(terrainData, waterHeight, newGameSettings.seed, newGameSettings.ResourceSettings);
            Dictionary <ResourcePlacementType, List <GameObject> > placedResources = ((ResourcePlacementType[])Enum.GetValues(typeof(ResourcePlacementType)))
                                                                                     .ToDictionary(it => it, _ => new List <GameObject>());

            const int resolution = 45;

            for (int x = 0; x < resolution; ++x)
            {
                for (int y = 0; y < resolution; ++y)
                {
                    float u = (x + 0.5f) / resolution;
                    float v = (y + 0.5f) / resolution;

                    ResourcePlacementType type = placer.GetPlacementType(u, v);

                    if (type == ResourcePlacementType.None)
                    {
                        continue;
                    }

                    int        index    = mRandom.Next(0, prefabs[type].Count);
                    GameObject prefab   = prefabs[type][index];
                    GameObject instance = GameController.Factory.Instantiate(prefab);

                    placedResources[type].Add(instance);
                    instance.transform.position = RandomizePosition(u, v, terrainData);
                    instance.transform.SetParent(type == ResourcePlacementType.Doodad ? doodads : resources);

                    if (type == ResourcePlacementType.Fish)
                    {
                        instance.transform.position = new Vector3(
                            instance.transform.position.x,
                            water.transform.position.y,
                            instance.transform.position.z);
                    }
                    else
                    {
                        instance.GetComponent <NeolithicObject>().SnapToGround();
                    }
                }
            }

            ClusterResources(placedResources[ResourcePlacementType.Trees], 200.0f, 3.0f);
            ClusterResources(placedResources[ResourcePlacementType.Berries], 400.0f, 12.0f);
        }
Example #4
0
        public static MvcHtmlString RenderScripts(this HtmlHelper htmlHelper, ResourcePlacementType placementType, bool includeAsBundle = false)
        {
            var pageGenerator = mobSocialEngine.ActiveEngine.Resolve <IPageGenerator>();

            return(MvcHtmlString.Create(pageGenerator.RenderScripts(placementType, includeAsBundle)));
        }
Example #5
0
 public static void EnqueueScripts(this HtmlHelper htmlHelper, string[] resourceNames, string[] requiredResourceNames = null, ResourcePlacementType placementType = ResourcePlacementType.BeforeEndBodyTag)
 {
     mobSocialEngine.ActiveEngine.Resolve <IPageGenerator>().EnqueueScripts(resourceNames, requiredResourceNames, placementType);
 }
Example #6
0
        public void EnqueueScripts(string[] resourceNames, string[] requiredResourceNames, ResourcePlacementType placementType = ResourcePlacementType.BeforeEndBodyTag)
        {
            if (requiredResourceNames == null)
            {
                requiredResourceNames = new string[] {}
            }
            ;

            //append required resources
            foreach (var resourceName in requiredResourceNames)
            {
                EnqueueResource(resourceName, ResourceRegistrationType.Script, placementType, null);
            }

            //first get the dependent resources
            var dependentResources =
                _resourceRegistrations[ResourceRegistrationType.Script].Where(
                    x => requiredResourceNames.Contains(x.ResourceName)).ToList();

            //and now the actual resources
            foreach (var resourceName in resourceNames)
            {
                EnqueueResource(resourceName, ResourceRegistrationType.Script, placementType, dependentResources);
            }
        }
Example #7
0
        private void EnqueueResource(string resourceName, ResourceRegistrationType resourceRegistrationType, ResourcePlacementType placementType, IList <Resource> dependsOn)
        {
            var registeredResource =
                _resourceRegistrations[resourceRegistrationType].FirstOrDefault(x => x.ResourceName == resourceName);

            if (registeredResource == null)
            {
                //may be this resource will be registered later, do it now
                RegisterResource(resourceName, string.Empty, resourceRegistrationType);

                //query again
                registeredResource =
                    _resourceRegistrations[resourceRegistrationType].First(x => x.ResourceName == resourceName);
            }
            registeredResource.PlacementType = placementType;
            registeredResource.Enqueued      = true;
            if (dependsOn != null)
            {
                registeredResource.DependsOn = dependsOn;
            }
        }
Example #8
0
 public string RenderScripts(ResourcePlacementType placementType, bool includeAsBundle = false)
 {
     return(RenderResource(ResourceRegistrationType.Script, placementType, includeAsBundle));
 }
Example #9
0
        private void EnqueueResource(string resourceName, ResourceRegistrationType resourceRegistrationType, ResourcePlacementType placementType, IList<Resource> dependsOn)
        {
            var registeredResource =
                _resourceRegistrations[resourceRegistrationType].FirstOrDefault(x => x.ResourceName == resourceName);
            if (registeredResource == null)
            {
                //may be this resource will be registered later, do it now
                RegisterResource(resourceName, string.Empty, resourceRegistrationType);

                //query again
                registeredResource =
                _resourceRegistrations[resourceRegistrationType].First(x => x.ResourceName == resourceName);
            }
            registeredResource.PlacementType = placementType;
            registeredResource.Enqueued = true;
            if(dependsOn != null)
                registeredResource.DependsOn = dependsOn;
        }
Example #10
0
        private string RenderResource(ResourceRegistrationType registrationType,
            ResourcePlacementType placementType, bool includeAsBundle = false)
        {
            var resourcesEnqueued =
                _resourceRegistrations[registrationType].Where(x => x.Enqueued && x.PlacementType == placementType)
                    .ToList();

            //set all as unrendered because we are using singleton instance
            foreach (var resource in resourcesEnqueued)
                resource.Rendered = false;

            var renderFormat = registrationType == ResourceRegistrationType.Style
                ? "<link href='{0}' rel='stylesheet' type='text/css' />"
                : "<script src='{0}' type='text/javascript'></script>";
            var renderBuilder = new StringBuilder();
            foreach (var resource in resourcesEnqueued)
            {
               renderBuilder.Append(_RenderSingleResource(resource, renderFormat));
            }

            return renderBuilder.ToString();
        }
Example #11
0
 public string RenderStyles(ResourcePlacementType placementType, bool includeAsBundle = false)
 {
     return RenderResource(ResourceRegistrationType.Style, placementType, includeAsBundle);
 }
 public static MvcHtmlString RenderStyles(this HtmlHelper htmlHelper, ResourcePlacementType placementType, bool includeAsBundle = false)
 {
     var pageGenerator = mobSocialEngine.ActiveEngine.Resolve<IPageGenerator>();
     return MvcHtmlString.Create(pageGenerator.RenderStyles(placementType, includeAsBundle));
 }
 public static void EnqueueStyles(this HtmlHelper htmlHelper, string[] resourceNames, string[] requiredResourceNames = null, ResourcePlacementType placementType = ResourcePlacementType.HeadTag)
 {
     mobSocialEngine.ActiveEngine.Resolve<IPageGenerator>().EnqueueStyles(resourceNames, requiredResourceNames, placementType);
 }
        public static HtmlString RenderScripts(this HtmlHelper htmlHelper, ResourcePlacementType placementType, bool includeAsBundle = false)
        {
            var pageGenerator = DependencyResolver.Resolve <IPageGenerator>();

            return(new HtmlString(pageGenerator.RenderScripts(placementType, includeAsBundle)));
        }
 public static void EnqueueStyles(this HtmlHelper htmlHelper, string[] resourceNames, string[] requiredResourceNames = null, ResourcePlacementType placementType = ResourcePlacementType.HeadTag)
 {
     DependencyResolver.Resolve <IPageGenerator>().EnqueueStyles(resourceNames, requiredResourceNames, placementType);
 }