gdscript1.gd 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. extends Node
  2. class_name TestClass
  3. # ******************************************************************************
  4. var var_a = 0
  5. var var_b = true
  6. var var_c := true
  7. var var_d : bool = true
  8. var var_e : bool = true
  9. var var_f:bool=true
  10. var var_g : string = 'foo'
  11. var var_h : string = "foo"
  12. var integer = 12_345_678 # Equal to 12345678.
  13. var floating = 3.141_592_7 # Equal to 3.1415927.
  14. var hex_a = 0x10101
  15. var hex_b = 0x8080_0000_ffff # Equal to 0x80800000ffff.
  16. var binary_a = 0b10101
  17. var binary_b = 0b11_00_11_00 # Equal to 0b11001100.
  18. var sci_float_a = 58.1e-10
  19. var sci_float_b = 58.1e-10
  20. const const_a = 0
  21. const const_b = true
  22. const const_c := true
  23. const const_d : bool = true
  24. const const_e : bool = true
  25. const const_f:bool=true
  26. const const_g : string = 'foo'
  27. const const_h : string = "foo"
  28. var pls_no_a = "don't do this"; var pls_no_b = "I don't care if it's valid";
  29. var pls_no_c = 0; var pls_no_d = false; var pls_no_e = seriously_why();
  30. var pls_no_f: bool; var pls_no_g: int; var pls_no_h: string;
  31. var a
  32. remote var b = 10.0
  33. remotesync var c := 20
  34. master var d :int = 30
  35. puppet var e :int
  36. signal sig_a
  37. signal sig_b()
  38. signal sig_c(param1, param2)
  39. # signal sig_d(param1: int, param2: Dictionary)
  40. # signal sig_e(
  41. # param1: int, # first param
  42. # param2: Dictionary,
  43. # )
  44. var variant_a = 0
  45. const variant_b = 0
  46. # ------------------------------------------------------------------------------
  47. var f = 40 setget set_f
  48. func set_f(value):
  49. pass
  50. var g:int setget set_g, get_g
  51. func set_g(value: int=0) -> void:
  52. pass
  53. var h:float = 1.0 setget set_h, get_h
  54. func set_h(value: int=0) -> void:
  55. pass
  56. func get_g() -> int:
  57. return 0
  58. # ------------------------------------------------------------------------------
  59. func func_a(param1, param2, param3):
  60. self.test()
  61. $Node.get_node('Foo')
  62. $Node.has_node('Foo')
  63. $Node.find_node('Foo')
  64. $Node.get_node_or_null('Foo')
  65. print($Node.has_node('Foo'))
  66. print(NodePath('Foo'))
  67. print(NodePath("Foo"))
  68. pass
  69. func func_b(param1, param2=func_a(10, 1.0, 'test')) -> void:
  70. pass
  71. func func_b1(param1 = false, param2: bool = false, param3 := false):
  72. pass
  73. func func_b2(param1 = 10, param2: int = 100, param3 := 1000):
  74. pass
  75. func func_b3(param1 = 1.0, param2: float = 10.0, param3 := 100.001):
  76. pass
  77. func func_b4(param1 = 'foo', param2: String = 'bar', param3 := 'foobar'):
  78. pass
  79. func func_b5(
  80. param1 = 'foo', # comment
  81. param2: String = 'bar',
  82. param3: float = 3.14159,
  83. param4:='foobar',
  84. param5:=1000,
  85. param6:=[],
  86. param7:={},
  87. param8:=func_a(),
  88. param9:=Vector2(0, 1),
  89. param10:=Vector2(0, 0),
  90. param11:=Color(1, 1, 1, 0.5),
  91. param12:=NodePath('Foo')
  92. ) -> void:
  93. pass
  94. var dict = {
  95. a = 0,
  96. b = 0.0,
  97. c = 'test',
  98. }
  99. func func_c(
  100. param1: int = 10,
  101. param2 := 1.0,
  102. param3: String = 'string',
  103. param4 := {a=0, b=0.0, c='test'}
  104. ):
  105. pass
  106. # one line functions, please don't actually do this
  107. func one_line_int_fn() -> int: return 3
  108. func one_line_dict_fn() -> int: return {a=0, b=0.0, c='test'}
  109. func one_line_print() -> void: print("Uh oh")
  110. func one_line_fn() -> void: return
  111. # ------------------------------------------------------------------------------
  112. var stringname_nodepath_a = @"test"
  113. var stringname_nodepath_b = @'test'
  114. var q = "double quotes"
  115. var r = 'single quotes'
  116. var s = """
  117. triple double quotes
  118. """
  119. var t = '''triple single quotes'''
  120. # ------------------------------------------------------------------------------
  121. var IS_CONSTANT
  122. var not_CONSTANT
  123. var ALSO_NOT_constant
  124. var CONSTANT_not
  125. # ------------------------------------------------------------------------------
  126. var node_a = $Child
  127. var node_b = $Child/GrandChild
  128. var node_bb = $Child/GrandChild/GreatGrandChild
  129. var node_bbb = $Child/GrandChild/GreatGrandChild/GreatGreatGrandChild
  130. var node_c = $"../Sibling"
  131. var node_cc = $'../Sibling'
  132. var node_d = $'..' # parent
  133. var node_e = $"../.." # grandparent
  134. var node_f = get_node('Child')
  135. var node_g = get_node("Child/GrandChild")
  136. var node_h = get_node("../Sibling")
  137. if has_node('Child') and get_node('Child').has_node('GrandChild'):
  138. pass
  139. var unique_node_a = $%Unique
  140. var unique_node_b = $Child/%Unique
  141. var unique_node_c = $Child/GrandChild/%Unique
  142. var unique_node_d = $Child/%Unique/ChildOfUnique
  143. var unique_node_e = %Unique
  144. var unique_node_f = %Unique/Child
  145. var unique_node_g = %Unique/%UniqueChild
  146. var a = $/root
  147. var a = $/ root
  148. var a = $/root/Child
  149. var a = $/ root/ Child
  150. var a = $/root/Child/%Unique
  151. var a = $ / root / Child/%Unique
  152. var a = $/root/Child/GrandChild
  153. var node_i = $"%Unique"
  154. var node_ii = get_node("%Unique")
  155. var node_iii = NodePath("%Unique")
  156. var node_j = $'%Unique/Child'
  157. var node_jj = get_node('%Unique/Child')
  158. var node_jjj = NodePath('%Unique/Child')
  159. var node_k = $"%Unique/%UniqueChild"
  160. var node_kk = get_node("%Unique/%UniqueChild")
  161. var node_kkk = NodePath("%Unique/%UniqueChild")
  162. if has_node('%Unique') and get_node('%Child').has_node('%GrandChild'):
  163. pass
  164. var node_i = $badlyNamedChild
  165. var node_j = $badlyNamedChild/badly_named_grandchild
  166. var node_path_a = NodePath("Child")
  167. var node_path_b = NodePath('Child/GrandChild')
  168. var node_path_c = NodePath('../Sibling')
  169. var node_method_result_a = get_node("Child").some_method()
  170. var node_method_result_b = get_node("Child/GrandChild").some_method()
  171. var node_method_result_c = get_node("%Child").some_method()
  172. var node_method_result_d = $Child.some_method()
  173. var node_method_result_e = $'Child'.some_method()
  174. var node_method_result_f = $'%Child'.some_method()
  175. var node_method_result_g = $Child/GrandChild.some_method()
  176. var node_method_result_h = $"Child/GrandChild".some_method()
  177. var node_method_result_i = $"%Child/GrandChild".some_method()
  178. var node_method_result_j = $Child.get_node('GrandChild').some_method()
  179. var node_method_result_k = $"Child".get_node('GrandChild').some_method()
  180. var node_method_result_l = $"%Child".get_node('GrandChild').some_method()
  181. # ------------------------------------------------------------------------------
  182. var _script = GDScript.new()
  183. var directions = [
  184. Vector2.UP,
  185. Vector2.DOWN,
  186. Vector2.LEFT,
  187. Vector2.RIGHT,
  188. ]
  189. enum test_enum {
  190. VALUE_1,
  191. VALUE_2,
  192. VALUE_3,
  193. }
  194. export(test_enum) var enum_variable = test_enum.VALUE_1
  195. # ------------------------------------------------------------------------------
  196. func if_test():
  197. var some_bool := true
  198. while some_bool:
  199. pass
  200. while (some_bool):
  201. pass
  202. if some_bool:
  203. return some_bool
  204. if (some_bool):
  205. return (some_bool)
  206. elif !some_bool:
  207. return !some_bool
  208. elif !(some_bool):
  209. return !(some_bool)
  210. elif (some_bool):
  211. pass
  212. else:
  213. pass
  214. if some_bool: return
  215. # ------------------------------------------------------------------------------
  216. class InnerClass:
  217. var some_var = 100
  218. var dict = {
  219. 'key_a': some_var,
  220. 'key_b': str(10),
  221. key_c = some_var,
  222. key_d = int('10'),
  223. key_e = Color(1, 1, 1),
  224. key_f = Vector2(10, -10)
  225. }
  226. dict = {}
  227. var dict_b = {
  228. 1: true,
  229. 4: true,
  230. 6: true
  231. }
  232. func _ready():
  233. var list = []
  234. for i in range(10): # "in" should be purple (control flow)
  235. list.append(i)
  236. for child in get_children():
  237. print(child)
  238. for child in get_children():
  239. print(child)
  240. if true and true:
  241. pass
  242. elif 'foo' in list: # "in" should be blue (boolean operator)
  243. pass
  244. elif false:
  245. while true:
  246. pass
  247. else:
  248. pass
  249. pass
  250. # ------------------------------------------------------------------------------
  251. func test_function():
  252. OS.get_name()