private static void OnCharacterReloaded(ChaControl chaControl) { var args = new CharaReloadEventArgs(chaControl); try { CharacterReloaded?.Invoke(null, args); } catch (Exception e) { KoikatuAPI.Logger.LogError(e); } }
private static void ReloadChara(ChaControl chaControl = null) { if (IsCurrentlyReloading(chaControl)) { return; } if (chaControl == null) { _currentlyReloading.UnionWith(ChaControls); } else { _currentlyReloading.Add(chaControl); } KoikatuAPI.Logger.LogDebug("Character load/reload: " + GetLogName(chaControl)); // Always send events to controllers before subscribers of CharacterReloaded var gamemode = KoikatuAPI.GetCurrentGameMode(); foreach (var behaviour in GetBehaviours(chaControl)) { behaviour.OnReloadInternal(gamemode); } var args = new CharaReloadEventArgs(chaControl); try { CharacterReloaded?.Invoke(null, args); } catch (Exception e) { KoikatuAPI.Logger.LogError(e); } if (MakerAPI.InsideAndLoaded) { MakerAPI.OnReloadInterface(args); } if (chaControl == null) { _currentlyReloading.Clear(); } else { _currentlyReloading.Remove(chaControl); } }