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); } } }
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); } } }
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; } }
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; }
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()); }
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); } } }); } }