aboutsummaryrefslogtreecommitdiff
path: root/docs/modding/squirrel/what-is-squirrel.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/modding/squirrel/what-is-squirrel.md')
-rw-r--r--docs/modding/squirrel/what-is-squirrel.md56
1 files changed, 56 insertions, 0 deletions
diff --git a/docs/modding/squirrel/what-is-squirrel.md b/docs/modding/squirrel/what-is-squirrel.md
index e69de29..9c86bd8 100644
--- a/docs/modding/squirrel/what-is-squirrel.md
+++ b/docs/modding/squirrel/what-is-squirrel.md
@@ -0,0 +1,56 @@
+What is Squirrel
+==========
+Squirrel is a programming language used in titanfall 2 and northstar mods, it is worth noting that the version of squirrel used by titanfall appears to be a modified version of the langauge
+
+File format
+----------
+
+All files using squirrel are saved as .nut or .gnut
+
+when creating mods your mod will typically be a series of functions and callbacks
+
+Squirrel as a typed language
+========
+All variables and functions in squirrel must have a type defined on declaration
+
+```cpp
+function dosomething()
+```
+
+is not acceptable and should instead be
+
+```cpp
+void function dosomething()
+```
+Similarly when declaring a variable
+```cpp
+funnynumber = 69
+```
+will not work, instead use:
+```cpp
+int funnynumber = 69
+```
+
+
+Variable types
+-------------
+
+`void`: can be used to define functions that do not return a value, but still do things. most of your functions will be void
+
+```interger```: a whole number
+
+```float```: a none-whole number.
+
+```string```: text
+
+```entity```: an entity and all its associated information
+
+```bool```: true or false (Squirrel does not treat 1 as true or 0 as false)
+
+```array```: an ordered list of items indexed from 0, increasing with the number of items such as: 0:"hello",1:1000,2:entity player ...
+
+```table```: a list of items with indexes defined on object entry such as: "word":"hello", "kilo":1000", "pilot":entity player ...
+
+```struct```: a series of attributes assigned to a structure and accessed through with structname.variablename
+
+```var```: Var typically refers to variables that lack any stated type, this will cause issues with many functions unless you use the `untyped` identifier at the start of your file, or if you use `expect type(variable)` when passing the variable to that function