private void Update() { if (IsAnimateFight) { FightTime -= Time.deltaTime; if (FightTime <= 0) { IsAnimateFight = false; Attacker.gameObject.GetComponent <Animator>().enabled = false; Defender.gameObject.GetComponent <Animator>().enabled = false; Attacker.gameObject.GetComponent <SpriteRenderer>().sprite = DefaultSpriteAttacker; Defender.gameObject.GetComponent <SpriteRenderer>().sprite = DefaultSpriteDefender; Attacker.UpdateHealthText(); Defender.UpdateHealthText(); FightTime = 1f; // Create the animation fight event. But set the needsanimating to false. Meaning that the method Attack.BattleSimulation() is called. var fight = new OnAnimFight { attacker = Attacker, defender = Defender, needsAnimating = false }; EventHandler.dispatch(fight); } } }
private void UpdateSwipeActions(int fingerCount) { for (int i = 0; i < fingerCount; i++) { Touch touch = Input.GetTouch(i); if (touch.phase == TouchPhase.Began && !IsSwipeHappening) { SwipingVector = touch.position; IsSwipeHappening = true; } else if (touch.phase == TouchPhase.Moved && IsSwipeHappening) { Vector2 delta = touch.position - SwipingVector; Debug.Log("----------"); Debug.Log("Swipe Delta: " + delta); Debug.Log("Swipe Deltamag: " + delta.magnitude); Debug.Log("----------"); if (delta.magnitude > minSwipeDistance && Mathf.Abs(delta.x) < swipeVariance) { if (delta.y < 0) { // down swipe IsSwipeHappening = false; OnSwipeAction swipeDown = new OnSwipeAction(fingerCount, false, false, false, true); EventHandler.dispatch(swipeDown); } else if (delta.y > 0) { // Up swipe IsSwipeHappening = false; OnSwipeAction swipeUp = new OnSwipeAction(fingerCount, false, false, true, false); EventHandler.dispatch(swipeUp); } } // Left and right swipe not working yet. else if (delta.magnitude > minSwipeDistance && Mathf.Abs(delta.y) < swipeVariance) { if (delta.x < 0) { // Swipe left //IsSwipeHappening = false; //OnSwipeAction swipe = new OnSwipeAction(fingerCount, true, false, false, false); //EventHandler.dispatch<OnSwipeAction>(swipe); } else if (delta.x > 0) { // Swipe right //IsSwipeHappening = false; //OnSwipeAction swipe = new OnSwipeAction(fingerCount, false, true, false, false); //EventHandler.dispatch<OnSwipeAction>(swipe); } } } else if (touch.phase == TouchPhase.Ended && IsSwipeHappening) { SwipingVector = Vector2.zero; IsSwipeHappening = false; } } }
private void Awake() { movement = GameObjectReferences.GetScriptsGameObject().GetComponent <Movement>(); highlight = GameObjectReferences.GetScriptsGameObject().GetComponent <Highlight>(); EventHandler.register <OnHighlightClick>(BattlePreparation); EventHandler.register <OnAnimFight>(BattleSimulation); }
private void Start() { Vector3 centerWorldSpace = Camera.main.ViewportToWorldPoint(new Vector3(0.5f, 0, 5)); transform.position = new Vector3(centerWorldSpace.x, centerWorldSpace.y + 1, centerWorldSpace.z); EventHandler.register <OnSwipeAction>(SwipeDoneButton); Color col = renderer.material.color; col.a = 0f; renderer.material.color = col; gameLoop = GameObject.Find("_Scripts").GetComponent <GameLoop>(); }
private void Awake() { levelManager = GameObjectReferences.GetGlobalScriptsGameObject().GetComponent <LevelManager>(); movement = GameObjectReferences.GetScriptsGameObject().GetComponent <Movement>(); movement = GameObjectReferences.GetScriptsGameObject().GetComponent <Movement>(); attack = GameObjectReferences.GetScriptsGameObject().GetComponent <Attack>(); animInfo = GameObjectReferences.GetScriptsGameObject().GetComponent <AnimationInfo>(); IsHighlightOn = false; HighlightObjects = new List <HighlightObject>(); EventHandler.register <OnUnitClick>(ShowHighlight); EventHandler.register <OnHighlightClick>(ClickedOnHightLight); }
/// <summary> /// Check if there has been a click. Ifso then raycast and check if there has been clicked on a specific game object. Ifso fire an event with the click object as a parameter. /// </summary> private void CheckObjectsClick() { // Gives errors // if (Input.GetMouseButtonDown(0) && !_manager.SwipeController.IsSwipeHappening) if (Input.GetMouseButtonDown(0)) { var unitClick = new OnUnitClick(); var buildingClick = new OnBuildingClick(); var highlightClick = new OnHighlightClick(); Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { foreach (Unit unit in lm.CurrentLevel.CurrentPlayer.OwnedUnits) { if (unit.UnitGameObject.collider == hit.collider) { unitClick.unit = unit.UnitGameObject; break; } } foreach (Building building in lm.CurrentLevel.CurrentPlayer.OwnedBuildings) { if (building.BuildingGameObject.collider == hit.collider) { buildingClick.building = building.BuildingGameObject; break; } } foreach (HighlightObject highlightObj in highlight.HighlightObjects) { if (highlightObj.collider == hit.collider) { highlightClick.highlight = highlightObj; break; } } } if (unitClick.unit == null && highlightClick.highlight == null && !movement.NeedsMoving || (highlight.IsHighlightOn && unitClick.unit != null)) { highlight.ClearHighlights(); } EventHandler.dispatch(unitClick); EventHandler.dispatch(buildingClick); EventHandler.dispatch(highlightClick); } }
/// <summary> /// Get called whenever an OnHighlightClick is fired. If it is possible it will attack an enemy unit. /// </summary> /// <param Name="evt"></param> public void BattlePreparation(OnHighlightClick evt) { if (evt.highlight != null) { HighlightObject highlightObj = evt.highlight; if (highlight.IsHighlightOn && !movement.NeedsMoving && highlightObj.highlightTypeActive == HighlightTypes.highlight_attack) { UnitGameObject attackingUnit = highlight.UnitSelected; UnitGameObject defendingUnit = highlightObj.Tile.unitGameObject; if (!attackingUnit.UnitGame.HasAttacked) { if (!attackingUnit.UnitGame.HasMoved || (attackingUnit.UnitGame.HasMoved && attackingUnit.UnitGame.CanAttackAfterMove)) { if (TileHelper.IsTileWithinRange(attackingUnit.transform.position, defendingUnit.transform.position, attackingUnit.UnitGame.AttackRange)) { attackingUnit.UnitGame.HasAttacked = true; attackingUnit.UnitGame.HasMoved = true; attackingUnit.UnitGame.PlaySound(UnitSoundType.Attack); highlight.ClearHighlights(); // Check if units are faces the wrong way FacingDirectionUnits(attackingUnit, defendingUnit); // Dispatch the animation fight event. But set the needsanimating to true. OnAnimFight fight = new OnAnimFight(); fight.attacker = attackingUnit; fight.defender = defendingUnit; fight.needsAnimating = true; EventHandler.dispatch(fight); } else { Notificator.Notify("Move to this unit to attack!", 1f); } } } } } }
private void OnDestroy() { EventHandler.unregister <OnAnimFight>(OnFightAnim); }
private void Awake() { FightTime = 1f; EventHandler.register <OnAnimFight>(OnFightAnim); }
private void OnDestroy() { EventHandler.unregister <OnSwipeAction>(SwipeDoneButton); }
private void OnDestroy() { EventHandler.unregister <OnHighlightClick>(BattlePreparation); EventHandler.unregister <OnAnimFight>(BattleSimulation); }
private void OnDestroy() { EventHandler.unregister <OnBuildingClick>(OnBuildingClick); }
public ProductionOverlayMain() { NeedsMoving = false; EventHandler.register <OnBuildingClick>(OnBuildingClick); }
private void OnDestroy() { EventHandler.unregister <OnUnitClick>(ShowHighlight); EventHandler.unregister <OnHighlightClick>(ClickedOnHightLight); }