public static bool TryParse(string s, out WindowLocation loc) { string[] parts = s.Split('/'); loc = new WindowLocation(); return((parts.Length == 6) && long.TryParse(parts[0], out loc.BlockId) && int.TryParse(parts[1], out loc.SurfaceId) && float.TryParse(parts[2], out loc.Area.Position.X) && float.TryParse(parts[3], out loc.Area.Position.Y) && float.TryParse(parts[4], out loc.Area.Size.X) && float.TryParse(parts[5], out loc.Area.Size.Y)); }
void Load(MyIni state) { WindowLocation loc; List <MyIniKey> keys = new List <MyIniKey>(); state.GetKeys(ID, keys); PendingScreens.Clear(); foreach (var key in keys) { if (WindowLocation.TryParse(key.Name, out loc)) { //we store a would-be window into a buffer - we will create it once we find that text surface again. string value = state.Get(key).ToString(); int idx = value.IndexOf('\n'); if (idx < 0) { PendingScreens.Add(new MyTuple <WindowLocation, string, string>(loc, value, string.Empty)); } else { PendingScreens.Add(new MyTuple <WindowLocation, string, string>(loc, value.Substring(0, idx), value.Substring(idx + 1))); } } } }
/// <summary>Constructor - only to be used by screen manager.</summary> public Window(WindowLocation loc, IMyTextSurface surface, object data, IHasOutput job) { Location = loc; Surface = surface; Data = data; Job = job; }