pump: add interaction menu entries for air pipes

install-platforms
Maikel de Vries 2018-01-13 12:09:59 +01:00
parent dc541620b5
commit eb24079b2f
4 changed files with 77 additions and 3 deletions

View File

@ -121,7 +121,7 @@ public func GetPipeControlMenuEntries(object clonk)
PushBack(menu_entries, GetTankMenuEntry(neutral_pipe, "$MsgConnectNeutral$", 3, LIBRARY_TANK_Menu_Action_Add_Neutral, RGB(80, 80, 120)));
if (IsAllowedSwapSourceDrain())
PushBack(menu_entries, GetTankMenuEntry(Icon_Swap, "$MsgSwapSourceDrain$", 4, LIBRARY_TANK_Menu_Action_Swap_SourceDrain, nil));
PushBack(menu_entries, GetTankMenuEntry(Icon_Swap, "$MsgSwapSourceDrain$", 10, LIBRARY_TANK_Menu_Action_Swap_SourceDrain, nil));
return menu_entries;
}

View File

@ -179,6 +179,70 @@ private func SetInfoMessage(string msg)
UpdateInteractionMenus(this.GetPumpControlMenuEntries);
}
static const LIBRARY_TANK_Menu_Action_Cut_AirPipe = "cutairpipe";
static const LIBRARY_TANK_Menu_Action_Add_AirPipe = "addairpipe";
// Extend liquid tank connection interface to air pipes.
public func GetPipeControlMenuEntries(object clonk)
{
var menu_entries = inherited(clonk, ...);
var drain_pipe = GetDrainPipe();
// Modify cut drain pipe menu entry for air pipe.
if (drain_pipe && !drain_pipe->QueryCutLineConnection(this) && drain_pipe->IsAirPipe())
{
for (var entry in menu_entries)
{
if (entry.extra_data == LIBRARY_TANK_Menu_Action_Cut_Drain)
{
entry.extra_data = LIBRARY_TANK_Menu_Action_Cut_AirPipe;
entry.Priority = 4;
entry.custom.image.BackgroundColor = RGB(0, 153, 255);
entry.custom.text.Text = "$MsgCutAirPipe$";
break;
}
}
}
// Add attach air pipe menu entry.
var air_pipe = FindAvailablePipe(clonk, Find_Func("IsAirPipe"));
if (!drain_pipe && air_pipe)
PushBack(menu_entries, GetTankMenuEntry(air_pipe, "$MsgConnectAirPipe$", 4, LIBRARY_TANK_Menu_Action_Add_AirPipe, RGB(0, 153, 255)));
return menu_entries;
}
public func OnPipeControlHover(id symbol, string action, desc_menu_target, menu_id)
{
if (action == LIBRARY_TANK_Menu_Action_Cut_AirPipe)
{
GuiUpdateText("$DescCutAirPipe$", menu_id, 1, desc_menu_target);
return;
}
if (action == LIBRARY_TANK_Menu_Action_Add_AirPipe)
{
GuiUpdateText("$DescConnectAirPipe$", menu_id, 1, desc_menu_target);
return;
}
return inherited(symbol, action, desc_menu_target, menu_id, ...);
}
public func OnPipeControl(symbol_or_object, string action, bool alt)
{
if (action == LIBRARY_TANK_Menu_Action_Cut_AirPipe)
{
this->DoCutPipe(GetDrainPipe());
UpdateInteractionMenus(this.GetPipeControlMenuEntries);
return;
}
if (action == LIBRARY_TANK_Menu_Action_Add_AirPipe)
{
this->DoConnectPipe(symbol_or_object, PIPE_STATE_Air);
UpdateInteractionMenus(this.GetPipeControlMenuEntries);
return;
}
return inherited(symbol_or_object, action, alt, ...);
}
/*-- Pipe control --*/

View File

@ -33,4 +33,9 @@ MsgHasPipes=Die Pumpe hat schon ein Zu- und Abflussrohr.
PumpMaterials=Pumpe Materialien
MsgEnableMaterial=Schalte das Pumpen von Material %s ein.
MsgDisableMaterial=Schalte das Pumpen von Material %s aus.
MsgDisableMaterial=Schalte das Pumpen von Material %s aus.
MsgCutAirPipe=Luftrohr trennen
MsgConnectAirPipe=Luftrohr anschließen
DescCutAirPipe=Entfernt das Luftrohr.
DescConnectAirPipe=Schließt ein Luftrohr an.

View File

@ -33,4 +33,9 @@ MsgHasPipes=Pump already has a source and a drain pipe.
PumpMaterials=Pump Materials
MsgEnableMaterial=Enable the pumping of material %s.
MsgDisableMaterial=Disable the pumping of material %s.
MsgDisableMaterial=Disable the pumping of material %s.
MsgCutAirPipe=Cut off air pipe
MsgConnectAirPipe=Connect air pipe
DescCutAirPipe=Removes the air pipe.
DescConnectAirPipe=Connects an air pipe.