Exemple #1
0
 public override bool IsBuildingBuilt(BuildingRequirements a_Building)
 {
     if (a_Building == m_HallMageGuild1.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.MageGuild1);
     }
     else if (a_Building == m_HallMageGuild2.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.MageGuild2);
     }
     else if (a_Building == m_HallMageGuild3.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.MageGuild3);
     }
     else if (a_Building == m_HallMageGuild4.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.MageGuild4);
     }
     else if (a_Building == m_HallLighthouse.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.FactionBuilding1);
     }
     else if (a_Building == m_HallBrotherhood.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.FactionBuilding2);
     }
     else if (a_Building == m_HallStables.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.FactionBuilding3);
     }
     else
     {
         return(base.IsBuildingBuilt(a_Building));
     }
 }
    private Dictionary <ResourceType, Dictionary <ResourceType, int> > allHiddenRequirementsCache; // To cache old work

    public HiddenRequirement()
    {
        this.allRequirements            = new Dictionary <ResourceType, BuildingRequirements>();
        this.allHiddenRequirementsCache = new Dictionary <ResourceType, Dictionary <ResourceType, int> >();

        foreach (KeyValuePair <BuildingType, BuildingBlueprint> kvp in BuildingFactory.allBluePrints)
        {
            // Go through all the buildings
            BuildingType      bt        = kvp.Key;
            BuildingBlueprint bluePrint = kvp.Value;

            foreach (IResourceProducer buildingOutput in bluePrint.outputResourceProduction)
            {
                // Consider every output to this building
                ResourceType outputResourceType = buildingOutput.targetResource();

                if (!allRequirements.ContainsKey(outputResourceType))
                {
                    allRequirements[outputResourceType] = new BuildingRequirements();
                }

                // the inputs to this building are a "hidden" extra requirement to the outputs so count them
                allRequirements[outputResourceType].merge(bluePrint.inputResourceCosts);
            }
        }
    }
Exemple #3
0
    Vector2 PlaceBuilding(Vector3 clickPoint, GameObject gameObject)
    {
        var finalPosition = GetNearestPointOnGrid(clickPoint);

        GO = Instantiate(gameObject, finalPosition, Quaternion.identity, this.transform);
        buildingRequirements = GO.GetComponent <BuildingRequirements>();
        return((Vector2)finalPosition);
    }
Exemple #4
0
 public static void Notice(string ScriptName, BuildingRequirements Requirements)
 {
     Log.Notice(ScriptName, "Required resources to build " + Requirements.TypeName + " are:");
     foreach (ResourceEnumerator _e in Requirements.ResourceRequirements)
     {
         Log.Notice(ScriptName, _e.Resource.Name + " - " + _e.Count);
     }
 }
    // public ThirdPersonCharacter thirdPersonCharacter;



    void Awake()
    {
        agent = this.GetComponent <NavMeshAgent>();
        anim  = this.GetComponent <Animator>();

        // thirdPersonCharacter = GetComponent<PathController>();
        buildingRequirements = GetComponent <BuildingRequirements>();


        // sim.SetActive(false); // let's just turn off the rigid body for now
    }
Exemple #6
0
    void FinalizeBuilding(GameObject gameObject)
    {
        soundInterface.PlayFinalizeStructureSound();


        Cursor.visible = true;



        Vector3 finalizedPosition; // not to be confused with finalPosition

        finalizedPosition = GO.transform.position;
        Quaternion finalizedRotation = GO.transform.rotation;

        Destroy(GO);



        finalGO = (GameObject)Instantiate(gameObject, finalizedPosition, finalizedRotation, this.transform);



        // for preventing the structure changing colors on collider event when we have already set down the building
        buildingRequirements = finalGO.GetComponent <BuildingRequirements>();
        buildingRequirements.structureFinalized = true;


        start = false;

        mobileTouchCamera.lockCamera = false;

        GetComponent <AudioSource>().PlayOneShot(finalizedBuilding, volume);


        // here we will need some way to trigger build events based on building type, we could use the previous events but those are triggered when we first set the building
        // and the purpose here is that we don't want to replace the first build stage right away when the player is still dragging the building, but only when they set the building down
        // which will be another event, so here we will need to trigger an event, and we already have the current build selection type state set above to go by

        // EventManager.TriggerEvent("House1Finalized");

        // what if instead we just simply grab the build component on the object

        // this way the whole building stages component will contain the different model stages attached to each building object, so we simply drag in the appropriate stages for each game object

        BuildingStages buildingStages;

        buildingStages = finalGO.GetComponent <BuildingStages>();
        buildingStages.OnFinalizeBuildingEvent(finalizedRotation);


        EventManager.TriggerEvent("PlacedHouse"); // for sending notification to SimMovementControls
    }
Exemple #7
0
 //Fired when buildingcompleted
 void CheckBuildingRequirements(Building completedBuilding)
 {
     if (buildingState == BuildingState.Locked)
     {
         BuildingRequirements requirements = buildingRequirements.FirstOrDefault(br => br != null && br.buildingName == completedBuilding.buildingName && br.level == completedBuilding.level);
         if (requirements != null && !requirements.completed)
         {
             requirements.completed = true;
             if (!buildingRequirements.Any(t => t.completed == false))
             {
                 BuildingUnlock();
             }
         }
     }
 }
Exemple #8
0
        /// <summary>
        ///     Adds a new building requirement to profile.
        /// </summary>
        /// <param name="type">Structure type.</param>
        /// <param name="level">Structure level.</param>
        /// <param name="id">Id value.</param>
        /// <returns></returns>
        public BuildingData AddBuildingRequirement(
            BuildingType type,
            int level,
            int id = 0)
        {
            if (BuildingRequirements.Any(i => i.Type == type))
            {
                return(BuildingRequirements.First(i => i.Type == type));
            }

            var br = new BuildingData(id, type, level);

            BuildingRequirements.Add(br);
            return(br);
        }
 // This should probably be moved to some kind of dictionary solution
 public virtual bool IsBuildingBuilt(BuildingRequirements a_Building)
 {
     if (a_Building == m_HallTownHall.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.TownHall);
     }
     else if (a_Building == m_HallCityHall.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.CityHall);
     }
     else if (a_Building == m_HallCapitol.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Capitol);
     }
     else if (a_Building == m_HallFort.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Fort);
     }
     else if (a_Building == m_HallCitadel.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Citadel);
     }
     else if (a_Building == m_HallCastle.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Castle);
     }
     else if (a_Building == m_HallBlacksmith.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Blacksmith);
     }
     else if (a_Building == m_HallMarket.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Market);
     }
     else if (a_Building == m_HallSilo.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Silo);
     }
     else if (a_Building == m_HallTavern.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Tavern);
     }
     else if (a_Building == m_HallDwelling1.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Dwelling1);
     }
     else if (a_Building == m_HallDwelling1Up.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Dwelling1Up);
     }
     else if (a_Building == m_HallDwelling2.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Dwelling2);
     }
     else if (a_Building == m_HallDwelling2Up.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Dwelling2Up);
     }
     else if (a_Building == m_HallDwelling3.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Dwelling3);
     }
     else if (a_Building == m_HallDwelling3Up.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Dwelling3Up);
     }
     else if (a_Building == m_HallDwelling4.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Dwelling4);
     }
     else if (a_Building == m_HallDwelling4Up.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Dwelling4Up);
     }
     else if (a_Building == m_HallDwelling5.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Dwelling5);
     }
     else if (a_Building == m_HallDwelling5Up.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Dwelling5Up);
     }
     else if (a_Building == m_HallDwelling6.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Dwelling6);
     }
     else if (a_Building == m_HallDwelling6Up.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Dwelling6Up);
     }
     else if (a_Building == m_HallDwelling7.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Dwelling7);
     }
     else if (a_Building == m_HallDwelling7Up.BuildingData.Requirements)
     {
         return(m_BuiltBuildings.Dwelling7Up);
     }
     else
     {
         return(false);
     }
 }