Modification start date
[BattleCats.git] / Assets / Scripts / ShieldStationScripts / StationShield.cs
blob7fbad1c220d2635deb356acf3cc10164e62edd17
1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
5 public class StationShield : StationAbstract
8 private StationGeneric generic_station;
10 private GameObject m_Shield;
11 private Transform m_ShieldTransform;
12 private float m_ShieldSpeed = 150f;
13 private float m_MinAngle = 60f;
14 private float m_MaxAngle = 210f;
15 private Collider2D m_Collider;
16 private SpriteRenderer m_ShieldSprite;
17 private bool m_FirstUse = true;
19 private float shieldTimer;
20 private bool shieldDirection;
22 private AudioSource shield_full;
24 [SerializeField]
25 private bool m_keepActive = false;
27 void Start()
29 m_Shield = GameObject.FindGameObjectWithTag("Shield");
30 m_Collider = m_Shield.GetComponent<Collider2D>();
31 m_ShieldSprite = m_Shield.GetComponentInChildren<SpriteRenderer>();
32 m_ShieldTransform = m_Shield.transform;
33 //handled by generic_station
34 generic_station = gameObject.AddComponent(typeof(StationGeneric)) as StationGeneric;
35 generic_station.startRoutine(this);
37 m_Collider.enabled = false;
38 m_ShieldSprite.enabled = false;
40 shield_full = GetComponent<AudioSource> ();
42 shieldTimer = 0.0f;
43 shieldDirection = true;
46 void Update()
48 bool inUse = generic_station.get_in_use();
50 if (m_FirstUse && inUse)
52 m_FirstUse = false;
54 if (m_keepActive)
56 m_Collider.enabled = true;
57 m_ShieldSprite.enabled = true;
61 if (!m_keepActive)
63 m_Collider.enabled = inUse;
64 m_ShieldSprite.enabled = inUse;
67 shieldTimer += Time.deltaTime;
68 if (shieldTimer > 0.17f)
70 shield_full.Stop ();
74 public override bool actionPressed()
76 //handled by generic_station
77 return generic_station.actionPressed();
80 public override void fire1Pressed()
84 public override void fire2Pressed()
88 public override void fire3Pressed()
92 public override bool checkDistance(Vector2 caller_location, StationAbstract station)
94 return generic_station.checkDistance(caller_location, station);
97 public override bool IsOccupied(Vector2 caller_location, StationAbstract station)
99 return generic_station.IsOccupied(caller_location, station);
102 public override void directionPressed(Vector3 dir_vec)
104 if (dir_vec.x > 0) // rotate left
106 shieldTimer = 0.0f;
107 if (!shield_full.isPlaying || !shieldDirection)
109 shield_full.Play ();
110 shieldDirection = true;
112 m_ShieldTransform.Rotate(0, 0, -Time.deltaTime * m_ShieldSpeed);
113 if (m_ShieldTransform.localEulerAngles.z > m_MinAngle && m_ShieldTransform.localEulerAngles.z < m_MaxAngle)
115 //m_ShieldTransform.localEulerAngles = new Vector3 (0, 0, m_MaxAngle);
116 shield_full.Stop ();
119 if (dir_vec.x < 0) // rotate right
121 shieldTimer = 0.0f;
122 if (!shield_full.isPlaying || shieldDirection)
124 shield_full.Play ();
125 shieldDirection = false;
127 m_ShieldTransform.Rotate(0, 0, Time.deltaTime * m_ShieldSpeed);
128 if (m_ShieldTransform.localEulerAngles.z > m_MinAngle && m_ShieldTransform.localEulerAngles.z < m_MaxAngle)
130 //m_ShieldTransform.localEulerAngles = new Vector3 (0, 0, m_MinAngle);
131 shield_full.Stop ();
136 protected override void enterStation()
138 //handled by generic_station
142 protected override void exitStation()
144 //handled by generic_station