//Hook for Punchout UI being updated (called when UI updates) public static void PunchoutUpdateUI(Action <PunchoutPlayerController> orig, PunchoutPlayerController self) { orig(self); var customChar = GameManager.Instance.PrimaryPlayer.GetComponent <CustomCharacter>(); if (customChar != null) { char index = self.PlayerUiSprite.SpriteName.Last(); SpriteHandler.HandlePunchoutSprites(self, customChar.data); if (customChar.data.punchoutFaceCards != null) { self.PlayerUiSprite.SpriteName = customChar.data.nameInternal + "_punchout_facecard" + index; Tools.Print(self.PlayerUiSprite.SpriteName); } } }
public static void HandlePunchoutSprites(PunchoutPlayerController player, CustomCharacterData data) { var primaryPlayer = GameManager.Instance.PrimaryPlayer; player.PlayerUiSprite.Atlas = uiAtlas; if (data != null) { if (data.punchoutSprites != null && player.sprite.Collection.name != (data.nameShort + " Punchout Collection")) { HandlePunchoutAnimations(player, data); } if (data.faceCard != null) { player.PlayerUiSprite.SpriteName = data.nameInternal + "_punchout_facecard1"; } } }
public static void HandlePunchoutAnimations(PunchoutPlayerController player, CustomCharacterData data) { Tools.Print("Replacing punchout sprites..."); var orig = player.sprite.Collection; var copyCollection = GameObject.Instantiate(orig); GameObject.DontDestroyOnLoad(copyCollection); tk2dSpriteDefinition[] copyDefinitions = new tk2dSpriteDefinition[orig.spriteDefinitions.Length]; for (int i = 0; i < copyCollection.spriteDefinitions.Length; i++) { copyDefinitions[i] = orig.spriteDefinitions[i].Copy(); } copyCollection.spriteDefinitions = copyDefinitions; foreach (var tex in data.punchoutSprites) { var def = copyCollection.GetSpriteDefinition(tex.name); if (def != null) { def.ReplaceTexture(tex.CropWhiteSpace()); } } player.spriteAnimator.Library = GameObject.Instantiate(player.spriteAnimator.Library); GameObject.DontDestroyOnLoad(player.spriteAnimator.Library); foreach (var clip in player.spriteAnimator.Library.clips) { for (int i = 0; i < clip.frames.Length; i++) { clip.frames[i].spriteCollection = copyCollection; } } copyCollection.name = data.nameShort + " Punchout Collection"; //CharacterBuilder.storedCollections.Add(data.nameInternal, copyCollection); player.sprite.Collection = copyCollection; Tools.Print("Punchout sprites successfully replaced"); }