if (args.Port == comp.InputPortA)
{
comp.StateA = state;
+ _appearance.SetData(uid, LogicGateVisuals.InputA, state == SignalState.High); //If A == High => Sets input A sprite to True
}
else if (args.Port == comp.InputPortB)
{
comp.StateB = state;
+ _appearance.SetData(uid, LogicGateVisuals.InputB, state == SignalState.High); //If B == High => Sets input B sprite to True
}
UpdateOutput(uid, comp);
break;
}
+ _appearance.SetData(uid, LogicGateVisuals.Output, output);
+
// only send a payload if it actually changed
if (output != comp.LastOutput)
{
layers:
- state: base
- state: logic
+ - state: logic_a
+ visible: false
+ map: [ "enum.LogicGateLayers.InputA" ]
+ - state: logic_b
+ visible: false
+ map: [ "enum.LogicGateLayers.InputB" ]
+ - state: logic_o
+ visible: false
+ map: [ "enum.LogicGateLayers.Output" ]
- state: or
map: [ "enum.LogicGateLayers.Gate" ]
- type: LogicGate
Nor: { state: nor }
Nand: { state: nand }
Xnor: { state: xnor }
-
+ enum.LogicGateVisuals.InputA:
+ enum.LogicGateLayers.InputA:
+ True: { visible: true }
+ False: { visible: false }
+ enum.LogicGateVisuals.InputB:
+ enum.LogicGateLayers.InputB:
+ True: { visible: true }
+ False: { visible: false }
+ enum.LogicGateVisuals.Output:
+ enum.LogicGateLayers.Output:
+ True: { visible: true }
+ False: { visible: false }
- type: entity
parent: LogicGateOr
id: LogicGateAnd
- type: Sprite
layers:
- state: base
+ - state: logic
+ - state: logic_a
+ visible: false
+ map: [ "enum.LogicGateLayers.InputA" ]
+ - state: logic_b
+ visible: false
+ map: [ "enum.LogicGateLayers.InputB" ]
+ - state: logic_o
+ visible: false
+ map: [ "enum.LogicGateLayers.Output" ]
- state: and
map: [ "enum.LogicGateLayers.Gate" ]
- type: LogicGate
- type: Sprite
layers:
- state: base
+ - state: logic
+ - state: logic_a
+ visible: false
+ map: [ "enum.LogicGateLayers.InputA" ]
+ - state: logic_b
+ visible: false
+ map: [ "enum.LogicGateLayers.InputB" ]
+ - state: logic_o
+ visible: false
+ map: [ "enum.LogicGateLayers.Output" ]
- state: xor
map: [ "enum.LogicGateLayers.Gate" ]
- type: LogicGate
- type: Sprite
layers:
- state: base
+ - state: logic
+ - state: logic_a
+ visible: false
+ map: [ "enum.LogicGateLayers.InputA" ]
+ - state: logic_b
+ visible: false
+ map: [ "enum.LogicGateLayers.InputB" ]
+ - state: logic_o
+ visible: false
+ map: [ "enum.LogicGateLayers.Output" ]
- state: nor
map: [ "enum.LogicGateLayers.Gate" ]
- type: LogicGate
- type: Sprite
layers:
- state: base
+ - state: logic
+ - state: logic_a
+ visible: false
+ map: [ "enum.LogicGateLayers.InputA" ]
+ - state: logic_b
+ visible: false
+ map: [ "enum.LogicGateLayers.InputB" ]
+ - state: logic_o
+ visible: false
+ map: [ "enum.LogicGateLayers.Output" ]
- state: nand
map: [ "enum.LogicGateLayers.Gate" ]
- type: LogicGate
- type: Sprite
layers:
- state: base
+ - state: logic
+ - state: logic_a
+ visible: false
+ map: [ "enum.LogicGateLayers.InputA" ]
+ - state: logic_b
+ visible: false
+ map: [ "enum.LogicGateLayers.InputB" ]
+ - state: logic_o
+ visible: false
+ map: [ "enum.LogicGateLayers.Output" ]
- state: xnor
map: [ "enum.LogicGateLayers.Gate" ]
- type: LogicGate
{
"version": 1,
"license": "CC-BY-SA-3.0",
- "copyright": "or.png originally created by Kevin Zheng, 2022. All are modified by deltanedas (github) for SS14, 2024.",
+ "copyright": "or.png originally created by Kevin Zheng, 2022. All are modified by deltanedas (github) for SS14, 2024. Sprites logic_a logic_b logic_o were made by 0tito (github) for SS14",
"size": {
"x": 32,
"y": 32
{
"name": "logic"
},
+ {
+ "name": "logic_o"
+ },
+ {
+ "name": "logic_b"
+ },
+ {
+ "name": "logic_a"
+ },
{
"name": "or"
},