public static void Main(string[] args) { bool_0 = true; DateTime now = DateTime.Now; Output.InitializeStream(true, OutputLevel.DebugInformation); Output.WriteLine("Initializing BoomBang game environment..."); ConfigManager.Initialize(Constants.DataFileDirectory + @"\server-main.cfg"); Output.SetVerbosityLevel((OutputLevel)ConfigManager.GetValue("output.verbositylevel")); foreach (string str in args) { Output.WriteLine("Command line argument: " + str); Input.ProcessInput(str.Split(new char[] { ' ' })); } try { Output.WriteLine("Initializing MySQL manager..."); SqlDatabaseManager.Initialize(); Output.WriteLine("Setting up server listener on port " + ((int)ConfigManager.GetValue("net.bind.port")) + "..."); boomBangTcpListener_0 = new BoomBangTcpListener(new IPEndPoint(IPAddress.Any, (int)ConfigManager.GetValue("net.bind.port")), (int)ConfigManager.GetValue("net.backlog"), new OnNewConnectionCallback(SessionManager.HandleIncomingConnection)); using (SqlDatabaseClient client = SqlDatabaseManager.GetClient()) { Output.WriteLine("Resetting database counters and statistics..."); smethod_0(client); Output.WriteLine("Initializing game components and workers..."); DataRouter.Initialize(); GlobalHandler.Initialize(); SessionManager.Initialize(); CharacterInfoLoader.Initialize(); UserCredentialsAuthenticator.Initialize(); RegisterManager.Initialize(); Class1.smethod_0(); LaptopHandler.Initialize(); CatalogManager.Initialize(client); FlowerPowerManager.Initialize(); NewsCacheManager.Initialize(client); Navigator.Initialize(client); SpaceManager.Initialize(client); SpaceInfoLoader.Initialize(); SpaceHandler.Initialize(); GameHandler.Initialize(); CrossdomainPolicy.Initialize(@"Data\crossdomain.xml"); WordFilterManager.Initialize(client); AdvertisementManager.Initialize(); ContestHandler.Initialize(); SilverCoinsWorker.Initialize(); ModerationBanManager.Initialize(client); } } catch (Exception exception) { HandleFatalError("Could not initialize BoomBang game environment: " + exception.Message + "\nStack trace: " + exception.StackTrace); return; } TimeSpan span = (TimeSpan)(DateTime.Now - now); Output.WriteLine("The server has initialized successfully (" + Math.Round(span.TotalSeconds, 2) + " seconds). Ready for connections.", OutputLevel.Notification); Output.WriteLine("Pulsa ENTER e introduce un comando. Ten una guía de comandos escribiendo HELP", OutputLevel.Notification); Console.Beep(); }
/// <summary> /// Primary scene processing. /// The method must be called once at start. /// Calling this method provides the pathfinding ability in the future. /// </summary> /// <returns></returns> public bool PrimaryProcessing() { if (!isPrimaryProcessingCompleted) { timer = Stopwatch.StartNew(); spaceHandlerInstance = new SpaceHandler(this, cellMinSize, gridDetailLevelsCount, staticObstacleTags, cTSInstance.Token, allowedProcessorCoresCount, agressiveUseMultithreading); if (graphObtainingMethod == GraphObtainingMethods.InGameProcessing) { spaceHandlerInstance.HandleAllObstaclesOnScene(); } else { if (serializedGraphToImport == null) { throw new Exception("BinaryFileNullReferenceException"); } BinaryGraphStorageSerializer.DeserializeBinaryAsync(new MemoryStream(serializedGraphToImport.bytes), this, new Action(() => { spaceHandlerInstance.NotifyRediness(); })); } return(true); } return(false); }
public void OnMouseUpAsButton() { container = transform.parent; handler = container.GetComponent <SpaceHandler>(); handler.pathHere(); }
public static void Main(string[] args) { mAlive = true; DateTime InitStart = DateTime.Now; // Set up basic output Console.WriteLine("Initializing Snowlight..."); // Cannot be localized before config+lang is loaded // Load configuration, translation, and re-configure output from config data ConfigManager.Initialize(Constants.DataFileDirectory + "server-main.cfg"); Output.InitializeStream(true, (OutputLevel)ConfigManager.GetValue("output.verbositylevel")); Output.WriteLine("Initializing Snowlight..."); Localization.Initialize(Constants.LangFileDirectory + "lang_" + ConfigManager.GetValue("lang") + ".lang"); // Process args foreach (string arg in args) { Output.WriteLine(Localization.GetValue("core.init.cmdarg", arg)); Input.ProcessInput(arg.Split(' ')); } try { // Initialize and test database Output.WriteLine(Localization.GetValue("core.init.mysql")); SqlDatabaseManager.Initialize(); // Initialize network components Output.WriteLine(Localization.GetValue("core.init.net", ConfigManager.GetValue("net.bind.port").ToString())); mServer = new SnowTcpListener(new IPEndPoint((IPAddress)ConfigManager.GetValue("net.bind.ip"), (int)ConfigManager.GetValue("net.bind.port")), (int)ConfigManager.GetValue("net.backlog"), new OnNewConnectionCallback( SessionManager.HandleIncomingConnection)); /*Output.WriteLine(Localization.GetValue("core.init.net", ConfigManager.GetValue("net.cmd.bind.port").ToString())); * musServer = new SnowTcpListener(new IPEndPoint((IPAddress)ConfigManager.GetValue("net.cmd.bind.ip"), (int)ConfigManager.GetValue("net.cmd.bind.port")), * (int)ConfigManager.GetValue("net.backlog"), new OnNewConnectionCallback( * CommandListener.parse));*/ using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { Output.WriteLine(Localization.GetValue("core.init.dbcleanup")); PerformDatabaseCleanup(MySqlClient); Output.WriteLine(Localization.GetValue("core.init.game")); // Core DataRouter.Initialize(); // Sessions, characters SessionManager.Initialize(); // RandomGenerator.Initialize(); StatisticsSyncUtil.Initialize(); //Global Handler Global.Initialize(); //Login Handler Login.Initialize(); CharacterInfoLoader.Initialize(); UserCredentialsAuthenticator.Initialize(); //Bpad Handler LaptopHandler.Initialize(); //FlowerHandler FlowerPower.Initialize(); ContestHandler.Initialize(); CatalogManager.Initialize(MySqlClient); NewsCacheManager.Initialize(MySqlClient); SpaceInfoLoader.Initialize(); Navigator.Initialize(MySqlClient); LaptopHandler.Initialize(); UserCredentialsAuthenticator.Initialize(); SpaceManager.Initialize(MySqlClient); SpaceHandler.Initialize(); SilverCoinsWorker.Initialize(); } } catch (Exception e) { HandleFatalError(Localization.GetValue("core.init.error.details", new string[] { e.Message, e.StackTrace })); return; } // Init complete TimeSpan TimeSpent = DateTime.Now - InitStart; Output.WriteLine(Localization.GetValue("core.init.ok", Math.Round(TimeSpent.TotalSeconds, 2).ToString()), OutputLevel.Notification); Output.WriteLine((string)Localization.GetValue("core.init.ok.cmdinfo"), OutputLevel.Notification); Console.Write("$" + Environment.UserName.ToLower() + "@snowlight> "); Console.Beep(); Input.Listen(); // This will make the main thread process console while Program.Alive. }
public override void OnInspectorGUI() { thisSpaceManagerInst = (SpaceManager)target; EditorGUILayout.BeginVertical(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Assign obstacle tags:", EditorStyles.boldLabel); if (thisSpaceManagerInst.staticObstacleTags != null) { for (int i = 0; i < thisSpaceManagerInst.staticObstacleTags.Count; i++) { EditorGUILayout.BeginHorizontal(); thisSpaceManagerInst.staticObstacleTags[i] = EditorGUILayout.TagField(thisSpaceManagerInst.staticObstacleTags[i]); if (GUILayout.Button("Delete tag")) { thisSpaceManagerInst.staticObstacleTags.RemoveAt(i); } EditorGUILayout.EndHorizontal(); } } EditorGUILayout.Separator(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Select an obstacle tag:", EditorStyles.wordWrappedLabel); newTagStr = EditorGUILayout.TagField(newTagStr); if (GUILayout.Button("Add tag")) { if (newTagStr != "Untagged" && !thisSpaceManagerInst.staticObstacleTags.Contains(newTagStr)) { thisSpaceManagerInst.staticObstacleTags.Add(newTagStr); } } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Space processing settings:", EditorStyles.boldLabel); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Minimum size of cells, composing the space", EditorStyles.wordWrappedLabel); _cellMinSize.floatValue = Mathf.Max(EditorGUILayout.FloatField(thisSpaceManagerInst.cellMinSize), .05f); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Number of spatial graph levels", EditorStyles.wordWrappedLabel); _gridDetailLevelsCount.intValue = EditorGUILayout.IntSlider(thisSpaceManagerInst.gridDetailLevelsCount, 1, 15); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Show obstacle cells in editor", EditorStyles.wordWrappedLabel); _traceCellsInEditor.boolValue = EditorGUILayout.Toggle(_traceCellsInEditor.boolValue); EditorGUILayout.EndHorizontal(); if (thisSpaceManagerInst.traceCellsInEditor) { _levelToTrace.intValue = EditorGUILayout.IntSlider(thisSpaceManagerInst.levelToTrace, 0, thisSpaceManagerInst.gridDetailLevelsCount - 1); } EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Graph obtaining at scene start", EditorStyles.wordWrappedLabel); _obtainGraphAtStart.boolValue = EditorGUILayout.Toggle(_obtainGraphAtStart.boolValue); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Source of graph obtaining:"); SpaceManager.GraphObtainingMethods newEnum = (SpaceManager.GraphObtainingMethods)_graphObtainingMethod.enumValueIndex; newEnum = (SpaceManager.GraphObtainingMethods)EditorGUILayout.EnumPopup(newEnum); _graphObtainingMethod.enumValueIndex = (int)newEnum; EditorGUILayout.EndHorizontal(); if (thisSpaceManagerInst.graphObtainingMethod == SpaceManager.GraphObtainingMethods.DeserializingFromFile) { EditorGUILayout.BeginHorizontal(); _serilizedGraphToImport.objectReferenceValue = (TextAsset)EditorGUILayout.ObjectField( "Choose .bytes file:", _serilizedGraphToImport.objectReferenceValue, typeof(TextAsset), false); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); if (!isHandelingInProgress) { if (GUILayout.Button("Handle obstacles and serialize")) { CTSInstance = new CancellationTokenSource(); spaceHandlerInstance = new SpaceHandler(thisSpaceManagerInst, thisSpaceManagerInst.cellMinSize, thisSpaceManagerInst.gridDetailLevelsCount, thisSpaceManagerInst.staticObstacleTags, CTSInstance.Token, Environment.ProcessorCount, false); if (!spaceHandlerInstance.HandleAllObstaclesOnScene()) { Debug.Log("There is no any obstacles at the scene"); } else { isHandelingInProgress = true; } } } else { EditorGUILayout.LabelField("Obstacles handeling in progress..", EditorStyles.wordWrappedLabel); if (EditorUtility.DisplayCancelableProgressBar("Obstacles handeling progress", "Tris handeling: " + spaceHandlerInstance.processedTrisCount + "/" + spaceHandlerInstance.totalTrisCount, (float)spaceHandlerInstance.processedTrisCount / (float)spaceHandlerInstance.totalTrisCount)) { FinishInEditorHandeling(); } if (spaceHandlerInstance != null && spaceHandlerInstance.isPrimaryProcessingCompleted) { FinishInEditorHandeling(); string filePath = EditorUtility.SaveFilePanelInProject("Save serialized spatial graph data", SceneManager.GetActiveScene().name + "_" + thisSpaceManagerInst.cellMinSize + "_" + thisSpaceManagerInst.gridDetailLevelsCount, "bytes", "Please enter a file name to save serialized data to"); using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate)) { BinaryGraphStorageSerializer.SerializeBinary(fs, SpaceGraph.occCellsLevels, thisSpaceManagerInst); } AssetDatabase.Refresh(); _serilizedGraphToImport.objectReferenceValue = (TextAsset)AssetDatabase.LoadAssetAtPath(filePath, typeof(TextAsset)); } Repaint(); } EditorGUILayout.EndHorizontal(); } EditorGUILayout.LabelField("Threading settings:", EditorStyles.boldLabel); int ProcessorCount = Environment.ProcessorCount - 1; if (ProcessorCount <= 0) { ProcessorCount = 1; } EditorGUILayout.LabelField("Number of available processor cores is " + ProcessorCount + ".\n(1 core will be left for other processes whenever possible.)", EditorStyles.wordWrappedLabel); EditorGUILayout.LabelField("The number of processor cores allowed for use by the asset:", EditorStyles.wordWrappedLabel); string[] selectionStrings = { "All processor cores", "Number of Processor cores with a multiplier", "Fixed value" }; _threadsCountMode.intValue = GUILayout.SelectionGrid(thisSpaceManagerInst.threadsCountMode, selectionStrings, 1); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Aggressive use of multi-threading", EditorStyles.wordWrappedLabel); _agressiveUseMultithreading.boolValue = EditorGUILayout.Toggle(_agressiveUseMultithreading.boolValue); EditorGUILayout.EndHorizontal(); if (thisSpaceManagerInst.threadsCountMode == 1) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Multiplier: "); _coresCountMultiplier.floatValue = Mathf.Clamp(EditorGUILayout.FloatField(thisSpaceManagerInst.coresCountMultiplier), .05f, 1f); EditorGUILayout.EndHorizontal(); } if (thisSpaceManagerInst.threadsCountMode == 2) { EditorGUILayout.LabelField("This value will be reduced on the user's device if it has a smaller number of cores.", EditorStyles.wordWrappedLabel); _allowedProcessorCoresCount.intValue = EditorGUILayout.IntSlider(thisSpaceManagerInst.allowedProcessorCoresCount, 1, ProcessorCount); } EditorGUILayout.EndVertical(); serializedObject.ApplyModifiedProperties(); Undo.RecordObject(target, "Static obstacle tag added"); }