Beispiel #1
0
        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();
        }
Beispiel #2
0
    /// <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();
 }
Beispiel #4
0
        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.
        }
Beispiel #5
0
    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");
    }