This repository was archived by the owner on Dec 13, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 123
VRage.Game.ModAPI.Ingame.Utilities.MyIni
Malware edited this page Dec 21, 2018
·
56 revisions
← Index
Namespace: VRage.Game.ModAPI.Ingame.Utilities
Assembly: VRage.Game.dll
A configuration class to parse and create a text string resembling the old fashioned INI format, but with support for multiline values. Do not forget that parsing is a time-consuming task. Keep your parsing to a minimum.
Using MyIni to deal with CustomData end-user configuration: The CustomData:
[kernel] output=DebugTextPanel bootText= |-- HAL9000 -- |Good morning, Dave.The code:
MyIni _ini = new MyIni(); IMyTextPanel _outputTextPanel; public Program() { MyIniParseResult result; if (!_ini.TryParse(Me.CustomData, out result) { Echo($"CustomData error:\nLine {result}"); } // Get the kernel section's output value. If this value is set, the system attempts // to retrieve a text panel with the value set. Otherwise output is ignored. var name = _ini.Get("kernel", "output").ToString(); if (name != null) { _outputTextPanel = GridTerminalSystem.GetBlockWithName<IMyTextPanel>(name); if (_outputTextPanel == null) Echo($"No text panel named {name}"); } // Get the kernel section's boottext value. If no value is given, a default value will be returned. var bootText = _ini.Get("kernel", "bootText").ToString("Kernel is starting up..."); _outputTextPanel?.WritePublicText(bootText); } public void Main() { // Do your stuff. Only parse the configuration when you have to. }Using MyIni to deal with internal storage:
MyIni _storage = new MyIni(); Vector3D _startupPosition; bool _hasTarget; Vector3D _currentTarget; public Program() { // You only need to parse here in the constructor. if (_ini.TryParse(Storage) { var str = _ini.Get("state", "startupPosition").ToString(); Vector3D.TryParse(str, out _startupPosition); str = _ini.Get("state", "currentTarget").ToString(); Vector3D.TryParse(str, out _currentTarget); _hasTarget = _ini.Get("state", "hasTarget").ToBoolean(); } else { // Set up defaults, the storage is nonexistent or corrupt _startupPosition = Me.CubeGrid.Position; } } public void Save() { // You only need to update Storage when the Save method is called. _ini.Set("state", "startupPosition", _startupPosition); _ini.Set("state", "currentTarget", _currentTarget); Storage = _ini.ToString(); } public void Main() { // Do your stuff }This class is NOT THREAD SAFE as it's optimized for programmable block use.
| Member | Description |
|---|---|
string EndContent |
|
string EndComment |
Do you have questions, comments, suggestions for improvements? Is there something I can do better? Did I make a mistake? Please add an issue here, and prefix your issue title with Wiki. Thank you, your help will be very appreciated!