Consistent SYSTEMS
This commit is contained in:
50
scripts/Singleton/EventSystem.gd
Normal file
50
scripts/Singleton/EventSystem.gd
Normal file
@@ -0,0 +1,50 @@
|
||||
class_name EventSystem extends Node
|
||||
|
||||
const EVENT_FLAG_COUNT = 32
|
||||
|
||||
enum SpecialEvent {
|
||||
INVALID = 0,
|
||||
TEST_QUEST = 1,
|
||||
};
|
||||
|
||||
var eventFlags:Dictionary[int, int] = {}
|
||||
signal eventFlagUpdated(event:SpecialEvent, flags:int)
|
||||
|
||||
func eventFlagOn(event:SpecialEvent, flagsToTurnOn:int) -> void:
|
||||
if !eventFlags.has(event):
|
||||
eventFlags[event] = 0;
|
||||
|
||||
eventFlags[event] |= flagsToTurnOn;
|
||||
eventFlagUpdated.emit(event, eventFlags[event]);
|
||||
|
||||
func eventFlagOff(event:SpecialEvent, flagsToTurnOff:int) -> void:
|
||||
if !eventFlags.has(event):
|
||||
eventFlags[event] = 0;
|
||||
eventFlags[event] &= ~flagsToTurnOff;
|
||||
eventFlagUpdated.emit(event, eventFlags[event]);
|
||||
|
||||
func eventFlagSetTo(event:SpecialEvent, flagsToSet:int) -> void:
|
||||
if !eventFlags.has(event):
|
||||
eventFlags[event] = 0;
|
||||
eventFlags[event] = flagsToSet;
|
||||
eventFlagUpdated.emit(event, eventFlags[event]);
|
||||
|
||||
func eventAreFlagsOn(event:SpecialEvent, flagsToCheck:int) -> bool:
|
||||
if !eventFlags.has(event):
|
||||
eventFlags[event] = 0;
|
||||
return (eventFlags[event] & flagsToCheck) == flagsToCheck;
|
||||
|
||||
func eventIsAnyOfFlagsOn(event:SpecialEvent, flagsToCheck:int) -> bool:
|
||||
if !eventFlags.has(event):
|
||||
eventFlags[event] = 0;
|
||||
return (eventFlags[event] & flagsToCheck) != 0;
|
||||
|
||||
func eventAreFlagsOff(event:SpecialEvent, flagsToCheck:int) -> bool:
|
||||
if !eventFlags.has(event):
|
||||
eventFlags[event] = 0;
|
||||
return (eventFlags[event] & flagsToCheck) == 0;
|
||||
|
||||
func eventIsAnyOfFlagsOff(event:SpecialEvent, flagsToCheck:int) -> bool:
|
||||
if !eventFlags.has(event):
|
||||
eventFlags[event] = 0;
|
||||
return (eventFlags[event] & flagsToCheck) != flagsToCheck;
|
Reference in New Issue
Block a user