private void FireBullet(GameObject target) { Quaternion desRotation = Quaternion.LookRotation(target.transform.position - transform.position, Vector3.up); GameObject bullet = Spawner.Instance.SpawnBullet(turret.bullet.prefab, transform.position, desRotation); bullet.transform.rotation = Quaternion.LookRotation((SetBulletDirection(target.transform.position) - bullet.transform.position)); turret.salvoReloadTime = 0.0000001f; bullet.GetComponent <BulletController>().Initiate(@object, turret.bullet); audioSource.Play(); //salvoCount++; if (this.FireStage == FireStage.READY) { if (turret.shotsPerSalvo == 1) { this.FireStage = FireStage.RELOADING; } else { FireStage = FireStage.FIRING_SALVO; } } else { salvoCount++; } //isReloading = true; //salvoTimer.timerSet = true; }
public override void fire(Vector2 dir) { if (m_timer > m_minTimeBetweenFire) { m_timer = 0; switch (m_current) { case FireStage.Ready: gameObject.AddComponent<BoxCollider>(); gameObject.AddComponent<Rigidbody>(); rigidbody.constraints = RigidbodyConstraints.FreezePositionZ; m_current = FireStage.Firing; rigidbody.AddForce(dir.x * m_power, dir.y * m_power, 0); break; case FireStage.Firing: realIn(); break; case FireStage.Swinging: Debug.Log("drop"); m_hookerTrans.parent = null; transform.parent = m_real; m_hooker.Drop(); realIn(); break; } } }
public void StopFire() { _currentStage = _tileRenderer.Tile.StartingFireStage; _tileRenderer.ClearFire(); Messenger <Vector2> .Broadcast("stopFireLoop", _tileRenderer.Tile.Position); Messenger.Broadcast("playFireExtinguished"); }
public TurretControllerPersistance(long targetID, long firePriorityID, FireStage fireStage, int turretIndex, Timer reloadTimer, Turret turret, TurretType turretType, int salvoCount, Timer salvoTimer) { this.targetID = targetID; this.firePriorityID = firePriorityID; this.fireStage = fireStage; this.turretIndex = turretIndex; this.reloadTimer = reloadTimer; this.turret = turret; this.turretType = turretType; this.salvoCount = salvoCount; this.salvoTimer = salvoTimer; }
public override void OnCollisionEnter(Collision other) { if ((m_current==FireStage.Firing)&&(other.gameObject.tag=="Grabbable")) { Destroy(collider); Destroy(rigidbody); transform.parent = null; m_hooker.Swing = true; m_hookerTrans.parent = transform; m_current = FireStage.Swinging; } }
public ISerializable <TurretControllerPersistance> SetObject(TurretControllerPersistance serializedObject) { this.target = serializedObject.targetID != -1 ? MapObject.FindByID(serializedObject.targetID).gameObject : null; this.firePriority = serializedObject.firePriorityID != -1 ? MapObject.FindByID(serializedObject.firePriorityID).gameObject : null; //this.isReloading = serializedObject.isReloading; this.FireStage = serializedObject.fireStage; this.reloadTimer = serializedObject.reloadTimer; //this.reloadTimer.action = this.ReloadControl; this.salvoCount = serializedObject.salvoCount; this.salvoTimer = serializedObject.salvoTimer; //this.salvoTimer.action = this.ShotSalvo; this.turret = serializedObject.turret; this.turretType = serializedObject.turretType; return(this); }
public override void GameUpdate() { // Not on fire if (_currentStage == FireStage.NotFlammable || _currentStage == FireStage.Flammable || _currentStage == FireStage.BurntOut) { return; } // Debug Only #if UNITY_EDITOR RemainingStageTime = (_lastStageChange + _stageLifetimes [(int)_currentStage - 1]) - Time.realtimeSinceStartup; #endif if (Time.realtimeSinceStartup - _lastStageChange >= _stageLifetimes[(int)_currentStage - 1]) { // On next stage _currentStage = (FireStage)((int)_currentStage + 1); // Update sound intensity. Messenger <Vector2, float> .Broadcast("setFireLoopIntensity", _tileRenderer.Tile.Position, ((int)_currentStage - 1) * 3); if ((_currentStage == FireStage.BurntOut)) { // We're done! _tileRenderer.ClearFire(); _tileRenderer.Tile.spriteRenderer.sprite = ScorcedTileSprite; // Stop the sound. Messenger <Vector2> .Broadcast("stopFireLoop", _tileRenderer.Tile.Position); Messenger.Broadcast("playBuildingDestruction"); Messenger <Vector2> .Broadcast("buildingDestroyed", _tileRenderer.Tile.Position); } else // Render next fire stage. { _tileRenderer.RenderFire(FirePrefabs.First(p => p.Stage == _currentStage).Prefab); } _lastStageChange = Time.realtimeSinceStartup; } }
public void StartFire(FireStage stage) { _currentStage = stage; _lastStageChange = Time.realtimeSinceStartup; if (stage == FireStage.BurntOut || stage == FireStage.Flammable || stage == FireStage.NotFlammable) { _tileRenderer.ClearFire(); } else { if (stage == FireStage.Kindling) { // Start the sounds. Messenger <Vector2, float> .Broadcast("playFireLoop", _tileRenderer.Tile.Position, 0f); Messenger.Broadcast("playFireStart"); } _tileRenderer.RenderFire(FirePrefabs.First(p => p.Stage == _currentStage).Prefab); } }
private void Update() { if (this.FireStage == FireStage.READY) { if ((firePriority != null && IsInRange(firePriority)) || (target != null && IsInRange(target))) { FireBullet(firePriority != null ? firePriority : target); } } else if (this.FireStage == FireStage.FIRING_SALVO) { salvoTimer.Execute(); if (salvoTimer.IsFinished) { if (firePriority != null || target != null) { FireBullet(firePriority != null ? firePriority : target); } if (salvoCount < turret.shotsPerSalvo) { salvoTimer.ResetTimer(); } else { this.FireStage = FireStage.RELOADING; } } } else if (this.FireStage == FireStage.RELOADING) { reloadTimer.Execute(); if (reloadTimer.IsFinished) { FireStage = FireStage.READY; } } }
public float RemainingStageTime = 0; // This is for debug only. #endif #region Methods public override void GameUpdate() { // Not on fire if (_currentStage == FireStage.NotFlammable || _currentStage == FireStage.Flammable || _currentStage == FireStage.BurntOut) { return; } // Debug Only #if UNITY_EDITOR RemainingStageTime = (_lastStageChange + _stageLifetimes [(int)_currentStage - 1]) - Time.realtimeSinceStartup; #endif if(Time.realtimeSinceStartup - _lastStageChange >= _stageLifetimes[(int)_currentStage - 1]) { // On next stage _currentStage = (FireStage)((int)_currentStage + 1); // Update sound intensity. Messenger<Vector2, float>.Broadcast ("setFireLoopIntensity", _tileRenderer.Tile.Position, ((int)_currentStage - 1) * 3); if((_currentStage == FireStage.BurntOut)) { // We're done! _tileRenderer.ClearFire(); _tileRenderer.Tile.spriteRenderer.sprite = ScorcedTileSprite; // Stop the sound. Messenger<Vector2>.Broadcast ("stopFireLoop", _tileRenderer.Tile.Position); Messenger.Broadcast ("playBuildingDestruction"); Messenger<Vector2>.Broadcast ("buildingDestroyed", _tileRenderer.Tile.Position); } else { // Render next fire stage. _tileRenderer.RenderFire (FirePrefabs.First (p => p.Stage == _currentStage).Prefab); } _lastStageChange = Time.realtimeSinceStartup; } }
private void realIn() { Debug.Log("realling in"); m_current = FireStage.Returning; Destroy(collider); Destroy(rigidbody); }
public void StopFire() { _currentStage = _tileRenderer.Tile.StartingFireStage; _tileRenderer.ClearFire (); Messenger<Vector2>.Broadcast ("stopFireLoop", _tileRenderer.Tile.Position); Messenger.Broadcast ("playFireExtinguished"); }
public void Start() { m_current = FireStage.Ready; m_real = transform.parent; m_hookerTrans = m_hooker.transform; }
public void SetFire(FireStage severity) { _flammableTile.StartFire(severity); }
public void StartFire(Vector2 location, FireStage severity) { var tile = Map.GetTile ((int)location.x, (int)location.y); tile.SetFire (severity); _fires.Add (tile); }
public void StartFire(FireStage stage) { _currentStage = stage; _lastStageChange = Time.realtimeSinceStartup; if (stage == FireStage.BurntOut || stage == FireStage.Flammable || stage == FireStage.NotFlammable) { _tileRenderer.ClearFire (); } else { if(stage == FireStage.Kindling) { // Start the sounds. Messenger<Vector2, float>.Broadcast ("playFireLoop", _tileRenderer.Tile.Position, 0f); Messenger.Broadcast ("playFireStart"); } _tileRenderer.RenderFire (FirePrefabs.First (p => p.Stage == _currentStage).Prefab); } }
public void SetFire(FireStage severity) { _flammableTile.StartFire (severity); }
public void Update() { // Debug.Log(m_current); m_timer = m_timer + Time.deltaTime; switch (m_current) { case FireStage.Returning: Vector3 returnVec = transform.localPosition.normalized*(-1); returnVec.z = 0; if (transform.localPosition.magnitude < m_returnSpeed*Time.deltaTime*2) { transform.localPosition = Vector3.zero; transform.localRotation = Quaternion.identity; if (m_hookedObject != null) { m_hookedObject.transform.parent = null; } m_current = FireStage.Ready; } else { transform.localPosition= transform.localPosition + (returnVec * Time.deltaTime* m_returnSpeed); } break; case FireStage.Swinging: Vector3 dir=m_hookerTrans.localPosition.normalized*(-1); m_hookerTrans.localPosition = m_hookerTrans.localPosition + (dir * Time.deltaTime * m_returnSpeed); break; } }
void OnFireStarted(Vector2 tile, FireStage stage) { _activeFires++; }