4JF2MUNF23IFAVVECZNP3JJLFPEB36V7FDRQOKIZNF6Q2FAGOFRQC
4PLSNSVW4VOQW5ZXXZGUWB56WI33SXTGWOCD7PNE36OWDGD7NRJAC
5I5QA3YK5G5QQCXMSDOEAX3A74LVXV7PYWAIHMLFANR2GUFWMKGQC
QAZ3YAYCPNY45B4NZDRONZ5RHAYNAKDG7PZUNHUHAVU2LTJ5XCVAC
7PYVWF7I4JWTDZ5M7Q5BCKGEICUXHXKWEYQB4OGUXZE5VBJ45PBQC
NZIEX6J6Q6DSJKNSCTHNIA6EJDQEGMK3ZSP3LKX2UAEDHURQPRVQC
KBOT5YUY4FDPAKAAHBUDE6XHHW3EUDPLEKRRUTYPAYB7TNGLZNHQC
FIMVA3BI72IWMBRN5T3PKDCKSJW667BH25INKDWSPWGHLRKCNAPAC
DIEGZM3YMQCKTQW3NLESFZBOGMWW6FT6TZOUL7IUAJD2X5IISUYAC
XIPU27GAVXMAKDP42DDSYNA6DSN5WBHH6AG4EK6YIIM43AQQHQAAC
MML56TWYWB6SUY5JEWHG2PNLAH3JY72PGCEXIGOYE54EAC2WSWBAC
DTKCWM4J7PFNWAAES3RZHQGDA6PTDNX4TZVOXAKF5V7LCZBI3XUAC
LTG4LQJEMFY22QOI6E5HM3U4OE3JCYRFJ6VGW3KI3AFTMHZCTWRAC
CD5FF75KTOBTMVMTMCKMR6F5DFKOF26I5K43ITNHGBI3ZAZHA4RAC
}
}
public bool TryQueueWeave(RuneWeaving weaving) {
bool weaveQueued;
if (true) {
weaveQueued = true;
if (!_isWeaving) {
StartCoroutine(Weave(weaving));
_isWeaving = true;
}
}
return weaveQueued;
}
IEnumerator Weave(RuneWeaving weaving) {
// Just started Weaving, not advancing right now
const float maxWeavingTime = 10f;
float weavingTime = 0f;
weaving.Reset();
yield return null;
print("Starting Weave");
// maxWeavingTime in case loop doesn't end...
while (weaving.Advance(Time.deltaTime) && (weavingTime < maxWeavingTime)) {
weavingTime += Time.deltaTime;
yield return null;
Rune currentRune = runes[currentRuneIdx];
while (currentTime - latRuneTime > currentRune.speed) {
currentRune.Cast(context);
latRuneTime += currentRune.speed;
while ((currentRuneIdx < runes.Count) && (currentTime - lastRuneTime > runes[currentRuneIdx].speed)) {
Debug.Log($"Executing Rune {runes[currentRuneIdx].name} - {currentRuneIdx + 1}/{runes.Count} at {currentTime} ");
runes[currentRuneIdx].Cast(context);
lastRuneTime += runes[currentRuneIdx].speed;
public void Advance(float deltaTime) {
public bool Advance(float deltaTime) {
if (currentMoveIdx >= combatMoves.Count) {
Debug.Log($"Executed Martial Sequence {currentMoveIdx}/{combatMoves.Count} moves in {currentTime} seconds");
return false;
}
currentTime += deltaTime;
while ((currentMoveIdx < combatMoves.Count) && (currentTime - latMoveTime > combatMoves[currentMoveIdx].speed)) {
Debug.Log($"Executing Martial move {combatMoves[currentMoveIdx].moveName} {currentMoveIdx + 1}/{combatMoves.Count} at {currentTime}");
// TODO : Actual Execute Move
latMoveTime += combatMoves[currentMoveIdx].speed;
currentMoveIdx++;
}