Re: What are these functions called and how to implement they?

2021-01-28 Thread dog2002 via Digitalmars-d-learn

On Thursday, 28 January 2021 at 18:56:15 UTC, frame wrote:

On Thursday, 28 January 2021 at 18:27:09 UTC, frame wrote:


[...]


A very simple example:

bool myEventA = true;
bool myEventB = false;

// event source that generates the event (must be called to run)
void source() {
observe(myEventA);
}

// routine that decides what handler to call
void observe(bool event) {
switch (event) {
case true:
onMyEventA(event);
break;

case false:
onMyEventB(event);
break;

default:
assert(0);
}
}

// handler
void onMyEventA(bool event) {
// do something
}

void onMyEventB(bool event) {
// do something
}


Thank you, I'll try it


Re: What are these functions called and how to implement they?

2021-01-28 Thread frame via Digitalmars-d-learn

On Thursday, 28 January 2021 at 18:27:09 UTC, frame wrote:

Not 100% sure what you mean but I guess you ask how to 
implement a handler? If an event occurs, a routine decides to 
call your onKeyPressed function and pass the keyCode which was 
pressed. The routine must be registered on a event source that 
will emit the events. The routine is basically just a callback 
and that is indeed called every frame again if an event occurs.


A very simple example:

bool myEventA = true;
bool myEventB = false;

// event source that generates the event (must be called to run)
void source() {
observe(myEventA);
}

// routine that decides what handler to call
void observe(bool event) {
switch (event) {
case true:
onMyEventA(event);
break;

case false:
onMyEventB(event);
break;

default:
assert(0);
}
}

// handler
void onMyEventA(bool event) {
// do something
}

void onMyEventB(bool event) {
// do something
}


Re: What are these functions called and how to implement they?

2021-01-28 Thread frame via Digitalmars-d-learn

On Thursday, 28 January 2021 at 17:10:57 UTC, dog2002 wrote:
I saw these functions in some projects. For example: in Dagon 
(https://gecko0307.github.io/dagon/) there are functions like 
onKeyDown. This function doesn't need to call - it checks 
pressed keys every time. Or Update in Unity (game engine). It 
doesn't need to call, but it executes itself every frame.


Okay, maybe it sounds confusing. I just want to understand how 
to implement functions that wait for events and execute code 
inside the function. Something like this:


void onKeyPressed(int key) {
//the code to be executed if a key has been pressed
}


Not 100% sure what you mean but I guess you ask how to implement 
a handler? If an event occurs, a routine decides to call your 
onKeyPressed function and pass the keyCode which was pressed. The 
routine must be registered on a event source that will emit the 
events. The routine is basically just a callback and that is 
indeed called every frame again if an event occurs.


What are these functions called and how to implement they?

2021-01-28 Thread dog2002 via Digitalmars-d-learn
I saw these functions in some projects. For example: in Dagon 
(https://gecko0307.github.io/dagon/) there are functions like 
onKeyDown. This function doesn't need to call - it checks pressed 
keys every time. Or Update in Unity (game engine). It doesn't 
need to call, but it executes itself every frame.


Okay, maybe it sounds confusing. I just want to understand how to 
implement functions that wait for events and execute code inside 
the function. Something like this:


void onKeyPressed(int key) {
//the code to be executed if a key has been pressed
}