public void UpdateTele() { telelist.Clear(); foreach (Map.Object key in mapRenderer.Map.Objects) { if (ThingDb.Things[key.Name].Xfer == "TransporterXfer" && key.Extent != -2) { TransporterXfer extraData = key.GetExtraData <TransporterXfer>(); if (!telelist.ContainsKey(key)) { telelist.Add(key, extraData.ExtentLink); } } else if ((ThingDb.Things[key.Name].Xfer == "ElevatorXfer" || ThingDb.Things[key.Name].Xfer == "ElevatorShaftXfer") && key.Extent != -2) { ElevatorXfer extraData = key.GetExtraData <ElevatorXfer>(); telelist.Add(key, extraData.ExtentLink); } else if (ThingDb.Things[key.Name].Xfer == "HoleXfer" && key.Extent != -2) { key.GetExtraData <HoleXfer>(); telelist.Add(key, -1); } } }
public override void SetObject(Map.Object obj) { this.obj = obj; ThingDb.Thing tt = ThingDb.Things[obj.Name]; // читаем Xfer xfer = obj.GetExtraData <ElevatorXfer>(); List <Map.Object> objects = new List <Map.Object>(); // убираем этот элеватор из списков listElevators.Remove(obj); listElevShafts.Remove(obj); // для шахт выводим список подьемников if (tt.HasClassFlag(ThingDb.Thing.ClassFlags.ELEVATOR_SHAFT)) { objects = listElevators; isShaft = true; } // для подьемников список шахт else if (tt.HasClassFlag(ThingDb.Thing.ClassFlags.ELEVATOR)) { objects = listElevShafts; isShaft = false; } elevatorList.Items.Clear(); string name; foreach (Map.Object e in objects) { name = e.ToString(); if (e.Scr_Name.Length > 0) { name = '"' + e.ScrNameShort + '"'; } elevatorList.Items.Add(name); } // показываем куда подключен if (xfer.ExtentLink > 0) { checkIsLinked.Checked = true; int index = 0; foreach (Map.Object o in objects) { if (o.Extent == xfer.ExtentLink) { elevatorList.SelectedIndex = index; break; } index++; } } }