Plan world data structure
parent
4c51c52d05
commit
c137c88cef
|
@ -388,3 +388,40 @@ pub const Entity = struct {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pub const World = struct {
|
||||||
|
/// All levels in the game. If two rooms are next to each other, they
|
||||||
|
/// are assumed to be neighbors. Leaving the screen will load in the next
|
||||||
|
/// level in that direction. The player is placed at the same position
|
||||||
|
/// vertically, but on the opposite side of the screen horizontally. Vice versa
|
||||||
|
/// for vertically moving between screens. The player will retain their momentum.
|
||||||
|
///
|
||||||
|
/// When a wire crosses a screen boundary, it will coil up at the player's feet
|
||||||
|
/// automatically. If one side of the wire is pinned, the wire will be let go of.
|
||||||
|
///
|
||||||
|
/// Alternatively, the wire will be pinned outside of the level. If it isn't pinned,
|
||||||
|
/// I will need to freeze it and move it in a snake like fashion. Or just leave the
|
||||||
|
/// other level loaded.
|
||||||
|
levels: []Level,
|
||||||
|
/// List of all circuit joins between levels. Levels can have multiple joins
|
||||||
|
circuit_nodes: []CircuitNode,
|
||||||
|
};
|
||||||
|
|
||||||
|
pub const CircuitNode = struct {
|
||||||
|
energized: bool,
|
||||||
|
kind: CircuitKind,
|
||||||
|
inputs: []usize,
|
||||||
|
};
|
||||||
|
|
||||||
|
pub const CircuitKind = enum {
|
||||||
|
/// This join is conditional on logic state inside of the level
|
||||||
|
Logic,
|
||||||
|
/// This join is a source of power
|
||||||
|
Source,
|
||||||
|
/// This node has no logic and provides no power
|
||||||
|
Conduit,
|
||||||
|
// TODO: This type of node would be a wire stretching
|
||||||
|
// between multiple levels. This doesn't work with the rules
|
||||||
|
// for moving wires between levels at the moment.
|
||||||
|
// Bridge,
|
||||||
|
};
|
||||||
|
|
Loading…
Reference in New Issue