Example #1
0
    public virtual void Start()
    {
        ResetData();
        Health = GetComponentInChildren <Health>();
        if (Health == null)
        {
            var _healthPrefab = Resources.Load <Health>("Prefabs/Mechanics/Health");
            Health = Instantiate(_healthPrefab, transform, false) as Health;
        }

        Stun = GetComponentInChildren <Stun>();
        if (Stun == null)
        {
            var _stunPrefab = Resources.Load <Stun>("Prefabs/Mechanics/Stun");
            Stun = Instantiate(_stunPrefab, transform, false) as Stun;
        }

        AbilityBuilder = new Dictionary <AbilityType, Func <Ability> >()
        {
            { AbilityType.Poke, GetAbility <PokeAbility> },
            { AbilityType.Stun, GetAbility <StunAbility> },
            { AbilityType.Nuke, GetAbility <NukeAbility> },
            { AbilityType.Heal, GetAbility <HealAbility> },
            { AbilityType.Swap, GetAbility <SwapAbility> },
            { AbilityType.Barr, GetAbility <BarrAbility> },
            { AbilityType.Taunt, GetAbility <TauntAbility> },
            { AbilityType.Buff, GetAbility <BuffAbility> },
            { AbilityType.Copy, GetAbility <CopyAbility> },
        };

        Health.Initialize(Data.Health);
        Stun.DoStun(Data.Startstun);

        var uiCircleColliderObject = new GameObject {
            layer = LayerMask.NameToLayer("UI")
        };

        uiCircleColliderObject.transform.position = transform.position;
        uiCircleColliderObject.name = "Selectable" + gameObject.name;
        gameObject.transform.parent = uiCircleColliderObject.transform;
        var uiCircleCollider = uiCircleColliderObject.AddComponent <CircleCollider2D>();

        uiCircleCollider.isTrigger = true;
        uiCircleCollider.radius    = GetComponent <CircleCollider2D>().radius;



        // The collider is trigger
        GetComponent <CircleCollider2D>().isTrigger = true;
        // Make the collider more friendly
        GetComponent <CircleCollider2D>().radius *= 0.0f;
        gameObject.layer = LayerMask.NameToLayer("Ignore Raycast");

        // Register to taunt events
        TauntEventHandler     tauntCb     = (sender, args) => { TauntingTarget = args.TauntingCharacter; };
        TauntOverEventHandler tauntOverCb = (sender, args) => { TauntingTarget = null; };

        TauntAbility.TauntEvent     += tauntCb;
        TauntAbility.TauntOverEvent += tauntOverCb;
        OnDestroyCallbacks          += () =>
        {
            TauntAbility.TauntEvent     -= tauntCb;
            TauntAbility.TauntOverEvent -= tauntOverCb;
        };
    }