public void Remove(Blockade blockade) { if (blockades.Remove(blockade)) { SendEvents(blockade, m => m.OnUnblock); } }
public void Add(Blockade blockade) { if (!blockades.Contains(blockade)) { SendEvents(blockade, m => m.OnBlock); blockades.Add(blockade); } }
private void SendEvents(Blockade blockade, Func <EventMapping, Action> handler) { var type = blockade.BlockadeType; foreach (var pair in mapping) { if (((type & pair.Key) > 0) && !blockades.Any(b => (b.BlockadeType & pair.Key) > 0)) { handler(pair.Value).Invoke(); } } }
void GenerateInEditor() { Generator gen = FindObjectOfType <Generator>(); Transform combinations = Instantiate(gen.CombinationStartPrefab, Vector3.zero, Quaternion.identity, null).transform; for (int i = 0; i < combination.elements.Length; i++) { Vector3 pos = new Vector3(0, 0, combination.elements[i].positionZ); Quaternion rotation = combination.elements[i].rotation; Blockade blockade = Instantiate(gen.obstackles[combination.elements[i].prefab], pos, rotation, combinations).GetComponent <Blockade>(); blockade.speed = combination.elements[i].speed; } }
public void Init() { _active = false; //get block and get parameters Blockade blockAde = gameObject.GetComponent <Blockade>(); Assertion.Check(blockAde != null); _prefabName = blockAde._gateForGame; _fadeoutSfxName = blockAde._fadeinSfxName; _fadeinSfxName = blockAde._fadeinSfxName; _fadeoutEffect = blockAde._fadeoutEffect; }
void GenerateNewCombination(int number) { combinations[number] = Instantiate(CombinationStartPrefab, Vector3.zero, Quaternion.identity, transform).transform; Color color = GetColor(); int id = Random.Range(0, levels.Length); for (int i = 0; i < levels[id].elements.Length; i++) { Vector3 pos = new Vector3(0, 0, levels[id].elements[i].positionZ); Quaternion rotation = levels[id].elements[i].rotation; Blockade blockade = Instantiate(obstackles[levels[id].elements[i].prefab], pos, rotation, combinations[number]).GetComponent <Blockade>(); blockade.speed = levels[id].elements[i].speed; blockade.gameObject.GetComponent <Renderer>().material.color = color; } float newDistance = levels[id].elements[levels[id].elements.Length - 1].positionZ; combinations[number].Translate(0, 0, startPosition); startPosition += newDistance + levels[id].freeSpace; }
void Start() { blockade = GetComponent<Blockade>(); }