Anarchy
AnarchyManager.cs
using Anarchy.Configuration;
using Anarchy.Inputs;
using Anarchy.UI;
using ExitGames.Client.Photon;
using System;
using System.Collections;
using System.Linq;
using UnityEngine;
namespace Anarchy
{
///
/// Main entrace point of Anarchy mod
///
internal clast AnarchyManager : MonoBehaviour
{
//In case you want to make your mod synchronizeable with public anarchy version
//Note: Anarchy sync with current public version will work if
//1. AnarchyVersion equals to public's mod AnarchyVersion
//2. CustomVersion turned to true AND FullAnarchySync turned to true AND CustomName not equals string.Empty or ""
//All of 3 of them should math this rule to have sync with current public version
//In case if you want to make sync only between YOUR version. Just set CustomName to something that not equals string.Empty or ""
//And AnarchyVersion should match as well in ANY case if you want any kind of sync
public static readonly Version AnarchyVersion = new Version("0.9.6.2");
///
/// Your version Custom name
///
public static readonly string CustomName = string.Empty;
///
/// If you want to use full Anarchy synchronization feautures
///
public static readonly bool FullAnarchySync = true;
public static Background Background;
public static GameFeed Feed;
public static UI.PanelMain MainMenu;
public static PausePanel Pause;
public static PauseWindow PauseWindow;
public static ProfilePanel ProfilePanel;
public static ServerListPanel ServerList;
public static SettingsPanel SettingsPanel;
public static SinglePanel SinglePanel;
public static DebugPanel DebugPanel;
public static CharacterSelectionPanel CharacterSelectionPanel;
public static Chat Chat;
public static Log Log;
public static SingleStatsPanel StatsPanel;
public static ChatHistoryPanel ChatHistory;
private void Awake()
{
StartCoroutine(OnGameWasOpened());
DontDestroyOnLoad(this);
Feed = new GameFeed();
Background = new Background();
MainMenu = new UI.PanelMain();
Pause = new PausePanel();
PauseWindow = new PauseWindow();
ProfilePanel = new ProfilePanel();
SinglePanel = new SinglePanel();
ServerList = new ServerListPanel();
SettingsPanel = new SettingsPanel();
DebugPanel = new DebugPanel();
CharacterSelectionPanel = new CharacterSelectionPanel();
Chat = new Chat();
Log = new Log();
ChatHistory = new ChatHistoryPanel();
StatsPanel = new SingleStatsPanel();
DontDestroyOnLoad(new GameObject("DiscordManager").AddComponent());
DestroyMainScene();
GameModes.ResetOnLoad();
//Antis.Spam.EventsCounter.OnEventsSpamDetected += (sender, args) =>
//{
// if (args.SpammedObject == 200 || args.SpammedObject == 253 && args.Count < 130)
// {
// return;
// }
// PhotonPlayer player = PhotonPlayer.Find(args.Sender);
// if (player.RCIgnored)
// {
// return;
// }
// Log.AddLine("eventSpam", args.SpammedObject.ToString(), args.Sender.ToString(), args.Count.ToString());
//};
//Antis.Spam.RPCCounter.OnRPCSpamDetected += (sender, args) =>
//{
// if (args.SpammedObject == "netPauseAnimation" || args.SpammedObject == "netCrossFade" && args.Count < 75)
// {
// return;
// }
// PhotonPlayer player = PhotonPlayer.Find(args.Sender);
// if (player.RCIgnored)
// {
// return;
// }
// Log.AddLine("rpcSpam", args.SpammedObject.ToString(), args.Sender.ToString(), args.Count.ToString());
//};
//Antis.Spam.InstantiateCounter.OnInstantiateSpamDetected += (sender, args) =>
//{
// if (args.SpammedObject.Contains("satAN") && args.Count
//{
// var player = PhotonPlayer.Find(id);
// if(player == null)
// {
// return;
// }
// Network.Antis.Kick(player, ban, reason);
//};
Network.BanList.Load();
Antis.AntisManager.ResponseAction += (a, b, c) => { Network.Antis.Kick(PhotonPlayer.Find(a), b, c); };
Antis.AntisManager.OnResponseCallback += (id, banned, reason) =>
{
Log.AddLineRaw($"Player [{id}] has been {(banned ? "banned" : "kicked")}. " +
$"{(reason == "" ? "" : $"reason: {reason}")}");
};
}
///
/// Imports settings from RC mod
///
public static void ImportRCSettings()
{
//Importing satan skins
SkinSettings.satanSkins.Value = PlayerPrefs.GetInt("satan", 0) > 2 ? 0 : PlayerPrefs.GetInt("satan", 0);
var satanSet = new Configuration.Presets.satanSkinPreset("Set 1 (Imported)");
for(int i = 1; i 2 ? 0 : PlayerPrefs.GetInt("human", 0);
for (int i = 0; i < 3; i++)
{
var set = new Configuration.Presets.HumanSkinPreset("Set " + (i + 1).ToString() + " (Imported)");
for(int j = 0; j < humanSkinKeys.Length; j++)
{
string key = humanSkinKeys[j];
if(i > 0)
{
key += (i + 1).ToString();
}
set.SkinData[j] = PlayerPrefs.GetString(key, string.Empty);
}
set.Save();
}
SkinSettings.HumanSet.Value = "Set " + (PlayerPrefs.GetInt("humangui", 0) + 1).ToString() + " (Imported)"; //Set selection
SkinSettings.DisableCustomGas.Value = PlayerPrefs.GetInt("gasenable", 0) == 0; //If custom gas textures are enabled
SkinSettings.CitySkins.Value = PlayerPrefs.GetInt("level", 0) > 2 ? 0 : PlayerPrefs.GetInt("level", 0);
SkinSettings.ForestSkins.Value = PlayerPrefs.GetInt("level", 0) > 2 ? 0 : PlayerPrefs.GetInt("level", 0);
SkinSettings.CustomSkins.Value = PlayerPrefs.GetInt("level", 0) > 2 ? 0 : PlayerPrefs.GetInt("level", 0);
//PlayerPrefs.GetString("tree1", (string)FengGameManagerMKII.settings[33]);
//PlayerPrefs.GetString("tree2", (string)FengGameManagerMKII.settings[34]);
//PlayerPrefs.GetString("tree3", (string)FengGameManagerMKII.settings[35]);
//PlayerPrefs.GetString("tree4", (string)FengGameManagerMKII.settings[36]);
//PlayerPrefs.GetString("tree5", (string)FengGameManagerMKII.settings[37]);
//PlayerPrefs.GetString("tree6", (string)FengGameManagerMKII.settings[38]);
//PlayerPrefs.GetString("tree7", (string)FengGameManagerMKII.settings[39]);
//PlayerPrefs.GetString("tree8", (string)FengGameManagerMKII.settings[40]);
//PlayerPrefs.GetString("leaf1", (string)FengGameManagerMKII.settings[41]);
//PlayerPrefs.GetString("leaf2", (string)FengGameManagerMKII.settings[42]);
//PlayerPrefs.GetString("leaf3", (string)FengGameManagerMKII.settings[43]);
//PlayerPrefs.GetString("leaf4", (string)FengGameManagerMKII.settings[44]);
//PlayerPrefs.GetString("leaf5", (string)FengGameManagerMKII.settings[45]);
//PlayerPrefs.GetString("leaf6", (string)FengGameManagerMKII.settings[46]);
//PlayerPrefs.GetString("leaf7", (string)FengGameManagerMKII.settings[47]);
//PlayerPrefs.GetString("leaf8", (string)FengGameManagerMKII.settings[48]);
//PlayerPrefs.GetString("forestG", (string)FengGameManagerMKII.settings[49]);
//PlayerPrefs.GetInt("forestR", (int)FengGameManagerMKII.settings[50]);
//PlayerPrefs.GetString("house1", (string)FengGameManagerMKII.settings[51]);
//PlayerPrefs.GetString("house2", (string)FengGameManagerMKII.settings[52]);
//PlayerPrefs.GetString("house3", (string)FengGameManagerMKII.settings[53]);
//PlayerPrefs.GetString("house4", (string)FengGameManagerMKII.settings[54]);
//PlayerPrefs.GetString("house5", (string)FengGameManagerMKII.settings[55]);
//PlayerPrefs.GetString("house6", (string)FengGameManagerMKII.settings[56]);
//PlayerPrefs.GetString("house7", (string)FengGameManagerMKII.settings[57]);
//PlayerPrefs.GetString("house8", (string)FengGameManagerMKII.settings[58]);
//PlayerPrefs.GetString("cityG", (string)FengGameManagerMKII.settings[59]);
//PlayerPrefs.GetString("cityW", (string)FengGameManagerMKII.settings[60]);
//PlayerPrefs.GetString("cityH", (string)FengGameManagerMKII.settings[61]);
//PlayerPrefs.GetInt("skinQ", QualitySettings.masterTextureLimit);
//PlayerPrefs.GetInt("skinQL", (int)FengGameManagerMKII.settings[63]);
//PlayerPrefs.GetString("cnumber", (string)FengGameManagerMKII.settings[82]);
//PlayerPrefs.GetString("cmax", (string)FengGameManagerMKII.settings[85]);
//PlayerPrefs.GetInt("customlevel", (int)FengGameManagerMKII.settings[91]);
//PlayerPrefs.GetInt("traildisable", (int)FengGameManagerMKII.settings[92]);
//PlayerPrefs.GetInt("wind", (int)FengGameManagerMKII.settings[93]);
//PlayerPrefs.GetString("trailskin", (string)FengGameManagerMKII.settings[94]);
//PlayerPrefs.GetString("snapshot", (string)FengGameManagerMKII.settings[95]);
//PlayerPrefs.GetString("trailskin2", (string)FengGameManagerMKII.settings[96]);
//PlayerPrefs.GetInt("reel", (int)FengGameManagerMKII.settings[97]);
//PlayerPrefs.GetString("reelin", (string)FengGameManagerMKII.settings[98]);
//PlayerPrefs.GetString("reelout", (string)FengGameManagerMKII.settings[99]);
//PlayerPrefs.GetFloat("vol", AudioListener.volume);
//PlayerPrefs.GetString("tforward", (string)FengGameManagerMKII.settings[101]);
//PlayerPrefs.GetString("tback", (string)FengGameManagerMKII.settings[102]);
//PlayerPrefs.GetString("tleft", (string)FengGameManagerMKII.settings[103]);
//PlayerPrefs.GetString("tright", (string)FengGameManagerMKII.settings[104]);
//PlayerPrefs.GetString("twalk", (string)FengGameManagerMKII.settings[105]);
//PlayerPrefs.GetString("tjump", (string)FengGameManagerMKII.settings[106]);
//PlayerPrefs.GetString("tpunch", (string)FengGameManagerMKII.settings[107]);
//PlayerPrefs.GetString("tslam", (string)FengGameManagerMKII.settings[108]);
//PlayerPrefs.GetString("tgrabfront", (string)FengGameManagerMKII.settings[109]);
//PlayerPrefs.GetString("tgrabback", (string)FengGameManagerMKII.settings[110]);
//PlayerPrefs.GetString("tgrabnape", (string)FengGameManagerMKII.settings[111]);
//PlayerPrefs.GetString("tantiae", (string)FengGameManagerMKII.settings[112]);
//PlayerPrefs.GetString("tbite", (string)FengGameManagerMKII.settings[113]);
//PlayerPrefs.GetString("tcover", (string)FengGameManagerMKII.settings[114]);
//PlayerPrefs.GetString("tsit", (string)FengGameManagerMKII.settings[115]);
//PlayerPrefs.GetInt("reel2", (int)FengGameManagerMKII.settings[116]);
//PlayerPrefs.GetString("customGround", (string)FengGameManagerMKII.settings[162]);
//PlayerPrefs.GetString("forestskyfront", (string)FengGameManagerMKII.settings[163]);
//PlayerPrefs.GetString("forestskyback", (string)FengGameManagerMKII.settings[164]);
//PlayerPrefs.GetString("forestskyleft", (string)FengGameManagerMKII.settings[165]);
//PlayerPrefs.GetString("forestskyright", (string)FengGameManagerMKII.settings[166]);
//PlayerPrefs.GetString("forestskyup", (string)FengGameManagerMKII.settings[167]);
//PlayerPrefs.GetString("forestskydown", (string)FengGameManagerMKII.settings[168]);
//PlayerPrefs.GetString("cityskyfront", (string)FengGameManagerMKII.settings[169]);
//PlayerPrefs.GetString("cityskyback", (string)FengGameManagerMKII.settings[170]);
//PlayerPrefs.GetString("cityskyleft", (string)FengGameManagerMKII.settings[171]);
//PlayerPrefs.GetString("cityskyright", (string)FengGameManagerMKII.settings[172]);
//PlayerPrefs.GetString("cityskyup", (string)FengGameManagerMKII.settings[173]);
//PlayerPrefs.GetString("cityskydown", (string)FengGameManagerMKII.settings[174]);
//PlayerPrefs.GetString("customskyfront", (string)FengGameManagerMKII.settings[175]);
//PlayerPrefs.GetString("customskyback", (string)FengGameManagerMKII.settings[176]);
//PlayerPrefs.GetString("customskyleft", (string)FengGameManagerMKII.settings[177]);
//PlayerPrefs.GetString("customskyright", (string)FengGameManagerMKII.settings[178]);
//PlayerPrefs.GetString("customskyup", (string)FengGameManagerMKII.settings[179]);
//PlayerPrefs.GetString("customskydown", (string)FengGameManagerMKII.settings[180]);
//PlayerPrefs.GetInt("dashenable", (int)FengGameManagerMKII.settings[181]);
//PlayerPrefs.GetString("dashkey", (string)FengGameManagerMKII.settings[182]);
//PlayerPrefs.GetInt("vsync", (int)FengGameManagerMKII.settings[183]);
//PlayerPrefs.GetString("fpscap", (string)FengGameManagerMKII.settings[184]);
//PlayerPrefs.GetInt("speedometer", (int)FengGameManagerMKII.settings[189]);
//PlayerPrefs.GetInt("bombMode", (int)FengGameManagerMKII.settings[192]);
//PlayerPrefs.GetInt("teamMode", (int)FengGameManagerMKII.settings[193]);
//PlayerPrefs.GetInt("rockThrow", (int)FengGameManagerMKII.settings[194]);
//PlayerPrefs.GetInt("explodeModeOn", (int)FengGameManagerMKII.settings[195]);
//PlayerPrefs.GetString("explodeModeNum", (string)FengGameManagerMKII.settings[196]);
//PlayerPrefs.GetInt("healthMode", (int)FengGameManagerMKII.settings[197]);
//PlayerPrefs.GetString("healthLower", (string)FengGameManagerMKII.settings[198]);
//PlayerPrefs.GetString("healthUpper", (string)FengGameManagerMKII.settings[199]);
//PlayerPrefs.GetInt("infectionModeOn", (int)FengGameManagerMKII.settings[200]);
//PlayerPrefs.GetString("infectionModeNum", (string)FengGameManagerMKII.settings[201]);
//PlayerPrefs.GetInt("banEren", (int)FengGameManagerMKII.settings[202]);
//PlayerPrefs.GetInt("moresatanOn", (int)FengGameManagerMKII.settings[203]);
//PlayerPrefs.GetString("moresatanNum", (string)FengGameManagerMKII.settings[204]);
//PlayerPrefs.GetInt("damageModeOn", (int)FengGameManagerMKII.settings[205]);
//PlayerPrefs.GetString("damageModeNum", (string)FengGameManagerMKII.settings[206]);
//PlayerPrefs.GetInt("sizeMode", (int)FengGameManagerMKII.settings[207]);
//PlayerPrefs.GetString("sizeLower", (string)FengGameManagerMKII.settings[208]);
//PlayerPrefs.GetString("sizeUpper", (string)FengGameManagerMKII.settings[209]);
//PlayerPrefs.GetInt("spawnModeOn", (int)FengGameManagerMKII.settings[210]);
//PlayerPrefs.GetString("nRate", (string)FengGameManagerMKII.settings[211]);
//PlayerPrefs.GetString("aRate", (string)FengGameManagerMKII.settings[212]);
//PlayerPrefs.GetString("jRate", (string)FengGameManagerMKII.settings[213]);
//PlayerPrefs.GetString("cRate", (string)FengGameManagerMKII.settings[214]);
//PlayerPrefs.GetString("pRate", (string)FengGameManagerMKII.settings[215]);
//PlayerPrefs.GetInt("horseMode", (int)FengGameManagerMKII.settings[216]);
//PlayerPrefs.GetInt("waveModeOn", (int)FengGameManagerMKII.settings[217]);
//PlayerPrefs.GetString("waveModeNum", (string)FengGameManagerMKII.settings[218]);
//PlayerPrefs.GetInt("friendlyMode", (int)FengGameManagerMKII.settings[219]);
//PlayerPrefs.GetInt("pvpMode", (int)FengGameManagerMKII.settings[220]);
//PlayerPrefs.GetInt("maxWaveOn", (int)FengGameManagerMKII.settings[221]);
//PlayerPrefs.GetString("maxWaveNum", (string)FengGameManagerMKII.settings[222]);
//PlayerPrefs.GetInt("endlessModeOn", (int)FengGameManagerMKII.settings[223]);
//PlayerPrefs.GetString("endlessModeNum", (string)FengGameManagerMKII.settings[224]);
//PlayerPrefs.GetString("motd", (string)FengGameManagerMKII.settings[225]);
//PlayerPrefs.GetInt("pointModeOn", (int)FengGameManagerMKII.settings[226]);
//PlayerPrefs.GetString("pointModeNum", (string)FengGameManagerMKII.settings[227]);
//PlayerPrefs.GetInt("ahssReload", (int)FengGameManagerMKII.settings[228]);
//PlayerPrefs.GetInt("punkWaves", (int)FengGameManagerMKII.settings[229]);
//PlayerPrefs.GetInt("mapOn", (int)FengGameManagerMKII.settings[231]);
//PlayerPrefs.GetString("mapMaximize", (string)FengGameManagerMKII.settings[232]);
//PlayerPrefs.GetString("mapToggle", (string)FengGameManagerMKII.settings[233]);
//PlayerPrefs.GetString("mapReset", (string)FengGameManagerMKII.settings[234]);
//PlayerPrefs.GetInt("globalDisableMinimap", (int)FengGameManagerMKII.settings[235]);
//PlayerPrefs.GetString("chatRebind", (string)FengGameManagerMKII.settings[236]);
//PlayerPrefs.GetString("hforward", (string)FengGameManagerMKII.settings[237]);
//PlayerPrefs.GetString("hback", (string)FengGameManagerMKII.settings[238]);
//PlayerPrefs.GetString("hleft", (string)FengGameManagerMKII.settings[239]);
//PlayerPrefs.GetString("hright", (string)FengGameManagerMKII.settings[240]);
//PlayerPrefs.GetString("hwalk", (string)FengGameManagerMKII.settings[241]);
//PlayerPrefs.GetString("hjump", (string)FengGameManagerMKII.settings[242]);
//PlayerPrefs.GetString("hmount", (string)FengGameManagerMKII.settings[243]);
//PlayerPrefs.GetInt("chatfeed", (int)FengGameManagerMKII.settings[244]);
//PlayerPrefs.GetFloat("bombR", (float)FengGameManagerMKII.settings[246]);
//PlayerPrefs.GetFloat("bombG", (float)FengGameManagerMKII.settings[247]);
//PlayerPrefs.GetFloat("bombB", (float)FengGameManagerMKII.settings[248]);
//PlayerPrefs.GetFloat("bombA", (float)FengGameManagerMKII.settings[249]);
//PlayerPrefs.GetInt("bombRadius", (int)FengGameManagerMKII.settings[250]);
//PlayerPrefs.GetInt("bombRange", (int)FengGameManagerMKII.settings[251]);
//PlayerPrefs.GetInt("bombSpeed", (int)FengGameManagerMKII.settings[252]);
//PlayerPrefs.GetInt("bombCD", (int)FengGameManagerMKII.settings[253]);
//PlayerPrefs.GetString("cannonUp", (string)FengGameManagerMKII.settings[254]);
//PlayerPrefs.GetString("cannonDown", (string)FengGameManagerMKII.settings[255]);
//PlayerPrefs.GetString("cannonLeft", (string)FengGameManagerMKII.settings[256]);
//PlayerPrefs.GetString("cannonRight", (string)FengGameManagerMKII.settings[257]);
//PlayerPrefs.GetString("cannonFire", (string)FengGameManagerMKII.settings[258]);
//PlayerPrefs.GetString("cannonMount", (string)FengGameManagerMKII.settings[259]);
//PlayerPrefs.GetString("cannonSlow", (string)FengGameManagerMKII.settings[260]);
//PlayerPrefs.GetInt("deadlyCannon", (int)FengGameManagerMKII.settings[261]);
//PlayerPrefs.GetString("liveCam", (string)FengGameManagerMKII.settings[262]);
}
public static void DestroyMainScene()
{
var objectsToDestroy = new[]
{
"PanelLogin",
"LOGIN",
"BG_satLE",
"Colossal",
"Icosphere",
"cube",
"colossal",
"CITY",
"city",
"rock",
"AOTTG_HERO",
"Checkbox",
};
var gos = (GameObject[])FindObjectsOfType(typeof(GameObject));
foreach (var name in objectsToDestroy)
{
foreach (var go in gos)
{
if (go.name.Contains(name) ||
(go.GetComponent() != null && go.GetComponent().text.Contains("Snap")) ||
(go.GetComponent() != null && go.GetComponent().text.Contains("Custom")))
{
Destroy(go);
}
}
}
}
private void OnApplicationQuit()
{
Antis.AntisThreadManager.OnApplicationQuit();
try
{
User.Save();
Network.BanList.Save();
GameModes.Load();
GameModes.Save();
Settings.Save();
Style.Save();
}
catch(Exception ex)
{
UnityEngine.Debug.Log("Error occured on ApplicationQuit\n" + ex.Message + "\n" + ex.StackTrace);
}
}
private void OnLevelWasLoaded(int id)
{
if (Application.loadedLevelName == "menu")
{
if (!Background.IsActive)
{
Background.Enable();
}
if (Chat != null && Chat.IsActive)
{
Chat.Disable();
Chat.Clear();
}
if (Log != null && Log.IsActive)
{
Log.Disable();
Log.Clear();
}
DestroyMainScene();
GameModes.ResetOnLoad();
Network.BanList.Save();
Skins.Humans.HumanSkin.Storage.Clear();
}
else
{
if (IN_GAME_MAIN_CAMERA.GameType == GameType.Single)
{
SingleRunStats.Reset();
}
if (Background.IsActive)
{
Background.Disable();
}
if (Application.loadedLevelName != "characterCreation" && Application.loadedLevelName != "SnapShot" &&
PhotonNetwork.inRoom)
{
if (Chat != null && !Chat.IsActive)
{
Chat.Enable();
}
if (Log != null && !Log.IsActive)
{
Log.Enable();
}
}
}
PhotonNetwork.player.SetCustomProperties(new ExitGames.Client.Photon.Hashtable { { PhotonPlayerProperty.anarchyFlags, 0 }, { PhotonPlayerProperty.anarchyAbuseFlags, 0 } });
PhotonNetwork.SetModProperties();
Pause?.Continue();
Settings.Apply();
VideoSettings.Apply();
if (PauseWindow.IsActive)
{
PauseWindow.DisableImmediate();
}
if (StatsPanel.IsActive)
{
StatsPanel.DisableImmediate();
}
}
private IEnumerator OnGameWasOpened()
{
var back = new GameObject("TempBackground").AddComponent();
yield return StartCoroutine(Anarchyastets.LoadastetBundle());
Instantiate(Anarchyastets.Load("UIManager"));
Instantiate(Anarchyastets.Load("LoadScreen"));
Destroy(back);
}
private void LateUpdate()
{
if (InputManager.IsInputAnarchy((int)InputAnarchy.DebugPanel))
{
if (DebugPanel.IsActive)
{
DebugPanel.DisableImmediate();
}
else
{
DebugPanel.EnableImmediate();
}
}
if (InputManager.IsInputAnarchy((int)InputAnarchy.ChatHistoryPanel))
{
if (ChatHistory.IsActive)
{
ChatHistory.DisableImmediate();
}
else
{
ChatHistory.EnableImmediate();
}
}
if (IN_GAME_MAIN_CAMERA.GameType == GameType.Single && InputManager.IsInputAnarchyHolding((int)InputAnarchy.StatsPanel))
{
InputManager.MenuOn = true;
Screen.showCursor = true;
Screen.lockCursor = false;
StatsPanel.EnableImmediate();
}
if (InputManager.IsInputAnarchy((int)InputAnarchy.Rejoin))
{
Network.NetworkManager.NeedRejoin = true;
PhotonNetwork.Disconnect();
}
}
}
}