예제 #1
0
        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);
                    }
                }
            }
        }
예제 #2
0
 public static SpriteRenderer getPlayerSpriteRenderer(PlayerControl player)
 {
     #if STEAM
     return(player.NJAHBOPJLAD);
     #elif ITCH
     return(player.LPFHCDOBAMN);
     #endif
 }
예제 #3
0
 public static bool PlayerIsDead(PlayerControl player)
 {
     #if STEAM
     return(player.KLHEPLOPKKN.OKDGIIGNNMG);
     #elif ITCH
     return(player.IKPKBJLJACF.NBFCEPBDFBJ);
     #endif
 }
예제 #4
0
        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;
            }
        }
예제 #5
0
        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.
                }
            }
        }