N_WolfCurses - Maxwolf/WolfCurses GitHub Wiki

WolfCurses Namespace

Core library, holds the simulation application abstract class. Any new simulations will need to have their primary entry point inherit this class.

Classes

 

Class Description
Public class ArrayExtensions Helper methods for working with arrays.
Public class AttributeExtensions Meant for dealing with attributes and grabbing all the available classes of a given type with specified attribute using generics.
Public class EnumerableExtension Collection of extension methods used for manipulating a enumerable collection of objects.
Public class InputManager Deals with keep track of input to the simulation via whatever form that may end up taking. The default implementation is a text user interface (TUI) which allows for the currently accepted commands to be seen and only then accepted.
Public class Module Base implementation of the IModule interface which allows for some overrides to be virtual so every implementation doesn't have to use them.
Public class Randomizer Used for rolling the virtual dice in the simulation to determine the outcome of various events.
Public class SceneGraph Provides base functionality for rendering out the simulation state via text user interface (TUI). This class has no idea about how other modules work and only serves to query them for string data which will be compiled into a console only view of the simulation which is intended to be the lowest level of visualization but theoretically anything could be a renderer for the simulation.
Public class SimulationApp Base simulation application class object. This class should not be declared directly but inherited by actual instance of game controller.
Public class StringExtensions Utility class that contains useful extension methods that make working with strings a little easier and less repetitive.
Public class TypeExtensions Helper class that deals with activating classes without using the actual activator class because that requires and empty parameterless constructor and we cannot always guarantee we will be able have one. Using these methods don't require a constructor to be used and furthermore the use of expressions to generate them ensures caching so penalty for type activation is only hit once on first instance creation.
Public classCode example TypeExtensions.New(T) Create expression is effectively cached and incurs penalty only the first time the type is loaded. Will handle value types too in an efficient manner.
Public class Window(TCommands, TData) Facilitates the ability to control the entire simulation with the passes interface reference. Server simulation keeps track of all currently loaded game modes and will only tick the top-most one so they can be stacked and clear out until there are none.
Public class WindowData Used to make sure that every Windows info class has a basic data structure that we can rely on for creating it via Windows factory.
Public class WindowFactory Factory pattern for creating game modes on the fly during runtime based on enumeration input parameter.
Public class WindowManager Builds up a list of game modes and their states using reflection and attributes. Contains methods to add game modes to running simulation. Can also remove modes and modify them further with states.

Interfaces

 

Interface Description
Public interface IModule The Module interface.
Public interface ITick Used by simulation and all attached modes and their states. Allows them to receive ticks and understand the difference between a system tick that occurs unpredictably and a simulation tick which occurs at fixed intervals based on the tick delta of incoming system ticks adding up to whatever constant is set in the core simulation.
Public interface IWindow Underlying game Windows interface, used by base simulation to keep track of what data should currently have control over the simulation details. Only top most game Windows will ever be ticked.

Delegates

 

Delegate Description
Public delegate SceneGraph.ScreenBufferDirty Fired when the screen back buffer has changed from what is currently being shown, this forces a redraw.
 
⚠️ **GitHub.com Fallback** ⚠️