public static void UpdatePlayer(PlayerControl player) { if (player != null) { if (player.CurrentPet != null) { if (player.CurrentPet.animator.name.Contains(PlayablePets.SpecialName)) { if (player.nameText != null) { player.nameText.transform.position = player.CurrentPet.transform.position + PlayablePets.namePositionOffset; setupPlayerColors(player, Color.clear); } } else { //PlayablePets._logger.LogMessage(player.HatRenderer.FrontLayer.sprite.name); bool hasHat = !(player.HatRenderer.FrontLayer.sprite.name == "hats0001"); player.nameText.transform.localPosition = new Vector3(0f, (!hasHat) ? 0.7f : 1.05f, -0.5f); setupPlayerColors(player, Color.white); } } } }
public static SpriteRenderer getPlayerSpriteRenderer(PlayerControl player) { #if STEAM return(player.NJAHBOPJLAD); #elif ITCH return(player.LPFHCDOBAMN); #endif }
public static bool PlayerIsDead(PlayerControl player) { #if STEAM return(player.KLHEPLOPKKN.OKDGIIGNNMG); #elif ITCH return(player.IKPKBJLJACF.NBFCEPBDFBJ); #endif }
private static void setupPlayerColors(PlayerControl player, Color c) { SpriteRenderer playerSpriteRenderer = getPlayerSpriteRenderer(player); if (playerSpriteRenderer != null) { playerSpriteRenderer.color = c; } if (player.HatRenderer != null) { player.HatRenderer.BackLayer.color = c; player.HatRenderer.FrontLayer.color = c; } if (player.MyPhysics.Skin != null) { player.MyPhysics.Skin.layer.color = c; } }
public static void UpdatePet(PlayerControl player) { if (player != null) { var pet = player.CurrentPet; if (pet != null) { var playerID = player.PlayerId; bool isDead = PlayerIsDead(player); bool localIsDead = PlayerIsDead(PlayerControl.LocalPlayer); SpriteRenderer playerSpriteRenderer = getPlayerSpriteRenderer(player); string playerSpriteName = playerSpriteRenderer.sprite.name; if (!animationStartTimes.ContainsKey(playerID)) { animationStartTimes.Add(playerID, Time.unscaledTime); //_logger.LogInfo("Added player to animationStartTimes"); } if (pet.sadClip == null) { return; } //No pet, continue on if (!pet.name.Contains("Crewmate") && PlayablePets.onlyMiniCrewmate.Value) { return; } //If the pet isn't a mini-crewmate and it should only apply to mini's skip pet.Collider.enabled = false; //Disable the pet collider so it doesn't get stuck on walls pet.transform.position = player.transform.position + petPositionOffset; //Set pet position pet.animator.name = pet.animator.name.Replace(PlayablePets.SpecialName, ""); //Allow animations to be changed pet.rend.flipX = playerSpriteRenderer.flipX; //Flip pet spriterenderer if needed if (isDead) //If player is dead { if (PlayerControl.LocalPlayer == player) { pet.rend.color = new UnityEngine.Color(1, 1, 1, 0.5f); pet.shadowRend.color = new UnityEngine.Color(1, 1, 1, 0.5f); } else { if (localIsDead) //If local player is dead { pet.rend.color = new UnityEngine.Color(1, 1, 1, 0.0f); //Set pet to not be visible pet.shadowRend.color = new UnityEngine.Color(1, 1, 1, 0.0f); //Set pet to not be visible } else { pet.rend.color = new UnityEngine.Color(1, 1, 1, 0.5f); //Set pet to half visible pet.shadowRend.color = new UnityEngine.Color(1, 1, 1, 0.5f); //Set pet to half visible } } } else { pet.rend.color = new UnityEngine.Color(1, 1, 1, 1); pet.shadowRend.color = new UnityEngine.Color(1, 1, 1, 1); } if (playerSpriteName == "idle" && pet.animator.Clip != pet.idleClip) { pet.animator.Play(pet.idleClip); //_logger.LogMessage("Idle Alive"); animationStartTimes[playerID] = Time.unscaledTime; } else if (isDead && (player.Collider.attachedRigidbody.velocity == Vector2.zero) && pet.animator.Clip != pet.idleClip) { pet.animator.Play(pet.idleClip); //_logger.LogMessage("Idle Ghost"); animationStartTimes[playerID] = Time.unscaledTime; } else if (playerSpriteName.Contains("walk") && pet.animator.Clip != pet.walkClip) { pet.animator.Play(pet.walkClip); //_logger.LogMessage("Walk Alive"); animationStartTimes[playerID] = Time.unscaledTime; } else if (isDead && (player.Collider.attachedRigidbody.velocity != Vector2.zero) && pet.animator.Clip != pet.walkClip) { pet.animator.Play(pet.walkClip); //_logger.LogMessage("Walk Ghost"); animationStartTimes[playerID] = Time.unscaledTime; } else { //_logger.LogMessage("None hit"); } pet.animator.Time = (Time.unscaledTime - animationStartTimes[playerID]); pet.animator.name += PlayablePets.SpecialName; //Stop animations from being changed when not outside this loop. } } }