forked from Mirrors/openclonk
Renamed pipe control internals
parent
00b1b37787
commit
a8c475d212
|
@ -14,24 +14,24 @@
|
|||
*/
|
||||
|
||||
|
||||
static const LIBRARY_TANK_Menu_Action_Add_Drain = "adddrain";
|
||||
static const LIBRARY_TANK_Menu_Action_Add_Source = "addsource";
|
||||
static const LIBRARY_TANK_Menu_Action_Add_Neutral = "addneutral";
|
||||
static const LIBRARY_TANK_Menu_Action_Cut_Drain = "cutdrain";
|
||||
static const LIBRARY_TANK_Menu_Action_Cut_Source = "cutsource";
|
||||
static const LIBRARY_TANK_Menu_Action_Cut_Neutral = "cutneutral";
|
||||
static const LIBRARY_TANK_Menu_Action_Swap_SourceDrain = "swapsourcedrain";
|
||||
static const LIBRARY_TANK_Menu_Action_Description = "description";
|
||||
static const LIBRARY_PIPE_Menu_Action_Add_Drain = "adddrain";
|
||||
static const LIBRARY_PIPE_Menu_Action_Add_Source = "addsource";
|
||||
static const LIBRARY_PIPE_Menu_Action_Add_Neutral = "addneutral";
|
||||
static const LIBRARY_PIPE_Menu_Action_Cut_Drain = "cutdrain";
|
||||
static const LIBRARY_PIPE_Menu_Action_Cut_Source = "cutsource";
|
||||
static const LIBRARY_PIPE_Menu_Action_Cut_Neutral = "cutneutral";
|
||||
static const LIBRARY_PIPE_Menu_Action_Swap_SourceDrain = "swapsourcedrain";
|
||||
static const LIBRARY_PIPE_Menu_Action_Description = "description";
|
||||
|
||||
|
||||
local lib_tank; // proplist for local variables
|
||||
local lib_pipe_control; // proplist for local variables
|
||||
|
||||
|
||||
/*-- Callbacks --*/
|
||||
|
||||
public func Construction()
|
||||
{
|
||||
lib_tank = {
|
||||
lib_pipe_control = {
|
||||
drain_pipe = nil,
|
||||
source_pipe = nil,
|
||||
neutral_pipe = nil,
|
||||
|
@ -79,15 +79,15 @@ public func GetPipeControlMenuEntries(object clonk)
|
|||
var menu_entries = [];
|
||||
|
||||
// Add info message about pipe control.
|
||||
PushBack(menu_entries, {symbol = this, extra_data = LIBRARY_TANK_Menu_Action_Description,
|
||||
PushBack(menu_entries, {symbol = this, extra_data = LIBRARY_PIPE_Menu_Action_Description,
|
||||
custom =
|
||||
{
|
||||
Prototype = lib_tank.custom_entry,
|
||||
Prototype = lib_pipe_control.custom_entry,
|
||||
Bottom = "1.2em",
|
||||
Priority = -1,
|
||||
BackgroundColor = RGB(25, 100, 100),
|
||||
text = {Prototype = lib_tank.custom_entry.text, Text = "$MenuPipeControl$"},
|
||||
image = {Prototype = lib_tank.custom_entry.image, Symbol = Pipe}
|
||||
text = {Prototype = lib_pipe_control.custom_entry.text, Text = "$MenuPipeControl$"},
|
||||
image = {Prototype = lib_pipe_control.custom_entry.image, Symbol = Pipe}
|
||||
}});
|
||||
|
||||
var source_pipe = FindAvailablePipe(clonk, Find_Func("IsSourcePipe"));
|
||||
|
@ -97,36 +97,36 @@ public func GetPipeControlMenuEntries(object clonk)
|
|||
if (GetSourcePipe())
|
||||
{
|
||||
if (!GetSourcePipe()->QueryCutLineConnection(this))
|
||||
PushBack(menu_entries, GetTankMenuEntry(Icon_Cancel, GetConnectedPipeMessage("$MsgCutSource$", GetSourcePipe()), 1, LIBRARY_TANK_Menu_Action_Cut_Source, RGB(102, 136, 34)));
|
||||
PushBack(menu_entries, GetTankMenuEntry(Icon_Cancel, GetConnectedPipeMessage("$MsgCutSource$", GetSourcePipe()), 1, LIBRARY_PIPE_Menu_Action_Cut_Source, RGB(102, 136, 34)));
|
||||
}
|
||||
else if (source_pipe)
|
||||
{
|
||||
PushBack(menu_entries, GetTankMenuEntry(source_pipe, GetConnectedPipeMessage("$MsgConnectSource$", source_pipe), 1, LIBRARY_TANK_Menu_Action_Add_Source, RGB(102, 136, 34)));
|
||||
PushBack(menu_entries, GetTankMenuEntry(source_pipe, GetConnectedPipeMessage("$MsgConnectSource$", source_pipe), 1, LIBRARY_PIPE_Menu_Action_Add_Source, RGB(102, 136, 34)));
|
||||
}
|
||||
|
||||
if (GetDrainPipe())
|
||||
{
|
||||
if (!GetDrainPipe()->QueryCutLineConnection(this))
|
||||
PushBack(menu_entries, GetTankMenuEntry(Icon_Cancel, GetConnectedPipeMessage("$MsgCutDrain$", GetDrainPipe()), 2, LIBRARY_TANK_Menu_Action_Cut_Drain, RGB(238, 102, 0)));
|
||||
PushBack(menu_entries, GetTankMenuEntry(Icon_Cancel, GetConnectedPipeMessage("$MsgCutDrain$", GetDrainPipe()), 2, LIBRARY_PIPE_Menu_Action_Cut_Drain, RGB(238, 102, 0)));
|
||||
}
|
||||
else if (drain_pipe)
|
||||
{
|
||||
PushBack(menu_entries, GetTankMenuEntry(drain_pipe, GetConnectedPipeMessage("$MsgConnectDrain$", drain_pipe), 2, LIBRARY_TANK_Menu_Action_Add_Drain, RGB(238, 102, 0)));
|
||||
PushBack(menu_entries, GetTankMenuEntry(drain_pipe, GetConnectedPipeMessage("$MsgConnectDrain$", drain_pipe), 2, LIBRARY_PIPE_Menu_Action_Add_Drain, RGB(238, 102, 0)));
|
||||
}
|
||||
|
||||
if (GetNeutralPipe())
|
||||
{
|
||||
if (!GetNeutralPipe()->QueryCutLineConnection(this))
|
||||
PushBack(menu_entries, GetTankMenuEntry(Icon_Cancel, GetConnectedPipeMessage("$MsgCutNeutral$", GetNeutralPipe()), 3, LIBRARY_TANK_Menu_Action_Cut_Neutral, RGB(80, 80, 120)));
|
||||
PushBack(menu_entries, GetTankMenuEntry(Icon_Cancel, GetConnectedPipeMessage("$MsgCutNeutral$", GetNeutralPipe()), 3, LIBRARY_PIPE_Menu_Action_Cut_Neutral, RGB(80, 80, 120)));
|
||||
}
|
||||
else if (neutral_pipe)
|
||||
{
|
||||
PushBack(menu_entries, GetTankMenuEntry(neutral_pipe, GetConnectedPipeMessage("$MsgConnectNeutral$", neutral_pipe), 3, LIBRARY_TANK_Menu_Action_Add_Neutral, RGB(80, 80, 120)));
|
||||
PushBack(menu_entries, GetTankMenuEntry(neutral_pipe, GetConnectedPipeMessage("$MsgConnectNeutral$", neutral_pipe), 3, LIBRARY_PIPE_Menu_Action_Add_Neutral, RGB(80, 80, 120)));
|
||||
}
|
||||
|
||||
if (IsAllowedSwapSourceDrain())
|
||||
{
|
||||
PushBack(menu_entries, GetTankMenuEntry(Icon_Swap, GetConnectedPipeMessage("$MsgSwapSourceDrain$", GetSourcePipe(), GetDrainPipe()), 10, LIBRARY_TANK_Menu_Action_Swap_SourceDrain, nil));
|
||||
PushBack(menu_entries, GetTankMenuEntry(Icon_Swap, GetConnectedPipeMessage("$MsgSwapSourceDrain$", GetSourcePipe(), GetDrainPipe()), 10, LIBRARY_PIPE_Menu_Action_Swap_SourceDrain, nil));
|
||||
}
|
||||
|
||||
return menu_entries;
|
||||
|
@ -137,54 +137,54 @@ public func GetTankMenuEntry(symbol, string text, int priority, extra_data, int
|
|||
return {symbol = symbol, extra_data = extra_data,
|
||||
custom =
|
||||
{
|
||||
Prototype = lib_tank.custom_entry,
|
||||
Prototype = lib_pipe_control.custom_entry,
|
||||
Priority = priority,
|
||||
text = {Prototype = lib_tank.custom_entry.text, Text = text},
|
||||
image = {Prototype = lib_tank.custom_entry.image, Symbol = symbol, BackgroundColor = clr},
|
||||
text = {Prototype = lib_pipe_control.custom_entry.text, Text = text},
|
||||
image = {Prototype = lib_pipe_control.custom_entry.image, Symbol = symbol, BackgroundColor = clr},
|
||||
}};
|
||||
}
|
||||
|
||||
public func OnPipeControlHover(symbol_or_object, string action, desc_menu_target, menu_id)
|
||||
{
|
||||
var text = "";
|
||||
if (action == LIBRARY_TANK_Menu_Action_Add_Drain) text = GetConnectedPipeDescription("$DescConnectDrain$", symbol_or_object);
|
||||
else if (action == LIBRARY_TANK_Menu_Action_Cut_Drain) text = GetConnectedPipeDescription("$DescCutDrain$", GetDrainPipe());
|
||||
else if (action == LIBRARY_TANK_Menu_Action_Add_Source) text = GetConnectedPipeDescription("$DescConnectSource$", symbol_or_object);
|
||||
else if (action == LIBRARY_TANK_Menu_Action_Cut_Source) text = GetConnectedPipeDescription("$DescCutSource$", GetSourcePipe());
|
||||
else if (action == LIBRARY_TANK_Menu_Action_Add_Neutral) text = GetConnectedPipeDescription("$DescConnectNeutral$", symbol_or_object);
|
||||
else if (action == LIBRARY_TANK_Menu_Action_Cut_Neutral) text = GetConnectedPipeDescription("$DescCutNeutral$", GetNeutralPipe());
|
||||
else if (action == LIBRARY_TANK_Menu_Action_Swap_SourceDrain) text = GetConnectedPipeDescription("$DescSwapSourceDrain$", GetSourcePipe(), GetDrainPipe());
|
||||
else if (action == LIBRARY_TANK_Menu_Action_Description) text = this.Description;
|
||||
if (action == LIBRARY_PIPE_Menu_Action_Add_Drain) text = GetConnectedPipeDescription("$DescConnectDrain$", symbol_or_object);
|
||||
else if (action == LIBRARY_PIPE_Menu_Action_Cut_Drain) text = GetConnectedPipeDescription("$DescCutDrain$", GetDrainPipe());
|
||||
else if (action == LIBRARY_PIPE_Menu_Action_Add_Source) text = GetConnectedPipeDescription("$DescConnectSource$", symbol_or_object);
|
||||
else if (action == LIBRARY_PIPE_Menu_Action_Cut_Source) text = GetConnectedPipeDescription("$DescCutSource$", GetSourcePipe());
|
||||
else if (action == LIBRARY_PIPE_Menu_Action_Add_Neutral) text = GetConnectedPipeDescription("$DescConnectNeutral$", symbol_or_object);
|
||||
else if (action == LIBRARY_PIPE_Menu_Action_Cut_Neutral) text = GetConnectedPipeDescription("$DescCutNeutral$", GetNeutralPipe());
|
||||
else if (action == LIBRARY_PIPE_Menu_Action_Swap_SourceDrain) text = GetConnectedPipeDescription("$DescSwapSourceDrain$", GetSourcePipe(), GetDrainPipe());
|
||||
else if (action == LIBRARY_PIPE_Menu_Action_Description) text = this.Description;
|
||||
GuiUpdateText(text, menu_id, 1, desc_menu_target);
|
||||
}
|
||||
|
||||
public func OnPipeControl(symbol_or_object, string action, object clonk)
|
||||
{
|
||||
if (action == LIBRARY_TANK_Menu_Action_Add_Source)
|
||||
if (action == LIBRARY_PIPE_Menu_Action_Add_Source)
|
||||
{
|
||||
this->DoConnectPipe(symbol_or_object, PIPE_STATE_Source);
|
||||
}
|
||||
else if (action == LIBRARY_TANK_Menu_Action_Cut_Source)
|
||||
else if (action == LIBRARY_PIPE_Menu_Action_Cut_Source)
|
||||
{
|
||||
this->DoCutPipe(GetSourcePipe(), clonk);
|
||||
}
|
||||
else if (action == LIBRARY_TANK_Menu_Action_Add_Drain)
|
||||
else if (action == LIBRARY_PIPE_Menu_Action_Add_Drain)
|
||||
{
|
||||
this->DoConnectPipe(symbol_or_object, PIPE_STATE_Drain);
|
||||
}
|
||||
else if (action == LIBRARY_TANK_Menu_Action_Cut_Drain)
|
||||
else if (action == LIBRARY_PIPE_Menu_Action_Cut_Drain)
|
||||
{
|
||||
this->DoCutPipe(GetDrainPipe(), clonk);
|
||||
}
|
||||
else if (action == LIBRARY_TANK_Menu_Action_Add_Neutral)
|
||||
else if (action == LIBRARY_PIPE_Menu_Action_Add_Neutral)
|
||||
{
|
||||
this->DoConnectPipe(symbol_or_object, PIPE_STATE_Neutral);
|
||||
}
|
||||
else if (action == LIBRARY_TANK_Menu_Action_Cut_Neutral)
|
||||
else if (action == LIBRARY_PIPE_Menu_Action_Cut_Neutral)
|
||||
{
|
||||
this->DoCutPipe(GetNeutralPipe(), clonk);
|
||||
}
|
||||
else if (action == LIBRARY_TANK_Menu_Action_Swap_SourceDrain)
|
||||
else if (action == LIBRARY_PIPE_Menu_Action_Swap_SourceDrain)
|
||||
{
|
||||
this->DoSwapSourceDrain(GetSourcePipe(), GetDrainPipe());
|
||||
}
|
||||
|
@ -218,26 +218,26 @@ public func GetConnectedPipeDescription(string base_desc, object pipe1, object p
|
|||
|
||||
/*-- Handle Connections --*/
|
||||
|
||||
public func GetDrainPipe() { return lib_tank.drain_pipe;}
|
||||
public func GetSourcePipe() { return lib_tank.source_pipe;}
|
||||
public func GetNeutralPipe() { return lib_tank.neutral_pipe;}
|
||||
public func GetDrainPipe() { return lib_pipe_control.drain_pipe;}
|
||||
public func GetSourcePipe() { return lib_pipe_control.source_pipe;}
|
||||
public func GetNeutralPipe() { return lib_pipe_control.neutral_pipe;}
|
||||
|
||||
public func SetDrainPipe(object drain_pipe)
|
||||
{
|
||||
lib_tank.drain_pipe = drain_pipe;
|
||||
return lib_tank.drain_pipe;
|
||||
lib_pipe_control.drain_pipe = drain_pipe;
|
||||
return lib_pipe_control.drain_pipe;
|
||||
}
|
||||
|
||||
public func SetSourcePipe(object source_pipe)
|
||||
{
|
||||
lib_tank.source_pipe = source_pipe;
|
||||
return lib_tank.source_pipe;
|
||||
lib_pipe_control.source_pipe = source_pipe;
|
||||
return lib_pipe_control.source_pipe;
|
||||
}
|
||||
|
||||
public func SetNeutralPipe(object neutral_pipe)
|
||||
{
|
||||
lib_tank.neutral_pipe = neutral_pipe;
|
||||
return lib_tank.neutral_pipe;
|
||||
lib_pipe_control.neutral_pipe = neutral_pipe;
|
||||
return lib_pipe_control.neutral_pipe;
|
||||
}
|
||||
|
||||
|
||||
|
@ -318,8 +318,8 @@ public func OnPipeDisconnect(object pipe)
|
|||
public func SaveScenarioObject(props)
|
||||
{
|
||||
if (!inherited(props, ...)) return false;
|
||||
if (lib_tank.drain_pipe) props->AddCall("DrainPipe", this, "SetDrainPipe", lib_tank.drain_pipe);
|
||||
if (lib_tank.source_pipe) props->AddCall("SourcePipe", this, "SetSourcePipe", lib_tank.source_pipe);
|
||||
if (lib_tank.neutral_pipe) props->AddCall("NeutralPipe", this, "SetNeutralPipe", lib_tank.neutral_pipe);
|
||||
if (lib_pipe_control.drain_pipe) props->AddCall("DrainPipe", this, "SetDrainPipe", lib_pipe_control.drain_pipe);
|
||||
if (lib_pipe_control.source_pipe) props->AddCall("SourcePipe", this, "SetSourcePipe", lib_pipe_control.source_pipe);
|
||||
if (lib_pipe_control.neutral_pipe) props->AddCall("NeutralPipe", this, "SetNeutralPipe", lib_pipe_control.neutral_pipe);
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -179,8 +179,8 @@ 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";
|
||||
static const LIBRARY_PIPE_Menu_Action_Cut_AirPipe = "cutairpipe";
|
||||
static const LIBRARY_PIPE_Menu_Action_Add_AirPipe = "addairpipe";
|
||||
|
||||
// Extend liquid tank connection interface to air pipes.
|
||||
public func GetPipeControlMenuEntries(object clonk)
|
||||
|
@ -193,9 +193,9 @@ public func GetPipeControlMenuEntries(object clonk)
|
|||
{
|
||||
for (var entry in menu_entries)
|
||||
{
|
||||
if (entry.extra_data == LIBRARY_TANK_Menu_Action_Cut_Drain)
|
||||
if (entry.extra_data == LIBRARY_PIPE_Menu_Action_Cut_Drain)
|
||||
{
|
||||
entry.extra_data = LIBRARY_TANK_Menu_Action_Cut_AirPipe;
|
||||
entry.extra_data = LIBRARY_PIPE_Menu_Action_Cut_AirPipe;
|
||||
entry.Priority = 4;
|
||||
entry.custom.image.BackgroundColor = RGB(0, 153, 255);
|
||||
entry.custom.text.Text = GetConnectedPipeMessage("$MsgCutAirPipe$", GetDrainPipe());
|
||||
|
@ -207,18 +207,18 @@ public func GetPipeControlMenuEntries(object clonk)
|
|||
// 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, GetConnectedPipeMessage("$MsgConnectAirPipe$", air_pipe), 4, LIBRARY_TANK_Menu_Action_Add_AirPipe, RGB(0, 153, 255)));
|
||||
PushBack(menu_entries, GetTankMenuEntry(air_pipe, GetConnectedPipeMessage("$MsgConnectAirPipe$", air_pipe), 4, LIBRARY_PIPE_Menu_Action_Add_AirPipe, RGB(0, 153, 255)));
|
||||
return menu_entries;
|
||||
}
|
||||
|
||||
public func OnPipeControlHover(symbol_or_object, string action, desc_menu_target, menu_id)
|
||||
{
|
||||
if (action == LIBRARY_TANK_Menu_Action_Cut_AirPipe)
|
||||
if (action == LIBRARY_PIPE_Menu_Action_Cut_AirPipe)
|
||||
{
|
||||
GuiUpdateText(GetConnectedPipeDescription("$DescCutAirPipe$", GetDrainPipe()), menu_id, 1, desc_menu_target);
|
||||
return;
|
||||
}
|
||||
if (action == LIBRARY_TANK_Menu_Action_Add_AirPipe)
|
||||
if (action == LIBRARY_PIPE_Menu_Action_Add_AirPipe)
|
||||
{
|
||||
GuiUpdateText(GetConnectedPipeDescription("$DescConnectAirPipe$", symbol_or_object), menu_id, 1, desc_menu_target);
|
||||
return;
|
||||
|
@ -228,13 +228,13 @@ public func OnPipeControlHover(symbol_or_object, string action, desc_menu_target
|
|||
|
||||
public func OnPipeControl(symbol_or_object, string action, object clonk)
|
||||
{
|
||||
if (action == LIBRARY_TANK_Menu_Action_Cut_AirPipe)
|
||||
if (action == LIBRARY_PIPE_Menu_Action_Cut_AirPipe)
|
||||
{
|
||||
this->DoCutPipe(GetDrainPipe(), clonk);
|
||||
UpdateInteractionMenus(this.GetPipeControlMenuEntries);
|
||||
return;
|
||||
}
|
||||
if (action == LIBRARY_TANK_Menu_Action_Add_AirPipe)
|
||||
if (action == LIBRARY_PIPE_Menu_Action_Add_AirPipe)
|
||||
{
|
||||
this->DoConnectPipe(symbol_or_object, PIPE_STATE_Air);
|
||||
UpdateInteractionMenus(this.GetPipeControlMenuEntries);
|
||||
|
|
Loading…
Reference in New Issue