//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; }
public void Appear(Vector3 position, Vector3 scale, CharacterVisual owner) { SetFollowingPoint(owner, gameObject); transform.localScale *= scale.x; PlayAnimation(_idle, true); }
public void Appear(Vector3 position, Vector3 scale, CharacterVisual owner) { SetFollowingPoint(owner, gameObject); transform.localScale *= scale.x; PlayAnimation(_appear, false); _curAnimTrackEntry.Complete += OnAppearComplete; }
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; }
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(); }
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; }
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); }
//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); }
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; }
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); }
/// <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(); }
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); } }