public void Run(object sender, EventArgs e) { Areas.Load(MainWindow.MapInfo.CurrBiome); if (!Characters.Player.isalive) { Events.CombatDeath.Load(); } }
public static bool Load(string filename) { // load in data from file try { FieldInfo[] fields = typeof(SaveData).GetFields(BindingFlags.Static | BindingFlags.Public); object[,] a; Stream f = File.Open(filename, FileMode.Open); SoapFormatter formatter = new SoapFormatter(); a = formatter.Deserialize(f) as object[, ]; f.Close(); if (a.GetLength(0) != fields.Length) { return(false); } int i = 0; foreach (FieldInfo field in fields) { if (field.Name == (a[i, 0] as string)) { field.SetValue(null, a[i, 1]); } i++; } ; // set data to relevent things SleepLoc.pos = new Vec() { sleepposx, sleepposy }; SleepLoc.chunkpos = new Vec() { sleepchunkx, sleepchunky }; MainWindow.Time.time = time; MainWindow.Sun.Draw(); SleepLoc.Load(); var temp = Characters.Player.CBTDesc; Characters.Player = player; Characters.Player.CBTDesc = temp; MainWindow.MapInfo.Update(); TransformGroup group = new TransformGroup(); group.Children.Add(new TranslateTransform(-MainWindow.MapInfo.position[0], -MainWindow.MapInfo.position[1])); MainWindow.App.map.RenderTransform = group; Areas.Load(MainWindow.MapInfo.CurrBiome); Console.WriteLine("Load successfull..."); return(true); } catch { Console.WriteLine("Load failed..."); return(false); } }
// interactive stuffs private void MapMouseDrag(object sender, MouseEventArgs e) { if (MapInfo.DoDrag && MapInfo.CanDrag) { bool doupdate = false; Vec deltamouse = MapInfo.OldMousePos - new Vec() { e.GetPosition(map).X, e.GetPosition(map).Y }; Areas.TotalDistance += deltamouse.Mag; Time.delta = (deltamouse.Mag * MapInfo.MoveRate); Time.time += (uint)Time.delta; MapInfo.position = MapInfo.position + deltamouse; if (MapInfo.position[0] < -100) { MapInfo.position[0] += 200; MapInfo.chunkpos[0] -= 1; doupdate = true; } if (MapInfo.position[0] > 100) { MapInfo.position[0] -= 200; MapInfo.chunkpos[0] += 1; doupdate = true; } if (MapInfo.position[1] < -100) { MapInfo.position[1] += 200; MapInfo.chunkpos[1] -= 1; doupdate = true; } if (MapInfo.position[1] > 100) { MapInfo.position[1] -= 200; MapInfo.chunkpos[1] += 1; doupdate = true; } if (doupdate) { MapInfo.DoDrag = false; MapInfo.Update(); } MapInfo.MoveUpdate(); Areas.Load(MapInfo.CurrBiome); TransformGroup group = new TransformGroup(); group.Children.Add(new TranslateTransform(-MapInfo.position[0], -MapInfo.position[1])); map.RenderTransform = group; Characters.Update(); Sun.Draw(); double shortest_dist = double.MaxValue; for (int i = -1; i <= 1; i++) { for (int j = -1; j <= 1; j++) { try { foreach (Bases.Base checking in Bases.BaseList[(int)MapInfo.chunkpos[0] + i, (int)MapInfo.chunkpos[1] + j]) { Vec temp = MapInfo.position + new Vec() { 100, 100 } -(checking.pos + new Vec() { 200 * i, 200 * j }); double dist = temp * temp; if (dist <= shortest_dist) { shortest_dist = dist; Bases.NearestBase = checking; } } } catch { } } } Bases.Base temp_base = Bases.SelectedBase; if (Bases.NearestBase.distance_to <= 50) { Bases.SelectedBase = Bases.NearestBase; } else { Bases.SelectedBase = null; } if (temp_base != Bases.SelectedBase) { MapInfo.Update(); } } }