protected virtual void DecideWhatToDo()
    {
        //determine what should be done by the world object at the current point in time
        //Debug.Log("make decision for " + ObjectId + ": " + objectName + ", controlled by " + (player == null ? "no one" : player.username));
        Vector3 currentPosition = transform.position;

        nearbyObjects = WorkManager.FindNearbyObjects(currentPosition, detectionRange);
        if (CanAttack())
        {
            List <WorldObject> enemyObjects = new List <WorldObject>();
            foreach (WorldObject nearbyObject in nearbyObjects)
            {
                Resource resource = nearbyObject.GetComponent <Resource>();
                if (resource)
                {
                    continue;
                }
                if (nearbyObject.GetPlayer() != player)
                {
                    enemyObjects.Add(nearbyObject);
                }
            }
            WorldObject closestObject = WorkManager.FindNearestWorldObjectInListToPosition(enemyObjects, currentPosition);
            if (closestObject)
            {
                BeginAttack(closestObject);
            }
        }
    }
Exemple #2
0
    protected virtual void DecideWhatToDo()
    {
        // Determine what should be done by the world object at the current point in time
        Vector3 currentPosition = transform.position;

        nearbyObjects = WorkManager.FindNearbyObjects(currentPosition, detectionRange);

        if (CanAttack())
        {
            List <WorldObject> enemyObjects = new List <WorldObject>();
            foreach (WorldObject nearbyObject in nearbyObjects)
            {
                Resource resource = nearbyObject.GetComponent <Resource>();
                if (resource)
                {
                    continue;
                }
                if (nearbyObject.GetPlayer() != player)
                {
                    enemyObjects.Add(nearbyObject);
                }
            }
            WorldObject closestObject = WorkManager.FindNearestWorldObjectInListToPosition(enemyObjects, currentPosition);
            if (closestObject)
            {
                BeginAttack(closestObject);
            }
        }
    }
Exemple #3
0
    protected override void Awake()
    {
        base.Awake();

        nearbyObjects = WorkManager.FindNearbyObjects(transform.position, detectionRange * 2);
        List <WorldObject> refineryObjects = new List <WorldObject>();

        foreach (WorldObject nearbyObject in nearbyObjects)
        {
            if (nearbyObject.GetPlayer() != player)
            {
                continue;
            }
            Refinery refinery = nearbyObject.GetComponent <Refinery>();
            if (refinery)
            {
                refineryObjects.Add(nearbyObject);
            }
        }

        WorldObject closestObject = WorkManager.FindNearestWorldObjectInListToPosition(refineryObjects, transform.position);

        if (closestObject)
        {
            resourceStore = (Building)closestObject;
        }
    }
Exemple #4
0
    public override void RunEventScript()
    {
        var spawnPoints = WorkManager.FindNearbyObjects <SpawnPoint>(transform.position, spawnPointDetectRange).ToList();

        foreach (var blockingWallParams in blockingWallDefinitions)
        {
            Building blockingWall = enemyPlayer.AddBuilding(
                "BlockingWall",
                blockingWallParams.wallPosition,
                blockingWallParams.wallRotation,
                blockingWallParams.name
                );

            if (blockingWallParams.name == "Back Wall")
            {
                backBlockingDoor = blockingWall;
            }

            if (blockingWallParams.name == "Front Wall")
            {
                frontBlockingDoor = blockingWall;
            }
        }

        spawnPoints.ForEach(p =>
        {
            Unit eventEnemyUnit = enemyPlayer.AddUnit(unit.name, p.transform.position, p.transform.position, p.transform.rotation, null);

            eventEnemyUnits.Add(eventEnemyUnit);
        });

        inProgress = true;
    }
Exemple #5
0
        private void FindNearbyObjects(StateController controller)
        {
            WorldObject        controlledObject = controller.controlledObject;
            Vector3            currentPosition  = controlledObject.transform.position;
            List <WorldObject> nearbyObjects    = WorkManager.FindNearbyObjects(currentPosition, controlledObject.detectionRange);

            controller.nearbyAllies  = WorkManager.GetAllyObjects(nearbyObjects, controlledObject.GetPlayer());
            controller.nearbyEnemies = WorkManager.GetEnemyObjects(nearbyObjects, controlledObject.GetPlayer());
        }
Exemple #6
0
        void Update()
        {
            timeSinceCreated += Time.deltaTime;

            if (timeSinceCreated > delay)
            {
                var nearbyObjects = WorkManager.FindNearbyObjects(transform.position, transform.localScale.x / 2);
                HandleEffect(nearbyObjects);

                AbilityUtils.PlayAbilityVfx(vfxName, transform.position, transform.localScale, transform.rotation);

                // destroy the area of effect
                Destroy(gameObject);
            }
        }
        public override void Act(StateController controller)
        {
            if (state)
            {
                var center        = new List <Flag>(FindObjectsOfType <Flag>()).Find(p => p.name == this.center.name);
                var nearbyObjects = WorkManager.FindNearbyObjects(center.transform.position, radius);

                nearbyObjects.ForEach(obj =>
                {
                    if (obj.name == prefabByName.name)
                    {
                        var stateController = obj.GetStateController();

                        if (stateController && stateController.currentState.name != state.name)
                        {
                            stateController.TransitionToState(state);
                        }
                    }
                });
            }
        }