// private static void CamoIntensController() { // if (Input.GetKeyDown((KeyCode)117)) // _camoIntens += 0.1f; // if (Input.GetKeyDown((KeyCode)105)) // _camoIntens -= 0.1f; // } // // private static void CamoPercentBalance() { // if (Input.GetKeyDown((KeyCode)104)) // _camoPercentBalance += 0.1f; // if (Input.GetKeyDown((KeyCode)106)) // _camoPercentBalance -= 0.1f; // } #endregion #region Hooks public static void Player_Update_Pre(Player __instance) { PlayerGraphics g = (PlayerGraphics)__instance.graphicsModule; SlugcatCamoState s = GetOrCreateCamoState(g); s.Player = __instance; }
public static void PlayerGraphics_DrawSprites_Post(PlayerGraphics __instance, RoomCamera.SpriteLeaser sLeaser, RoomCamera rCam, float timeStacker, Vector2 camPos) { SlugcatCamoState s = GetOrCreateCamoState(__instance); s.SpriteLeaser = sLeaser; s.RoomCamera = rCam; }
public static void PlayerGraphics_Update_Pre(PlayerGraphics __instance) { SlugcatCamoState s = GetOrCreateCamoState(__instance); ChangeColor(s); CalculateColorDeltaSum(s); CalculateCamoPercent(s); CalculateVisibilityBonus(s); }
private static void CalculateColorDeltaSum(SlugcatCamoState s) { for (int i = 0; i < s.SpriteLeaser.sprites.Length; i++) { s.CurrentPlayerColor += s.SpriteLeaser.sprites[i].color; } s.CurrentPlayerColor /= s.SpriteLeaser.sprites.Length; s.ColorDeltaSum = Mathf.Abs(s.CurrentPlayerColor.r - s.BackGroundColor.r) + Mathf.Abs(s.CurrentPlayerColor.g - s.BackGroundColor.g) + Mathf.Abs(s.CurrentPlayerColor.b - s.BackGroundColor.b); }
private static Color CalculateBodyColor(SlugcatCamoState s) { s.BodyColors.Clear(); for (int i = 0; i < (int)s.Player.bodyChunks.Length; i++) { s.BodyColors.Add(s.RoomCamera.PixelColorAtCoordinate(s.Player.bodyChunks[i].pos)); } for (int j = 0; j < s.BodyColors.Count; j++) { s.MainColor += s.BodyColors[j]; } s.MainColor = s.MainColor / (s.BodyColors.Count * s.CamoIntens); return(s.MainColor); }
private static void ChangeColor(SlugcatCamoState state) { for (int i = 0; i < state.SpriteLeaser.sprites.Length; i++) { if (i != 9) { state.BackGroundColor = CalculateBodyColor(state); state.SpriteLeaser.sprites[i].color = new Color( Mathf.Lerp(state.SpriteLeaser.sprites[i].color.r, state.BackGroundColor.r, 0.03f), Mathf.Lerp(state.SpriteLeaser.sprites[i].color.g, state.BackGroundColor.g, 0.03f), Mathf.Lerp(state.SpriteLeaser.sprites[i].color.b, state.BackGroundColor.b, 0.03f)); } } }
private static void CalculateCamoPercent(SlugcatCamoState s) { s.CamoPercent = 100f - s.ColorDeltaSum * 100f / 3f; }
private static void CalculateVisibilityBonus(SlugcatCamoState s) { s.Player.slugcatStats.generalVisibilityBonus = 0f - s.CamoPercent * 10f / 100f + s.CamoPercentBalance; }