コード例 #1
0
    public void Training()
    {
        timer += Time.deltaTime;

        if (timer > trainingTime)
        {
            Instantiate(unitToTrain, spawnPoint.transform.position, Quaternion.identity);

            timer = 0;

            state = BarracksState.Idle;
        }
    }
コード例 #2
0
        private void TransitionToBarracksState(BarracksState barracksState)
        {
            switch (barracksState)
            {
            case BarracksState.UNDER_CONSTRUCTION:
                SetCanAcceptResources(true);
                npcSpawnerBehaviour.SetSpawningEnabled(false);
                npcSpawnerBehaviour.ResetCooldowns();
                break;

            case BarracksState.CONSTRUCTION_FINISHED:
                SetCanAcceptResources(false);
                npcSpawnerBehaviour.SetSpawningEnabled(true);
                npcSpawnerBehaviour.ResetCooldowns();
                break;
            }
            barracksInfo.Send(new BarracksInfo.Update().SetBarracksState(barracksState));
        }
コード例 #3
0
        private void SwitchToBarracksState(BarracksState barracksState)
        {
            switch (barracksState)
            {
            case BarracksState.UNDER_CONSTRUCTION:
            {
                buildingModel.SetActive(false);
                stockpileModel.SetActive(true);
            }
            break;

            case BarracksState.CONSTRUCTION_FINISHED:
            {
                buildingModel.SetActive(true);
                stockpileModel.SetActive(false);
            }
            break;
            }
        }
コード例 #4
0
        public static Entity CreateBarracksTemplate(Coordinates initialPosition, BarracksState barracksState, uint teamId)
        {
            var template = EntityBuilder.Begin()
                           .AddPositionComponent(initialPosition.ToUnityVector(), CommonRequirementSets.PhysicsOnly)
                           .AddMetadataComponent(SimulationSettings.BarracksPrefabName)
                           .SetPersistence(true)
                           .SetReadAcl(CommonRequirementSets.PhysicsOrVisual)
                           .AddComponent(new UnityWorkerAuthorityCheck.Data(), CommonRequirementSets.PhysicsOnly)
                           .AddComponent(new TransformComponent.Data((uint)(UnityEngine.Random.value * 360)), CommonRequirementSets.PhysicsOnly)
                           .AddComponent(new BarracksInfo.Data(barracksState), CommonRequirementSets.PhysicsOnly)
                           .AddComponent(new Health.Data(barracksState == BarracksState.CONSTRUCTION_FINISHED ? SimulationSettings.BarracksMaxHealth : 0, SimulationSettings.BarracksMaxHealth, true), CommonRequirementSets.PhysicsOnly)
                           .AddComponent(new Flammable.Data(false, false, FireEffectType.BIG), CommonRequirementSets.PhysicsOnly)
                           .AddComponent(new StockpileDepository.Data(barracksState == BarracksState.UNDER_CONSTRUCTION), CommonRequirementSets.PhysicsOnly)
                           .AddComponent(new NPCSpawner.Data(barracksState == BarracksState.CONSTRUCTION_FINISHED, new Map <NPCRole, float> {
                { NPCRole.LUMBERJACK, SimulationSettings.LumberjackSpawningCooldown }, { NPCRole.WIZARD, SimulationSettings.WizardSpawningCooldown }
            }), CommonRequirementSets.PhysicsOnly)
                           .AddComponent(new TeamAssignment.Data(teamId), CommonRequirementSets.PhysicsOnly)
                           .Build();

            return(template);
        }
コード例 #5
0
        public static SnapshotEntity CreateBarracksTemplate(Coordinates initialPosition, BarracksState barracksState, uint teamId)
        {
            var template = new SnapshotEntity {
                Prefab = SimulationSettings.BarracksPrefabName
            };

            template.Add(new FSimAuthorityCheck.Data());
            template.Add(new TransformComponent.Data(initialPosition, (uint)(UnityEngine.Random.value * 360)));
            template.Add(new BarracksInfo.Data(barracksState));
            template.Add(new Health.Data(barracksState == BarracksState.CONSTRUCTION_FINISHED ? SimulationSettings.BarracksMaxHealth : 0, SimulationSettings.BarracksMaxHealth, true));
            template.Add(new Flammable.Data(false, false, FireEffectType.BIG));
            template.Add(new StockpileDepository.Data(barracksState == BarracksState.UNDER_CONSTRUCTION));
            template.Add(new NPCSpawner.Data(barracksState == BarracksState.CONSTRUCTION_FINISHED, new Map <NPCRole, float> {
                { NPCRole.LUMBERJACK, 0f }, { NPCRole.WIZARD, 0f }
            }));
            template.Add(new TeamAssignment.Data(teamId));

            var permissions = Acl.Build()
                              .SetReadAccess(CommonPredicates.PhysicsOrVisual)
                              .SetWriteAccess <FSimAuthorityCheck>(CommonPredicates.PhysicsOnly)
                              .SetWriteAccess <TransformComponent>(CommonPredicates.PhysicsOnly)
                              .SetWriteAccess <Flammable>(CommonPredicates.PhysicsOnly)
                              .SetWriteAccess <BarracksInfo>(CommonPredicates.PhysicsOnly)
                              .SetWriteAccess <Health>(CommonPredicates.PhysicsOnly)
                              .SetWriteAccess <Flammable>(CommonPredicates.PhysicsOnly)
                              .SetWriteAccess <StockpileDepository>(CommonPredicates.PhysicsOnly)
                              .SetWriteAccess <NPCSpawner>(CommonPredicates.PhysicsOnly)
                              .SetWriteAccess <TeamAssignment>(CommonPredicates.PhysicsOnly)
                              .SetWriteAccess <Flammable>(CommonPredicates.PhysicsOnly);

            template.SetAcl(permissions);

            return(template);
        }
コード例 #6
0
 public void TrainKnight()
 {
     unitToTrain  = knight;
     trainingTime = knightTrainTime;
     state        = BarracksState.Training;
 }
コード例 #7
0
 public void TrainArcher()
 {
     unitToTrain  = archer;
     trainingTime = archerTrainTIme;
     state        = BarracksState.Training;
 }
コード例 #8
0
 private void SetBarracksTag(BarracksState barracksState)
 {
     gameObject.tag = barracksStateToTag[barracksState];
 }