I think i have had the intention of mentioning that i provide the code link and
the video's script link at the beginning but then i forgot about it, so it's
still being only mentioned at the end.
The script is usually about 70-95% the same as what you see in the
video(sometimes i improvise), i should start mentioning it at the beginning for
all of you who prefer an offline version(no pictures though, i used to use
OneNote to write the script of my videos but now i just use Visual Studio Code,
because copying between the two is a nightmare(invisible spaces/tabs etc)).
On the template part that you could use a proc to get rid of all the if
statements: Yes you could do that, but your proc would have to have 2 arguments
for coordinates instead of 1, or vastly more in a more complex example. The
first template shown takes "coord" as it's argument instead of x and y which is
what a proc would have to take, and then it simply puts the name you give it
which after the identifier insertion(all template, macro etc pass is done),
evaluates player.x, player.y depending on the identifier provided(x, y).
Just in case if you were wondering, if you wanted to pass the template
something else than the "x" and "y" for it's "coord" argument, you would have
to obviously add that in the "player" object's definition.
For the generic constrained vs proc:
sumGenericConstrained[T: int | float](a, b: T): T =
sumGenericConstrained(a, b: int | float): int | float =
Run
One of the differences is that the first line of code is a "generic" proc while
the second is NOT. That said the compiler will generate 2 versions of the same
proc, one for "int" and one for "float", while the non-generic proc will NOT.
On a quick glance the generic version is heavier on compile-time speed while
the second non-generic is heavier on the runtime speed. So that being said, if
you need a proc that will work with MANY types and be complex, it will be
better to use the generic over the non-generic.
For any other differences you will have to get an answer from someone else, i
don't know more on this, as i haven't had the need for anything more complex
yet.