public bool SetClanBanner(Clan clan, string bannerCode) { try { if (bannerCode == null) { return(false); } if (clan == null) { return(false); } Log.write($"Trying to set {clan.Name}'s banner to {bannerCode}"); // Try to fish out errors by forcing the deserialization and a render attempt before setting the clan's banner var bd = new Banner(bannerCode); var m = bd.ConvertToMultiMesh(); clan.Banner.Deserialize(bannerCode); return(true); } catch (Exception ex) { Log.write(ex); return(false); } }
static void Postfix(BannerEditorView __instance) { if (__instance.SceneLayer.Input.IsHotKeyPressed("Copy") || __instance.GauntletLayer.Input.IsHotKeyPressed("Copy")) { try { Input.SetClipboardText(__instance.DataSource.BannerVM.Banner.Serialize()); } catch (Exception ex) { Log.write("Error copying banner code"); InformationManager.DisplayMessage(new InformationMessage("Error copying banner code", new Color(1f, 0, 0))); Log.write(ex); } } else if (__instance.SceneLayer.Input.IsHotKeyPressed("Paste") || __instance.GauntletLayer.Input.IsHotKeyPressed("Paste")) { try { // test banner deserialization first var bannerCode = Input.GetClipboardText(); var banner = new Banner(bannerCode); // then try to draw it banner.ConvertToMultiMesh(); // hopefully we have thrown by now if we're gonna __instance.DataSource.BannerVM.BannerCode = bannerCode; Traverse.Create(__instance).Method("RefreshShieldAndCharacter").GetValue(); } catch (Exception ex) { Log.write("Error deserializing banner code"); InformationManager.DisplayMessage(new InformationMessage($"Error pasting banner code", new Color(1f, 0, 0))); Log.write(ex); } } }