Ejemplo n.º 1
0
        protected override void UnloadData()
        {
            try
            {
                if(init)
                {
                    init = false;
                    ladders.Clear();

                    if(MyAPIGateway.Multiplayer.IsServer)
                    {
                        MyAPIGateway.Multiplayer.UnregisterMessageHandler(PACKET_LADDERDATA, ReceivedLadderDataPacket);

                        if(playersOnLadder != null)
                        {
                            playersOnLadder.Clear();
                            playersOnLadder = null;
                        }
                    }

                    if(!isDedicated)
                    {
                        MyAPIGateway.Utilities.MessageEntered -= MessageEntered;
                        MyAPIGateway.Multiplayer.UnregisterMessageHandler(PACKET_STEP, ReceivedStepPacket);

                        if(settings != null)
                        {
                            settings.Close();
                            settings = null;
                        }

                        SaveLearn();
                    }
                }
            }
            catch(Exception e)
            {
                Log.Error(e);
            }

            Log.Close();
        }
Ejemplo n.º 2
0
        public void Init()
        {
            init = true;
            isDedicated = MyAPIGateway.Multiplayer.IsServer && MyAPIGateway.Utilities.IsDedicated;

            Log.Init();

            if(MyAPIGateway.Multiplayer.IsServer)
            {
                playersOnLadder = new Dictionary<ulong, PlayerOnLadder>();
                MyAPIGateway.Multiplayer.RegisterMessageHandler(PACKET_LADDERDATA, ReceivedLadderDataPacket);
            }

            if(!isDedicated)
            {
                settings = new Settings();

                string worldVariables;

                if(MyAPIGateway.Utilities.GetVariable("LadderMod", out worldVariables))
                {
                    grabOnLoad = worldVariables.Contains("grabonload");
                }

                if(MyAPIGateway.Multiplayer.IsServer)
                    settings.clientPrediction = false; // lazy fix for the sounds not playing for hosts xD

                MyAPIGateway.Utilities.MessageEntered += MessageEntered;
                MyAPIGateway.Multiplayer.RegisterMessageHandler(PACKET_STEP, ReceivedStepPacket);

                try
                {
                    if(MyAPIGateway.Utilities.FileExistsInLocalStorage(LEARNFILE, typeof(LadderMod)))
                    {
                        var file = MyAPIGateway.Utilities.ReadFileInLocalStorage(LEARNFILE, typeof(LadderMod));

                        string line;

                        while((line = file.ReadLine()) != null)
                        {
                            line = line.Trim();

                            if(line.StartsWith("//", StringComparison.Ordinal))
                                continue;

                            switch(line)
                            {
                                case "move_climb":
                                    learned[0] = true;
                                    break;
                                case "move_sprint":
                                    learned[1] = true;
                                    break;
                                case "side_dismount":
                                    learned[2] = true;
                                    break;
                                case "jump_dismount":
                                    learned[3] = true;
                                    break;
                                case "crouch_dismount":
                                    learned[4] = true;
                                    break;
                            }
                        }

                        loadedAllLearned = (learned[0] && learned[1] && learned[2] && learned[3] && learned[4]);

                        file.Close();
                    }
                }
                catch(Exception e)
                {
                    Log.Error(e);
                }
            }
        }