using System; using UnityEngine; using UnityEngine.UI; // Token: 0x020000DE RID: 222 public class TimelineIcon : MonoBehaviour { // Token: 0x060014AD RID: 5293 RVA: 0x001902D1 File Offset: 0x0018E4D1 private void Awake() { this.tr = base.transform; this.SetAsActive(false); this.speed = 0.5f; } // Token: 0x060014AE RID: 5294 RVA: 0x001902F1 File Offset: 0x0018E4F1 public void Hover(bool state) { if (state) { this.portrait.color = this.hoverColor; return; } this.portrait.color = this.normalColor; } // Token: 0x060014AF RID: 5295 RVA: 0x0019031C File Offset: 0x0018E51C public void Setup(Character newCharacter, int index, bool setIconAtBeginning) { this.character = newCharacter; this.offsetTime = 0f; if (this.character.npc) { this.start = Links.x.hudControl.startEnemy; this.end = Links.x.hudControl.endEnemy; this.action = Links.x.hudControl.actionEnemy; } else { this.start = Links.x.hudControl.startParty; this.end = Links.x.hudControl.endParty; this.action = Links.x.hudControl.actionParty; } Vector3.Distance(this.start.position, this.end.position); this.t = Random.Range(0f, 0.75f); if (!Records.x.turnBased) { this.t = 0f; this.updateTime = 0f; } this.tr.position = Vector3.Lerp(this.start.position, this.end.position, this.t); bool flag = false; if (Records.x.editor && flag) { Links.x.renderPortraits.AddCharacter(this.character, this.character.stats.xmlName, null, true, this, null, null, null); if (this.portrait && this.texturesIdle != null) { this.portrait.texture = this.texturesIdle; } } this.SetAsActive(true); this.Hover(false); this.character.timelineIcon = this; if (this.character == Links.x.combat.characterStartingAttack) { this.tr.position = this.end.position; } if (!Records.x.turnBased && !this.character.moving && setIconAtBeginning) { this.Beginning(); return; } if (!Records.x.turnBased && !setIconAtBeginning) { this.waitingToPickAction = true; } } // Token: 0x060014B0 RID: 5296 RVA: 0x00190538 File Offset: 0x0018E738 public void SetAsActive(bool state) { Image[] array = this.images; for (int i = 0; i < array.Length; i++) { array[i].enabled = state; } this.portrait.enabled = state; base.enabled = state; } // Token: 0x060014B1 RID: 5297 RVA: 0x00190578 File Offset: 0x0018E778 public void End() { if (!this.character) { return; } this.SetAsActive(false); if (this.character.npc) { Links.x.cellar.ReturnTimelineIconEnemy(this); } else { Links.x.cellar.ReturnTimelineIcon(this); } this.character = null; this.animator.Stop(); this.sheen.enabled = false; Links.x.combat.RemoveTimelineIcon(this); } // Token: 0x060014B2 RID: 5298 RVA: 0x001905F8 File Offset: 0x0018E7F8 private void Update() { if (!this.character.hasActions) { return; } if (((!this.character.turning && !this.character.stats.pinned && !this.knockedOut && !this.downed && !this.character.downed && !this.character.body.IsHit() && !Links.x.combat.combatCinematics && !this.waitingForAction && !this.waitingToPickAction && !this.character.moving && this.character.waitingForPath == 0 && this.character.NodesCount() == 0 && !this.character.actions.ai.findingAction && !Records.x.paused && !this.character.isHit && !Records.x.dialogue && !this.character.actions.cannotInterrupt && !this.character.inQueuedAbility) || (this.character.mainSelected && this.overridePause && !this.character.body.animationHold)) && (!Records.x.pocketPause || (Records.x.pocketPause && ((this.character.mainSelected && this.overridePause && !this.character.body.animationHold) || this.character == Links.x.combat.rallyCharacter)))) { if (Records.x.turnBased) { this.t += Time.deltaTime / this.speed; this.tr.position = Vector3.Lerp(this.start.position, this.end.position, this.t); if (this.tr.position == this.end.position) { if (Records.x.turnBased) { this.PickAction(); } else { this.DoAction(); } this.waitingForAction = true; } } else { this.doingRepath = false; this.updateTime += Time.deltaTime; if (this.updateTime > 0.25f) { this.updateTime = 0f; if (this.character.hasActions) { this.doingRepath = this.character.actions.CheckForRepathWhileWaitingToAttack(); } } if (this.hasAction) { if (!this.doingRepath) { if (this.doingAction) { this.t += Time.deltaTime / this.speed; if (this.character.ActionAnimID() && this.needsSpeed && this.character.animator) { this.clipInfo = this.character.animator.GetCurrentAnimatorClipInfo(0); if (this.clipInfo.Length != 0) { this.clip = this.clipInfo[0].clip; if (this.clip) { this.clipInfoName = this.clip.name; this.clipLength = this.clip.length; this.events = this.clipInfo[0].clip.events; if (this.events != null) { for (int i = 0; i < this.events.Length; i++) { this.stateInfo = this.character.animator.GetCurrentAnimatorStateInfo(0); if (this.events[i].functionName.Contains("ttack") || this.events[i].functionName.Contains("ast") || this.events[i].functionName.Contains("inket")) { this.speed = this.clipLength; if (this.character.mainSelected && this.character.stats.HandCount() > 1f) { this.speed += 0.1f; } this.needsSpeed = false; this.stateInfo = this.character.animator.GetCurrentAnimatorStateInfo(0); this.currentHash = this.stateInfo.shortNameHash; this.character.body.recoveryTime = this.clipLength - this.events[i].time; } } } } } } this.tr.position = Vector3.Lerp(this.action.position, this.end.position, this.t); if (this.tr.position == this.end.position) { this.offsetTime = 0f; this.overridePause = false; if (this.character.hasActions) { if (this.character.IsAttacking(this.currentHash)) { this.character.actions.EndAttackTime(0f); } else if (this.character.IsCasting(this.currentHash) || this.casting) { if (this.character.animID == 14) { this.character.animID = 0; } } else if (!this.character.IsTrinketing(this.currentHash)) { if (!Links.x.combat.miniEvent && Records.x.editor && this.currentHash != 0) { string[] array = new string[9]; array[0] = "ERROR "; int num = 1; Character character = this.character; array[num] = ((character != null) ? character.ToString() : null); array[2] = "'s clip "; array[3] = this.clipInfoName; array[4] = " "; array[5] = this.character.animID.ToString(); array[6] = " "; array[7] = this.currentHash.ToString(); array[8] = " did not trigger end of action"; Debug.Log(string.Concat(array)); } if (this.character.actions && !Links.x.combat.miniEvent && Records.x.editor && this.currentHash != 0) { string text = "Last action for "; Character character2 = this.character; Debug.Log(text + ((character2 != null) ? character2.ToString() : null) + " :" + this.character.actions.ai.lastAction); } } if (this.character && this.character.actions) { this.character.actions.EndTurnAfterAction(); } } } } else { this.t += Time.deltaTime / this.speed; this.tr.position = Vector3.Lerp(this.start.position, this.action.position, this.t); if (this.tr.position == this.action.position) { if (this.character.hasActions) { this.updateTime += Time.deltaTime; if (this.updateTime > 0.25f) { this.updateTime = 0f; if (this.character.hasActions) { this.doingRepath = this.character.actions.CheckForRepathWhileWaitingToAttack(); } } } if (!this.doingRepath) { this.needsSpeed = true; this.doingAction = true; this.speed = 1f; this.t = 0f; this.DoAction(); } } } } } else if (this.character && this.character.actions && this.speed > 0f) { this.t += Time.deltaTime / this.speed; this.tr.position = Vector3.Lerp(this.start.position, this.action.position, this.t); if (this.tr.position == this.action.position) { this.DoAction(); } } } } if (this.character) { if (this.character.actions.castingSpell && this.character.actions.spellCasterFX) { this.character.actions.spellCasterFX.transform.position = this.character.tr.position + new Vector3(0f, 0.2f, 0f); } if (this.character.dead || !this.character.hasActions || this.character.stunned) { this.End(); } } } // Token: 0x060014B3 RID: 5299 RVA: 0x00190F28 File Offset: 0x0018F128 public void AddSecondAttack() { if (this.character && this.character.animator) { this.speed = 0f; this.clipInfo = this.character.animator.GetCurrentAnimatorClipInfo(0); if (this.clipInfo.Length != 0) { this.clip = this.clipInfo[0].clip; if (this.clip) { this.events = this.clipInfo[0].clip.events; if (this.events != null) { for (int i = 0; i < this.events.Length; i++) { this.stateInfo = this.character.animator.GetCurrentAnimatorStateInfo(0); if (this.events[i].functionName.Contains("ttack") || this.events[i].functionName.Contains("ast") || this.events[i].functionName.Contains("inket")) { this.clipInfoName = this.clip.name; this.clipLength = this.events[i].time + 0.2f; this.speed = this.clipLength; } } } } } this.tr.position = this.action.position; if (this.speed < 0.01f) { this.speed = 1.5f; } this.t = 0f; } } // Token: 0x060014B4 RID: 5300 RVA: 0x001910C0 File Offset: 0x0018F2C0 public void DoAction() { if (this.character.actions) { if (this.character.actions.cannotInterrupt) { this.character.actions.EndTurnAfterAction(); this.Beginning(); return; } if (this.hasAction) { this.character.actions.ContinueAction(); return; } this.Beginning(); } } // Token: 0x060014B5 RID: 5301 RVA: 0x00191128 File Offset: 0x0018F328 public void PickAction() { if (Records.x.combat) { Links.x.combat.GetNextAction(this.character); return; } if (this.character.actions) { this.character.actions.ChooseAction(); return; } this.End(); } // Token: 0x060014B6 RID: 5302 RVA: 0x00191180 File Offset: 0x0018F380 public void RecordOffset() { if (this.character.npc) { this.offsetTime = 1f - this.t; } } // Token: 0x060014B7 RID: 5303 RVA: 0x001911A4 File Offset: 0x0018F3A4 public void Clear() { this.tr.position = this.start.position; this.speed = 0f; this.casting = false; this.doingRepath = false; this.doingAction = false; this.waitingForAction = false; this.hasAction = false; this.waitingToPickAction = true; this.overridePause = false; } // Token: 0x060014B8 RID: 5304 RVA: 0x00191204 File Offset: 0x0018F404 public void SetAtBeginningPosition() { this.waitingForAction = false; this.casting = false; this.tr.position = this.start.position; this.hasAction = false; if (!Records.x.turnBased) { this.waitingToPickAction = true; this.PickAction(); } } // Token: 0x060014B9 RID: 5305 RVA: 0x00191255 File Offset: 0x0018F455 public bool Nothing() { return !this.waitingForAction && !this.hasAction && !this.doingAction; } // Token: 0x060014BA RID: 5306 RVA: 0x00191278 File Offset: 0x0018F478 public void Beginning() { if (!this.character) { return; } if (this.animator.enabled) { this.animator.Stop(); } this.sheen.enabled = false; this.t = 0f - this.offsetTime; this.updateTime = 0f; this.speed = 1f; this.tr.position = this.start.position; this.doingAction = false; this.waitingForAction = false; this.hasAction = false; if (!Records.x.turnBased) { this.waitingToPickAction = true; if (!this.character.mainSelected || (this.character.mainSelected && (Records.x.freeAttack || Records.x.cyclingAttacks))) { this.PickAction(); } } this.overridePause = false; } // Token: 0x060014BB RID: 5307 RVA: 0x0019135C File Offset: 0x0018F55C public void WaitForAction(float actionSpeed, bool doActionAtEnd, bool skipReset) { if (this.animator.enabled) { this.animator.Stop(); } if (!this.character) { return; } this.sheen.enabled = false; this.casting = false; this.doingAction = false; if (!skipReset) { this.tr.position = this.start.position; this.t = 0f - this.offsetTime; this.updateTime = 0f; } this.speed = actionSpeed; this.waitingToPickAction = false; this.waitingForAction = false; this.hasAction = doActionAtEnd; } // Token: 0x040023C4 RID: 9156 public Character character; // Token: 0x040023C5 RID: 9157 public Transform start; // Token: 0x040023C6 RID: 9158 public Transform end; // Token: 0x040023C7 RID: 9159 public Transform action; // Token: 0x040023C8 RID: 9160 public float speed; // Token: 0x040023C9 RID: 9161 public bool knockedOut; // Token: 0x040023CA RID: 9162 public bool downed; // Token: 0x040023CB RID: 9163 public bool waitingForAction; // Token: 0x040023CC RID: 9164 public bool waitingToPickAction; // Token: 0x040023CD RID: 9165 public bool hasAction; // Token: 0x040023CE RID: 9166 public bool doingAction; // Token: 0x040023CF RID: 9167 public bool doingRepath; // Token: 0x040023D0 RID: 9168 private Transform tr; // Token: 0x040023D1 RID: 9169 public float t; // Token: 0x040023D2 RID: 9170 public float updateTime; // Token: 0x040023D3 RID: 9171 public Image[] images; // Token: 0x040023D4 RID: 9172 public RawImage portrait; // Token: 0x040023D5 RID: 9173 public float offsetTime; // Token: 0x040023D6 RID: 9174 public Color normalColor; // Token: 0x040023D7 RID: 9175 public Color hoverColor; // Token: 0x040023D8 RID: 9176 public RenderTexture texturesIdle; // Token: 0x040023D9 RID: 9177 private AnimatorStateInfo stateInfo; // Token: 0x040023DA RID: 9178 private AnimatorClipInfo[] clipInfo; // Token: 0x040023DB RID: 9179 private AnimationClip clip; // Token: 0x040023DC RID: 9180 private AnimationEvent[] events; // Token: 0x040023DD RID: 9181 public bool needsSpeed; // Token: 0x040023DE RID: 9182 public Image sheen; // Token: 0x040023DF RID: 9183 public HannahAnimator animator; // Token: 0x040023E0 RID: 9184 public string clipInfoName; // Token: 0x040023E1 RID: 9185 private int currentHash; // Token: 0x040023E2 RID: 9186 public float clipLength; // Token: 0x040023E3 RID: 9187 public bool overridePause; // Token: 0x040023E4 RID: 9188 public bool casting; }