Exemple #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DynamicCVar"/> class.
        /// Used by CryConsole.RegisterCVar to construct the CVar.
        /// </summary>
        /// <param name="name"></param>
        /// <param name="value"></param>
        /// <param name="flags"></param>
        /// <param name="help"></param>
        internal DynamicCVar(string name, object value, CVarFlags flags, string help)
        {
            Flags = flags;
            Help  = help;
            Name  = name;

            if (value is int)
            {
                intValue = (int)value;

                NativeCVarMethods.RegisterCVarInt(Name, ref intValue, intValue, Flags, Help);
            }
            else if (value is float || value is double)
            {
                floatValue = (float)value;

                NativeCVarMethods.RegisterCVarFloat(Name, ref floatValue, floatValue, Flags, Help);
            }
            else if (value is string)
            {
                stringValue = value as string;

                // String CVars are not supported yet.
                NativeCVarMethods.RegisterCVarString(Name, stringValue, stringValue, Flags, Help);
            }
            else
            {
                throw new CVarException(string.Format("Invalid data type ({0}) used in CVar {1}.", value.GetType(), Name));
            }
        }
Exemple #2
0
        /// <summary>
        /// Registers a new console variable that will update the user defined float.
        /// </summary>
        /// <param name="name">console variable name</param>
        /// <param name="value">reference to the memory that will be updated</param>
        /// <param name="help">help text that is shown when you use <paramref name="name"/> ? in the console</param>
        /// <param name="flags"></param>
        /// <returns>Newly null if failed, new CVar instance if successful</returns>
        public static CVar RegisterFloat(string name, ref float value, string help = "", CVarFlags flags = CVarFlags.None)
        {
            NativeCVarMethods.RegisterCVarFloat(name, ref value, value, flags, help);

            CVars.Add(new ByRefCVar(name));

            return(CVars.Last());
        }
Exemple #3
0
        public static void Unregister(string name)
        {
            NativeCVarMethods.UnregisterCCommand(name);

            if (Commands.ContainsKey(name))
            {
                Commands.Remove(name);
            }
        }
Exemple #4
0
        /// <summary>
        /// Register a new console command.
        /// </summary>
        /// <param name="name">Command name.</param>
        /// <param name="func">Delegate to the console command function to be called when command is invoked.</param>
        /// <param name="comment">Help string, will be displayed when typing in console "command ?".</param>
        /// <param name="flags">Bitfield consist of VF_ flags (e.g. VF_CHEAT)</param>
        public static void Register(string name, ConsoleCommandDelegate func, string comment = "", CVarFlags flags = CVarFlags.None)
        {
            if (!commands.ContainsKey(name))
            {
                NativeCVarMethods.RegisterCommand(name, comment, flags);

                commands.Add(name, func);
            }
            else
            {
                throw new DuplicateConsoleCommandException(string.Format("The console command {0} was already registered", name));
            }
        }
Exemple #5
0
        /// <summary>
        /// Retrieve a console variable by name - not case sensitive
        /// </summary>
        /// <param name="name">The name of the CVar to retrieve</param>
        /// <returns>null if not found, CVar instance if successful</returns>
        public static CVar Get(string name)
        {
            CVar cvar = CVars.FirstOrDefault(var => var.Name.Equals(name));

            if (cvar != default(CVar))
            {
                return(cvar);
            }

            if (NativeCVarMethods.HasCVar(name))
            {
                CVars.Add(new ExternalCVar(name));

                return(CVars.Last());
            }

            return(null);
        }
Exemple #6
0
        internal static CVar Register(CVarAttribute attribute, MemberInfo memberInfo, string value)
        {
            if (attribute.Name == null)
            {
                attribute.Name = memberInfo.Name;
            }

            NativeCVarMethods.RegisterCVarString(attribute.Name, value, (string)attribute.DefaultValue ?? string.Empty, attribute.Flags, attribute.Help);

            if (memberInfo.MemberType == MemberTypes.Field)
            {
                CVars.Add(new StaticCVarField(attribute, memberInfo as FieldInfo));
            }
            else
            {
                CVars.Add(new StaticCVarProperty(attribute, memberInfo as PropertyInfo));
            }

            return(CVars.Last());
        }
Exemple #7
0
        internal static CVar Register(CVarAttribute attribute, MemberInfo memberInfo, ref float value)
        {
            if (attribute.Name == null)
            {
                attribute.Name = memberInfo.Name;
            }

            NativeCVarMethods.RegisterCVarFloat(attribute.Name, ref value, System.Convert.ToSingle(attribute.DefaultValue), attribute.Flags, attribute.Help);

            if (memberInfo.MemberType == MemberTypes.Field)
            {
                CVars.Add(new StaticCVarField(attribute, memberInfo as FieldInfo));
            }
            else
            {
                CVars.Add(new StaticCVarProperty(attribute, memberInfo as PropertyInfo));
            }

            return(CVars.Last());
        }
Exemple #8
0
        void Serialize()
        {
            var data = new ScriptManagerData();

            data.LastScriptId = LastScriptId;

            data.Input.ActionmapEvents = Input.ActionmapEvents;

            data.Input.KeyEvents   = Input.KeyEventsInvocationList;
            data.Input.MouseEvents = Input.MouseEventsInvocationList;

            if (GameRules.Current != null)
            {
                data.GameRulesId = GameRules.Current.Id;
            }
            else
            {
                data.GameRulesId = -1;
            }

            data.ConsoleCommands  = ConsoleCommand.Commands;
            data.ConsoleVariables = CVar.CVars;

            data.ConsoleVariables.RemoveAll(cvar =>
            {
                if (cvar is ByRefCVar)
                {
                    NativeCVarMethods.UnregisterCVar(cvar.Name, true);

                    return(true);
                }

                return(false);
            });

            AddScriptInstance(data, ScriptType.CryScriptInstance);

            using (var stream = File.Create(SerializedScriptsFile))
                Formatter.Serialize(stream, Scripts);
        }
Exemple #9
0
        /// <summary>
        /// Unregisters an existing console variable
        /// </summary>
        /// <param name="name"></param>
        /// <param name="delete"></param>
        public static void Unregister(string name, bool delete = false)
        {
            NativeCVarMethods.UnregisterCVar(name, delete);

            CVars.RemoveAll(x => x.Name == name);
        }
Exemple #10
0
 public static string GetCommandLineArgument(string name, CommandArgumentType type)
 {
     return(NativeCVarMethods.GetCmdArg(name, (int)type));
 }
Exemple #11
0
 /// <summary>
 /// Executes a string in the console
 /// </summary>
 /// <param name="command">console command e.g. "map testy" - no leading slash</param>
 /// <param name="silent">suppresses log in error case and logging the command to the console</param>
 public static void Execute(string command, bool silent = false)
 {
     NativeCVarMethods.Execute(command, silent);
 }