示例#1
0
        /// <summary>
        /// Using a blueprint specified by ID, returns a build request. The build request will contain the
        /// gameobject and sprite specified in the model.
        /// </summary>
        /// <returns>The build request.</returns>
        public BlueprintBuildRequest CreateBuildRequest(TechTreeUnit factoryUnit, string ID)
        {
            if (!HasBeenBuilt)
            {
                return(new BlueprintBuildRequest()
                {
                    status = BuildStatus.FactoryNotBuilt
                });
            }
            var bpc = GetValidBPC(ID);

            if (factoryUnit.Level < bpc.blueprint.requiredFactoryLevel)
            {
                return(new BlueprintBuildRequest()
                {
                    status = BuildStatus.FactoryNotHighEnoughLevel
                });
            }
            foreach (var p in bpc.blueprint.prerequisites)
            {
                var pc = controller.blueprints [p.blueprint.ID];
                if (!pc.HasBeenBuilt)
                {
                    return(new BlueprintBuildRequest()
                    {
                        status = BuildStatus.MissingPrerequisite, prerequisite = p
                    });
                }
                var requiredLevel = p.level;
                if (requiredLevel > 0)
                {
                    var maxLevel = (from i in pc.units select i.Level).Max();
                    if (maxLevel < requiredLevel)
                    {
                        return(new BlueprintBuildRequest()
                        {
                            status = BuildStatus.PrerequisiteNotHighEnoughLevel, prerequisite = p
                        });
                    }
                }
            }

            var req = new BlueprintBuildRequest()
            {
                blueprint = bpc.blueprint, percentComplete = 0
            };

            if (blueprint.constructTime <= 0)
            {
                blueprint.constructTime = 0.01f;
            }
            return(req);
        }
示例#2
0
 void Awake()
 {
     this.unit = GetComponent <TechTreeUnit> ();
 }