コード例 #1
0
    //Public Methods
    public void Init(Party owner, CharInfo charInfo, CharacterVisual charVisual)
    {
        _extraSpellHandler = new ExtraSpellHandler();

        _charVisual = charVisual;
        _charVisual.Event_ActionsFinished += OnCharVisualActionsFinish;
        _charVisual.Event_SpellCast       += OnCharVisualSpellCast;

        _charInfo = charInfo;

        _currentStats = _charInfo.baseStats;
        DivineDebug.Log(moniker + " Created with hp: " + _currentStats.hp + " Shield: " + _currentStats.shield);

        SetOwnerParty(owner);

        _charVisual.charUI.Init(
            _charVisual.Tr_HUD_HelperPos,
            _charVisual.Tr_SelectionButton_HelperPos,
            _charVisual.Tr_decal_HelperPos);

        _charVisual.charUI.SubscribeForSelectTarget(SelectedAsTarget);

        _charVisual.charUI.newCharHUD.Init(_currentStats.maxHp, _currentStats.hp, _currentStats.maxShield, _currentStats.shield, _charInfo.level, side == PartySide.Player, isHero);

        ResetCharacterUIAndEffect();

        _isActive = charInfo.enableInStart;
    }
コード例 #2
0
    public void Appear(Vector3 position, Vector3 scale, CharacterVisual owner)
    {
        SetFollowingPoint(owner, gameObject);

        transform.localScale *= scale.x;

        PlayAnimation(_idle, true);
    }
コード例 #3
0
    public void Appear(Vector3 position, Vector3 scale, CharacterVisual owner)
    {
        SetFollowingPoint(owner, gameObject);

        transform.localScale *= scale.x;

        PlayAnimation(_appear, false);
        _curAnimTrackEntry.Complete += OnAppearComplete;
    }
コード例 #4
0
    private void SetFollowingPoint(CharacterVisual owner, GameObject extraSpellGObj)
    {
        BoneFollower bf = extraSpellGObj.AddComponent <BoneFollower>();

        SkeletonAnimation skA = owner.GetComponentInChildren <SkeletonAnimation>();

        bf.skeletonRenderer   = skA;
        bf.boneName           = "body";
        bf.followBoneRotation = false;
        bf.followSkeletonFlip = false;
    }
コード例 #5
0
    public void Appear(Vector3 position, Vector3 scale, CharacterVisual owner)
    {
        transform.position    = position;
        transform.localScale *= scale.x;

        _skeletonAnim.transform.localPosition = new Vector3(_skeletonAnim.transform.localPosition.x,
                                                            _skeletonAnim.transform.localPosition.y,
                                                            -.01f);

        GoToIdle();
    }
コード例 #6
0
    private void SetFollowingPoint(CharacterVisual owner, GameObject extraSpellGObj)
    {
        BoneFollower bf = extraSpellGObj.AddComponent <BoneFollower>();

        SkeletonAnimation skA = owner.GetComponentInChildren <SkeletonAnimation>();

        string boneName = skA.skeleton.FindBone("Head") != null ? "Head" : "head";

        bf.skeletonRenderer   = skA;
        bf.boneName           = boneName;
        bf.followBoneRotation = false;
        bf.followSkeletonFlip = false;
    }
コード例 #7
0
    public static Character Build(CharInfo chInfo, Party owner, Vector3 position, Quaternion rotation)
    {
        CharacterVisual charV = CharacterLoader.instance.GetCharacterVisual(chInfo.moniker);

        charV.transform.position = position;
        charV.transform.rotation = Quaternion.identity;

        charV.SetGraphicRootOrientation(rotation);

        Character charac = new Character();

        charac.Init(owner, chInfo, charV);

        return(charac);
    }
コード例 #8
0
    //Privates
    private void AddSpell(ExtraSpellType type, Vector3 position, Vector3 scale, CharacterVisual owner)
    {
        if (_dic_extraSpells.ContainsKey(type))
        {
            DivineDebug.Log("Already has this Extra effect: " + type.ToString() + " owner: " + owner.moniker);
            return;
        }

        GameObject prefab = PrefabProvider_Battle.instance.GetPrefab_ExtraSpell(type.ToString());

        GameObject  extraSpellGameObj = GameObject.Instantiate(prefab);
        IExtraSpell extraSp           = extraSpellGameObj.GetComponent <IExtraSpell>();

        extraSp.Appear(position, scale, owner);

        _dic_extraSpells.Add(type, extraSp);
    }
コード例 #9
0
    public void DestroyIt()
    {
        DivineDebug.Log("Deleting Character named: + " + moniker);

        Event_SelectAsTarget = null;
        Event_SpellCast      = null;
        Event_StateChange    = null;

        _extraSpellHandler.Die();
        _extraSpellHandler = null;

        _charVisual.DestroyIt();
        _charVisual = null;

        _charInfo     = null;
        _relatedParty = null;
    }
コード例 #10
0
    public CharacterVisual GetCharacterVisual(Divine.Moniker moniker)
    {
        CharacterVisual result = null;

        for (int i = 0; i < _characters.Count; i++)
        {
            if (_characters[i].moniker == moniker)
            {
                result = _characters[i];
                _characters.Remove(result);
                break;
            }
        }

        if (result == null)
        {
            result = LoadNewCharacter(moniker);
        }

        return(result);
    }
コード例 #11
0
    /// <summary>
    /// Функция инициализации
    /// </summary>
    protected virtual void Initialize()
    {
        rigid = GetComponent <Rigidbody2D>();

        hitBox = GetComponentInChildren <HitBox>();

        if (hitBox != null)
        {
            hitBox.SetEnemies(enemies);
        }

        orientation = (OrientationEnum)Mathf.RoundToInt(Mathf.Sign(transform.localScale.x));

        anim = GetComponentInChildren <CharacterVisual>();
        if (anim != null)
        {
            AnimationEventHandler += anim.AnimateIt;
        }

        employment = maxEmployment;

        FormDictionaries();
    }
コード例 #12
0
    public void SetExtraSpells(BattleFlags prevFlag, BattleFlags newFlag, Vector3 pos, Vector3 scale,
                               CharacterVisual owner, bool isFromTurnStat)
    {
        if (isFromTurnStat)
        {
            foreach (IExtraSpell exsp in _dic_extraSpells.Values)
            {
                exsp.TurnReached();
            }
        }

        if (prevFlag == newFlag)
        {
            return;
        }

        //Damage Return
        bool newFlag_haveDmgRet  = (newFlag & BattleFlags.DamageReturn) == BattleFlags.DamageReturn;
        bool prevFlag_haveDmgRet = (prevFlag & BattleFlags.DamageReturn) == BattleFlags.DamageReturn;

        if (!prevFlag_haveDmgRet && newFlag_haveDmgRet)
        {
            AddSpell(ExtraSpellType.DamageReturn, pos, scale, owner);
        }
        else if (prevFlag_haveDmgRet && !newFlag_haveDmgRet)
        {
            RemoveSpell(ExtraSpellType.DamageReturn);
        }

        //Protect
        bool newFlag_haveProtect  = (newFlag & BattleFlags.Protect) == BattleFlags.Protect;
        bool prevFlag_haveProtect = (prevFlag & BattleFlags.Protect) == BattleFlags.Protect;

        if (!prevFlag_haveProtect && newFlag_haveProtect)
        {
            AddSpell(ExtraSpellType.Protect, pos, scale, owner);
        }
        else if (prevFlag_haveProtect && !newFlag_haveProtect)
        {
            RemoveSpell(ExtraSpellType.Protect);
        }

        //Confuse
        bool newFlag_haveConfuse  = (newFlag & BattleFlags.Confuse) == BattleFlags.Confuse;
        bool prevFlag_haveConfuse = (prevFlag & BattleFlags.Confuse) == BattleFlags.Confuse;

        if (!prevFlag_haveConfuse && newFlag_haveConfuse)
        {
            AddSpell(ExtraSpellType.Confuse, pos, scale, owner);
        }
        else if (prevFlag_haveConfuse && !newFlag_haveConfuse)
        {
            RemoveSpell(ExtraSpellType.Confuse);
        }

        //Burn
        bool newFlag_haveBurn  = (newFlag & BattleFlags.Burn) == BattleFlags.Burn;
        bool prevFlag_haveBurn = (prevFlag & BattleFlags.Burn) == BattleFlags.Burn;

        if (!prevFlag_haveBurn && newFlag_haveBurn)
        {
            AddSpell(ExtraSpellType.Burn, pos, scale, owner);
        }
        else if (prevFlag_haveBurn && !newFlag_haveBurn)
        {
            RemoveSpell(ExtraSpellType.Burn);
        }

        //Poison
        bool newFlag_havePoison  = (newFlag & BattleFlags.Poison) == BattleFlags.Poison;
        bool prevFlag_havePoison = (prevFlag & BattleFlags.Poison) == BattleFlags.Poison;

        if (!prevFlag_havePoison && newFlag_havePoison)
        {
            AddSpell(ExtraSpellType.Poison, pos, scale, owner);
        }
        else if (prevFlag_havePoison && !newFlag_havePoison)
        {
            RemoveSpell(ExtraSpellType.Poison);
        }
    }