Advertisement
drabont

Space Engineers - Прототип µSCADA на примере шлюза

Aug 25th, 2019
543
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.01 KB | None | 0 0
  1. public Program() {Runtime.UpdateFrequency = UpdateFrequency.Update1;}
  2. IMyTerminalBlock  _(string s){return GridTerminalSystem.GetBlockWithName(s);}
  3. public void Main() {
  4.  
  5.     //подключаем именованные блоки
  6.     var m = (IMyTextPanel)_("airlock_mon") ?? Me.GetSurface(0);
  7.     var d1 = (IMyDoor)_("airlock_door_in");
  8.     var d2 = (IMyDoor)_("airlock_door_out");
  9.     var s0 = (IMySensorBlock)_("airlock_sensor");
  10.     var v0 = (IMyAirVent)_("airlock_vent");
  11.     var v1 = (IMyAirVent)_("airlock_vent_in");
  12.     var v2 = (IMyAirVent)_("airlock_vent_out");
  13.     var t0 = (IMyGasTank)_("airlock_tank");
  14.  
  15.     //настраиваем параметры дисплея
  16.     m.FontColor = Color.Gray;
  17.     m.BackgroundColor = new Color(0,0,7);
  18.     m.FontSize = 26.4f/(27);
  19.     m.Font = "Monospace";
  20.     m.Alignment =TextAlignment.LEFT;
  21.     m.ContentType = ContentType.TEXT_AND_IMAGE;
  22.     m.TextPadding = 0;
  23.  
  24.     //объявляем функции преобразователи
  25.     Func<IMySensorBlock,char>c_s=s=>"∙☺"[s==null?0:s.Enabled?s.IsActive?3:2:1];
  26.     Func<IMyDoor,char>c_d=d=>"∙ ₪"[d==null?0:d.Enabled?2+(int)d.Status:1];
  27.     Func<IMyAirVent,char>c_v=v=>"∙"[v==null?0:v.Enabled?v.CanPressurize?v.Depressurize?4:3:2:1];
  28.     Func<IMyAirVent,string>s_v=v=>new string('●',(int)((v?.GetOxygenLevel()??0)*10)).PadRight(10,'∙');
  29.     Func<IMyGasTank,string>s_t=t=>$"{(t?.FilledRatio??0)*100:000}{"∙%"[t==null?0:t.Enabled?t.Stockpile?3:2:1]}";
  30.  
  31.     //выводим информацию
  32.     m.WriteText($"{System.DateTime.Now:T} ┌{c_v(v1)} {s_v(v1)} ├{c_d(d1)}┤\n",false);
  33.     m.WriteText($" ▄▀▀▀▀▄  ├{c_v(v0)} {s_v(v0)} ≡{c_s(s0)}│\n",true);
  34.     m.WriteText($" ▌{s_t(t0)}▐──┴{c_v(v2)} {s_v(v2)} ├{c_d(d2)}┤\n",true);
  35.  
  36.     //сюда, при желании, добавляем логику работы шлюза используя подключенные блоки
  37.     m.WriteText($"\n{ t0.DetailedInfo }" ,true);
  38.  
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement