forked from Mirrors/openclonk
Changed pipe interface
- connect / disconnect callbacks do not include the line anymore - the drain and source pipes are set to the pipe now, instead of the lineliquid_container
parent
e08e8fbb51
commit
ecff731d96
|
@ -102,8 +102,13 @@ private func LineBreak(bool no_msg)
|
|||
if (!no_msg)
|
||||
BreakMessage();
|
||||
|
||||
var line_end = GetPipeKit();
|
||||
if (line_end) line_end->SetNeutralPipe();
|
||||
if (GetPipeKit())
|
||||
{
|
||||
GetPipeKit()->SetNeutralPipe();
|
||||
if (GetActionTarget(0)) GetActionTarget(0)->OnPipeDisconnect(GetPipeKit());
|
||||
if (GetActionTarget(1)) GetActionTarget(1)->OnPipeDisconnect(GetPipeKit());
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -145,7 +145,7 @@ func ConnectPipeTo(object target, string specific_pipe_state)
|
|||
{
|
||||
if (!target || target->~QueryConnectPipe(this)) return false;
|
||||
var line = AddLineConnectionTo(target);
|
||||
target->OnPipeConnect(this, line, specific_pipe_state);
|
||||
target->OnPipeConnect(this, specific_pipe_state);
|
||||
Sound("Objects::Connect");
|
||||
return true;
|
||||
}
|
||||
|
@ -213,13 +213,13 @@ func CutLineConnection(object target)
|
|||
// connected only to the kit and a structure
|
||||
if (line->IsConnectedTo(this, true))
|
||||
{
|
||||
target->OnPipeDisconnect(this, line);
|
||||
target->OnPipeDisconnect(this);
|
||||
line->RemoveObject();
|
||||
}
|
||||
// connected to the target and another structure
|
||||
else if (line->IsConnectedTo(target, true))
|
||||
{
|
||||
target->OnPipeDisconnect(this, line);
|
||||
target->OnPipeDisconnect(this);
|
||||
Exit(); // the kit was inside the line at this point.
|
||||
SetPosition(target->GetX(), target->GetY());
|
||||
line->SwitchConnection(target, this);
|
||||
|
|
|
@ -225,12 +225,11 @@ func DoConnectPipe(object pipe, string specific_pipe_state)
|
|||
pipe->ConnectPipeTo(this, specific_pipe_state);
|
||||
}
|
||||
|
||||
func DoCutPipe(object pipe_line)
|
||||
func DoCutPipe(object pipe)
|
||||
{
|
||||
if (pipe_line)
|
||||
if (pipe)
|
||||
{
|
||||
var pipe_kit = pipe_line->GetPipeKit();
|
||||
pipe_kit->CutLineConnection(this);
|
||||
pipe->CutLineConnection(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -248,10 +247,10 @@ func FindAvailablePipe(object container, find_state)
|
|||
|
||||
func CanConnectPipe(){ return true;}
|
||||
|
||||
func OnPipeDisconnect(object pipe, object line)
|
||||
func OnPipeDisconnect(object pipe)
|
||||
{
|
||||
// pipe objects have to be reset!
|
||||
if (line == GetDrainPipe()) SetDrainPipe();
|
||||
if (line == GetSourcePipe()) SetSourcePipe();
|
||||
if (line == GetNeutralPipe()) SetNeutralPipe();
|
||||
if (pipe == GetDrainPipe()) SetDrainPipe();
|
||||
if (pipe == GetSourcePipe()) SetSourcePipe();
|
||||
if (pipe == GetNeutralPipe()) SetNeutralPipe();
|
||||
}
|
||||
|
|
|
@ -175,17 +175,17 @@ func QueryConnectPipe(object pipe)
|
|||
}
|
||||
|
||||
|
||||
func OnPipeConnect(object pipe, object line, string specific_pipe_state)
|
||||
func OnPipeConnect(object pipe, string specific_pipe_state)
|
||||
{
|
||||
if (PIPE_STATE_Source == specific_pipe_state)
|
||||
{
|
||||
SetSourcePipe(line);
|
||||
SetSourcePipe(pipe);
|
||||
pipe->SetSourcePipe();
|
||||
pipe->Report("$MsgCreatedSource$");
|
||||
}
|
||||
else if (PIPE_STATE_Drain == specific_pipe_state)
|
||||
{
|
||||
SetDrainPipe(line);
|
||||
SetDrainPipe(pipe);
|
||||
pipe->SetDrainPipe();
|
||||
pipe->Report("$MsgCreatedDrain$");
|
||||
}
|
||||
|
@ -193,27 +193,27 @@ func OnPipeConnect(object pipe, object line, string specific_pipe_state)
|
|||
{
|
||||
// add a drain if we already connected a source pipe,
|
||||
// or if the line is already connected to a container
|
||||
var pump_target = line->GetConnectedObject(this);
|
||||
var line = pipe->GetConnectedLine();
|
||||
var pump_target = !line || line->GetConnectedObject(this);
|
||||
if (pump_target) pump_target = pump_target->~IsLiquidContainer();
|
||||
if (GetSourcePipe() || pump_target)
|
||||
{
|
||||
OnPipeConnect(pipe, line, PIPE_STATE_Drain);
|
||||
OnPipeConnect(pipe, PIPE_STATE_Drain);
|
||||
}
|
||||
// otherwise create a source first
|
||||
else
|
||||
{
|
||||
OnPipeConnect(pipe, line, PIPE_STATE_Source);
|
||||
OnPipeConnect(pipe, PIPE_STATE_Source);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
func OnPipeDisconnect(object pipe, object line)
|
||||
func OnPipeDisconnect(object pipe)
|
||||
{
|
||||
var pump_target = line->GetConnectedObject(this);
|
||||
if (pump_target) pipe->SetNeutralPipe();
|
||||
pipe->SetNeutralPipe();
|
||||
|
||||
_inherited(pipe, line);
|
||||
_inherited(pipe);
|
||||
}
|
||||
|
||||
|
||||
|
@ -251,7 +251,7 @@ public func OnEnoughPower()
|
|||
/** Returns object to which the liquid is pumped */
|
||||
private func GetDrainObject()
|
||||
{
|
||||
if (GetDrainPipe()) return GetDrainPipe()->GetConnectedObject(this) ?? this;
|
||||
if (GetDrainPipe()) return GetDrainPipe()->GetConnectedLine()->GetConnectedObject(this) ?? this;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -259,7 +259,7 @@ private func GetDrainObject()
|
|||
private func GetSourceObject()
|
||||
{
|
||||
if (GetSourcePipe())
|
||||
return GetSourcePipe()->GetConnectedObject(this) ?? this;
|
||||
return GetSourcePipe()->GetConnectedLine()->GetConnectedObject(this) ?? this;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
|
@ -232,8 +232,8 @@ func QueryConnectPipe(object pipe)
|
|||
}
|
||||
|
||||
|
||||
func OnPipeConnect(object pipe, object line, string specific_pipe_state)
|
||||
func OnPipeConnect(object pipe, string specific_pipe_state)
|
||||
{
|
||||
SetNeutralPipe(line);
|
||||
SetNeutralPipe(pipe);
|
||||
pipe->Report("$MsgConnectedPipe$");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue