static Gtk.Toolbar CreateToolbar(CircuitEditor editor) { Gtk.Toolbar toolbar = new Gtk.Toolbar(); SelectTool selectTool = new SelectTool(editor, toolbar); WireTool wireTool = new WireTool(editor, toolbar); // FIXME: Make this be selected with a callback or something //editor.CurrentTool = selectTool; // FIXME: We don't want to new the components here!! ComponentTool andTool = new ComponentTool(ComponentType.And, "And gate", editor, toolbar); ComponentTool notTool = new ComponentTool(ComponentType.Not, "Not gate", editor, toolbar); ComponentTool orTool = new ComponentTool(ComponentType.Or, "Or gate", editor, toolbar); ToolButton xorTool = new ToolButton( Util.Icon.XorGate(), "Xor Gate" ); SeparatorToolItem sep = new SeparatorToolItem(); toolbar.Insert(selectTool, 0); toolbar.Insert(wireTool, 1); toolbar.Insert(sep, 2); toolbar.Insert(andTool, 3); toolbar.Insert(notTool, 4); toolbar.Insert(orTool, 5); toolbar.Insert(xorTool, 6); return(toolbar); }
public void TryClear(BaseEntity.RPCMessage msg) { IOEntity component; if (!WireTool.CanPlayerUseWires(msg.player)) { return; } uint num = msg.read.UInt32(); BaseNetworkable baseNetworkable = BaseNetworkable.serverEntities.Find(num); if (baseNetworkable == null) { component = null; } else { component = baseNetworkable.GetComponent <IOEntity>(); } IOEntity oEntity = component; if (oEntity == null) { return; } oEntity.ClearConnections(); oEntity.SendNetworkUpdate(BasePlayer.NetworkQueue.Update); }
public void MakeConnection(BaseEntity.RPCMessage msg) { if (!WireTool.CanPlayerUseWires(msg.player)) { return; } uint uid1 = msg.read.UInt32(); int index1 = msg.read.Int32(); uint uid2 = msg.read.UInt32(); int index2 = msg.read.Int32(); BaseNetworkable baseNetworkable1 = BaseNetworkable.serverEntities.Find(uid1); IOEntity newIOEnt1 = Object.op_Equality((Object)baseNetworkable1, (Object)null) ? (IOEntity)null : (IOEntity)((Component)baseNetworkable1).GetComponent <IOEntity>(); if (Object.op_Equality((Object)newIOEnt1, (Object)null)) { return; } BaseNetworkable baseNetworkable2 = BaseNetworkable.serverEntities.Find(uid2); IOEntity newIOEnt2 = Object.op_Equality((Object)baseNetworkable2, (Object)null) ? (IOEntity)null : (IOEntity)((Component)baseNetworkable2).GetComponent <IOEntity>(); if (Object.op_Equality((Object)newIOEnt2, (Object)null) || (double)Vector3.Distance(((Component)baseNetworkable2).get_transform().get_position(), ((Component)baseNetworkable1).get_transform().get_position()) > (double)WireTool.maxWireLength || (index1 >= newIOEnt1.inputs.Length || index2 >= newIOEnt2.outputs.Length) || (Object.op_Inequality((Object)newIOEnt1.inputs[index1].connectedTo.Get(true), (Object)null) || Object.op_Inequality((Object)newIOEnt2.outputs[index2].connectedTo.Get(true), (Object)null) || newIOEnt1.inputs[index1].rootConnectionsOnly && !newIOEnt2.IsRootEntity())) { return; } newIOEnt1.inputs[index1].connectedTo.Set(newIOEnt2); newIOEnt1.inputs[index1].connectedToSlot = index2; newIOEnt1.inputs[index1].connectedTo.Init(); newIOEnt2.outputs[index2].connectedTo.Set(newIOEnt1); newIOEnt2.outputs[index2].connectedToSlot = index1; newIOEnt2.outputs[index2].connectedTo.Init(); newIOEnt2.MarkDirtyForceUpdateOutputs(); newIOEnt2.SendNetworkUpdate(BasePlayer.NetworkQueue.Update); newIOEnt1.SendNetworkUpdate(BasePlayer.NetworkQueue.Update); }
public void RequestClear(BaseEntity.RPCMessage msg) { IOEntity component; IOEntity.IOSlot oSlot; if (!WireTool.CanPlayerUseWires(msg.player)) { return; } uint num = msg.read.UInt32(); int num1 = msg.read.Int32(); bool flag = msg.read.Bit(); BaseNetworkable baseNetworkable = BaseNetworkable.serverEntities.Find(num); if (baseNetworkable == null) { component = null; } else { component = baseNetworkable.GetComponent <IOEntity>(); } IOEntity oEntity = component; if (oEntity == null) { return; } if (num1 >= (flag ? (int)oEntity.inputs.Length : (int)oEntity.outputs.Length)) { return; } IOEntity.IOSlot oSlot1 = (flag ? oEntity.inputs[num1] : oEntity.outputs[num1]); if (oSlot1.connectedTo.Get(true) == null) { return; } IOEntity oEntity1 = oSlot1.connectedTo.Get(true); oSlot = (flag ? oEntity1.outputs[oSlot1.connectedToSlot] : oEntity1.inputs[oSlot1.connectedToSlot]); if (flag) { oEntity.UpdateFromInput(0, num1); } else if (oEntity1) { oEntity1.UpdateFromInput(0, oSlot1.connectedToSlot); } oSlot1.Clear(); oSlot.Clear(); if (oEntity1) { oEntity1.MarkDirtyForceUpdateOutputs(); oEntity1.SendNetworkUpdate(BasePlayer.NetworkQueue.Update); } oEntity.MarkDirtyForceUpdateOutputs(); oEntity.SendNetworkUpdate(BasePlayer.NetworkQueue.Update); }
static Gtk.Toolbar CreateToolbar(CircuitEditor editor) { Gtk.Toolbar toolbar = new Gtk.Toolbar(); SelectTool selectTool = new SelectTool(editor); WireTool wireTool = new WireTool(editor); // FIXME: Make this be selected with a callback or something //editor.CurrentTool = selectTool; // FIXME: We want something better for this... ComponentTool <AndGateInstance> andTool = new ComponentTool <AndGateInstance>(default, editor);
public void TryClear(BaseEntity.RPCMessage msg) { if (!WireTool.CanPlayerUseWires(msg.player)) { return; } uint uid = msg.read.UInt32(); BaseNetworkable baseNetworkable = BaseNetworkable.serverEntities.Find(uid); IOEntity ioEntity = Object.op_Equality((Object)baseNetworkable, (Object)null) ? (IOEntity)null : (IOEntity)((Component)baseNetworkable).GetComponent <IOEntity>(); if (Object.op_Equality((Object)ioEntity, (Object)null)) { return; } ioEntity.ClearConnections(); ioEntity.SendNetworkUpdate(BasePlayer.NetworkQueue.Update); }
public void AddLine(BaseEntity.RPCMessage msg) { if (!WireTool.CanPlayerUseWires(msg.player)) { return; } int num = msg.read.Int32(); if (num > 18) { return; } List <Vector3> lineList = new List <Vector3>(); for (int index = 0; index < num; ++index) { Vector3 vector3 = msg.read.Vector3(); lineList.Add(vector3); } if (!this.ValidateLine(lineList)) { return; } uint uid1 = msg.read.UInt32(); int index1 = msg.read.Int32(); uint uid2 = msg.read.UInt32(); int index2 = msg.read.Int32(); BaseNetworkable baseNetworkable1 = BaseNetworkable.serverEntities.Find(uid1); IOEntity ioEntity1 = Object.op_Equality((Object)baseNetworkable1, (Object)null) ? (IOEntity)null : (IOEntity)((Component)baseNetworkable1).GetComponent <IOEntity>(); if (Object.op_Equality((Object)ioEntity1, (Object)null)) { return; } BaseNetworkable baseNetworkable2 = BaseNetworkable.serverEntities.Find(uid2); IOEntity ioEntity2 = Object.op_Equality((Object)baseNetworkable2, (Object)null) ? (IOEntity)null : (IOEntity)((Component)baseNetworkable2).GetComponent <IOEntity>(); if (Object.op_Equality((Object)ioEntity2, (Object)null) || index1 >= ioEntity1.inputs.Length || (index2 >= ioEntity2.outputs.Length || Object.op_Inequality((Object)ioEntity1.inputs[index1].connectedTo.Get(true), (Object)null)) || Object.op_Inequality((Object)ioEntity2.outputs[index2].connectedTo.Get(true), (Object)null)) { return; } ioEntity2.outputs[index2].linePoints = lineList.ToArray(); ioEntity2.SendNetworkUpdate(BasePlayer.NetworkQueue.Update); }
public void RequestClear(BaseEntity.RPCMessage msg) { if (!WireTool.CanPlayerUseWires(msg.player)) { return; } uint uid = msg.read.UInt32(); int inputSlot = msg.read.Int32(); bool flag = msg.read.Bit(); BaseNetworkable baseNetworkable = BaseNetworkable.serverEntities.Find(uid); IOEntity ioEntity1 = Object.op_Equality((Object)baseNetworkable, (Object)null) ? (IOEntity)null : (IOEntity)((Component)baseNetworkable).GetComponent <IOEntity>(); if (Object.op_Equality((Object)ioEntity1, (Object)null) || inputSlot >= (flag ? ioEntity1.inputs.Length : ioEntity1.outputs.Length)) { return; } IOEntity.IOSlot ioSlot1 = flag ? ioEntity1.inputs[inputSlot] : ioEntity1.outputs[inputSlot]; if (Object.op_Equality((Object)ioSlot1.connectedTo.Get(true), (Object)null)) { return; } IOEntity ioEntity2 = ioSlot1.connectedTo.Get(true); IOEntity.IOSlot ioSlot2 = flag ? ioEntity2.outputs[ioSlot1.connectedToSlot] : ioEntity2.inputs[ioSlot1.connectedToSlot]; if (flag) { ioEntity1.UpdateFromInput(0, inputSlot); } else if (Object.op_Implicit((Object)ioEntity2)) { ioEntity2.UpdateFromInput(0, ioSlot1.connectedToSlot); } ioSlot1.Clear(); ioSlot2.Clear(); if (Object.op_Implicit((Object)ioEntity2)) { ioEntity2.MarkDirtyForceUpdateOutputs(); ioEntity2.SendNetworkUpdate(BasePlayer.NetworkQueue.Update); } ioEntity1.MarkDirtyForceUpdateOutputs(); ioEntity1.SendNetworkUpdate(BasePlayer.NetworkQueue.Update); }
static Gtk.Toolbar CreateToolbar(CircuitEditor editor) { Gtk.Toolbar toolbar = new Gtk.Toolbar(); SelectTool selectTool = new SelectTool(editor, toolbar); WireTool wireTool = new WireTool(editor, toolbar); // FIXME: Make this be selected with a callback or something //editor.CurrentTool = selectTool; ComponentTool constantTool = new ComponentTool(ComponentType.Constant, "Constant", editor, toolbar); ComponentTool bufferTool = new ComponentTool(ComponentType.Buffer, "Buffer gate", editor, toolbar); ComponentTool notTool = new ComponentTool(ComponentType.Not, "Not gate", editor, toolbar); ComponentTool andTool = new ComponentTool(ComponentType.And, "And gate", editor, toolbar); ComponentTool orTool = new ComponentTool(ComponentType.Or, "Or gate", editor, toolbar); ComponentTool xorTool = new ComponentTool(ComponentType.Xor, "Xor gate", editor, toolbar); SeparatorToolItem sep = new SeparatorToolItem(); int index = 0; toolbar.Insert(selectTool, index++); toolbar.Insert(wireTool, index++); toolbar.Insert(sep, index++); toolbar.Insert(constantTool, index++); toolbar.Insert(bufferTool, index++); toolbar.Insert(notTool, index++); toolbar.Insert(andTool, index++); toolbar.Insert(orTool, index++); toolbar.Insert(xorTool, index++); return(toolbar); }
public void AddLine(BaseEntity.RPCMessage msg) { IOEntity component; IOEntity oEntity; if (!WireTool.CanPlayerUseWires(msg.player)) { return; } int num = msg.read.Int32(); if (num > 18) { return; } List <Vector3> vector3s = new List <Vector3>(); for (int i = 0; i < num; i++) { vector3s.Add(msg.read.Vector3()); } if (!this.ValidateLine(vector3s)) { return; } uint num1 = msg.read.UInt32(); int num2 = msg.read.Int32(); uint num3 = msg.read.UInt32(); int num4 = msg.read.Int32(); BaseNetworkable baseNetworkable = BaseNetworkable.serverEntities.Find(num1); if (baseNetworkable == null) { component = null; } else { component = baseNetworkable.GetComponent <IOEntity>(); } IOEntity oEntity1 = component; if (oEntity1 == null) { return; } BaseNetworkable baseNetworkable1 = BaseNetworkable.serverEntities.Find(num3); if (baseNetworkable1 == null) { oEntity = null; } else { oEntity = baseNetworkable1.GetComponent <IOEntity>(); } IOEntity array = oEntity; if (array == null) { return; } if (num2 >= (int)oEntity1.inputs.Length) { return; } if (num4 >= (int)array.outputs.Length) { return; } if (oEntity1.inputs[num2].connectedTo.Get(true) != null) { return; } if (array.outputs[num4].connectedTo.Get(true) != null) { return; } array.outputs[num4].linePoints = vector3s.ToArray(); array.SendNetworkUpdate(BasePlayer.NetworkQueue.Update); }
public void MakeConnection(BaseEntity.RPCMessage msg) { IOEntity component; IOEntity oEntity; if (!WireTool.CanPlayerUseWires(msg.player)) { return; } uint num = msg.read.UInt32(); int num1 = msg.read.Int32(); uint num2 = msg.read.UInt32(); int num3 = msg.read.Int32(); BaseNetworkable baseNetworkable = BaseNetworkable.serverEntities.Find(num); if (baseNetworkable == null) { component = null; } else { component = baseNetworkable.GetComponent <IOEntity>(); } IOEntity oEntity1 = component; if (oEntity1 == null) { return; } BaseNetworkable baseNetworkable1 = BaseNetworkable.serverEntities.Find(num2); if (baseNetworkable1 == null) { oEntity = null; } else { oEntity = baseNetworkable1.GetComponent <IOEntity>(); } IOEntity oEntity2 = oEntity; if (oEntity2 == null) { return; } if (Vector3.Distance(baseNetworkable1.transform.position, baseNetworkable.transform.position) > WireTool.maxWireLength) { return; } if (num1 >= (int)oEntity1.inputs.Length) { return; } if (num3 >= (int)oEntity2.outputs.Length) { return; } if (oEntity1.inputs[num1].connectedTo.Get(true) != null) { return; } if (oEntity2.outputs[num3].connectedTo.Get(true) != null) { return; } if (oEntity1.inputs[num1].rootConnectionsOnly && !oEntity2.IsRootEntity()) { return; } oEntity1.inputs[num1].connectedTo.Set(oEntity2); oEntity1.inputs[num1].connectedToSlot = num3; oEntity1.inputs[num1].connectedTo.Init(); oEntity2.outputs[num3].connectedTo.Set(oEntity1); oEntity2.outputs[num3].connectedToSlot = num1; oEntity2.outputs[num3].connectedTo.Init(); oEntity2.MarkDirtyForceUpdateOutputs(); oEntity2.SendNetworkUpdate(BasePlayer.NetworkQueue.Update); oEntity1.SendNetworkUpdate(BasePlayer.NetworkQueue.Update); }
void Awake() { singleton = this; }