Browse Source

rewrite examples :eyes:

Ethosa 3 years ago
parent
commit
d9cc079b03

+ 1 - 1
README.md

@@ -7,7 +7,7 @@
 [![time tracker](https://wakatime.com/badge/github/Ethosa/nodesnim.svg)](https://wakatime.com/badge/github/Ethosa/nodesnim)
 [![test](https://github.com/Ethosa/nodesnim/workflows/test/badge.svg)](https://github.com/Ethosa/nodesnim/actions)
 
-<h4>Nightly version - 0.0.6</h4>
+<h4>Stable version - 0.0.6</h4>
 </div>
 
 ## Install

+ 39 - 53
examples/novel/main.nim

@@ -4,27 +4,10 @@ import nodesnim
 Window("Novel game", 1280, 720)
 
 var
-  main = Scene("Main")
-
-  button = Button("New game")
-
-
-  # Game scene
-  game_scene = Scene("Game")
-
   # Backgrounds:
   night = load("assets/night.jpg")
-
   # Charapters:
   akiko_default = load("assets/test.png", GL_RGBA)
-
-  name_charapter = Label()
-  dialog_text = RichLabel()
-  background_image = TextureRect()
-  foreground_rect = ColorRect()
-
-  charapter = TextureRect("Charapter")
-
   dialog = @[
     ("Me", "H-Hey .. ?", false),
     ("Eileen", "NANI??????", true)
@@ -32,39 +15,46 @@ var
   stage = -1
 
 
-game_scene.addChild(background_image)
-background_image.setSizeAnchor(1, 1)
-background_image.setTexture(night)
-background_image.setTextureAnchor(0.5, 0.5, 0.5, 0.5)
-background_image.texture_mode = TEXTURE_KEEP_ASPECT_RATIO
-
-game_scene.addChild(charapter)
-charapter.setSizeAnchor(1, 1)
-charapter.setTexture(akiko_default)
-charapter.setTextureAnchor(0.5, 0.5, 0.5, 0.5)
-charapter.texture_mode = TEXTURE_KEEP_ASPECT_RATIO
-charapter.visible = false
+build:
+  - Scene main:
+    call rename("Main")
+    - Button button:
+      text: "New game"
+      call resize(128, 32)
+      call setAnchor(0.5, 0.5, 0.5, 0.5)
+  - Scene game_scene:
+    call rename("Game")
+    - TextureRect background_image:
+      call setSizeAnchor(1, 1)
+      call setTexture(night)
+      call setTextureAnchor(0.5, 0.5, 0.5, 0.5)
+      texture_mode: TEXTURE_KEEP_ASPECT_RATIO
+    - TextureRect charapter:
+      call setSizeAnchor(1, 1)
+      call setTexture(akiko_default)
+      call setTextureAnchor(0.5, 0.5, 0.5, 0.5)
+      texture_mode: TEXTURE_KEEP_ASPECT_RATIO
+      visible: false
+    - RichLabel dialog_text:
+      call setSizeAnchor(0.8, 0.3)
+      call setAnchor(0.1, 0.6, 0, 0)
+      call setBackgroundColor(Color(0x0e131760))
+      - Label name_charapter:
+        call resize(128, 32)
+        call setAnchor(0, 0, 0, 1)
+        call setStyle(style({background-color: "#0e131760", border-radius: 8}))
+        call setTextAlign(0.1, 0.5, 0.1, 0.5)
+    - ColorRect foreground_rect:
+      call setSizeAnchor(1, 1)
+      color: Color(0x0e1317ff)
+    - AnimationPlayer animation:
+      loop: false
+      call addState(foreground_rect.color.a.addr,
+                    @[(tick: 0, value: 1.0), (tick: 100, value: 0.0)])
 
-game_scene.addChild(dialog_text)
-dialog_text.setSizeAnchor(0.8, 0.3)
-dialog_text.setAnchor(0.1, 0.6, 0, 0)
-dialog_text.setBackgroundColor(Color(0x0e131760))
-
-dialog_text.addChild(name_charapter)
-name_charapter.resize(128, 32)
-name_charapter.setAnchor(0, 0, 0, 1)
-name_charapter.setBackgroundColor(Color(0x0e131760))
-name_charapter.setTextAlign(0.1, 0.5, 0.1, 0.5)
-
-game_scene.addChild(foreground_rect)
-foreground_rect.setSizeAnchor(1, 1)
 
 foreground_rect@on_ready(self):
-  foreground_rect.color = Color(0x0e1317ff)
-
-foreground_rect@on_process(self):
-  if foreground_rect.color.a > 0f:
-    foreground_rect.color.a -= 0.001
+  animation.play()
 
 foreground_rect@on_input(self, event):
   if event.isInputEventMouseButton() and not event.pressed:
@@ -76,16 +66,12 @@ foreground_rect@on_input(self, event):
 
 
 
-main.addChild(button)
-button.text = "New game"
-button.resize(128, 32)
-button.setAnchor(0.5, 0.5, 0.5, 0.5)
 button.on_touch =
   proc(self: ButtonRef, x, y: float) =
     changeScene("Game")
 
+echo main.name, ", ", game_scene.name
 
-addScene(main)
+addMainScene(main)
 addScene(game_scene)
-setMainScene("Main")
 windowLaunch()

+ 6 - 12
examples/screensaver/main.nim

@@ -5,19 +5,15 @@ randomize()
 
 Window("ScreenSaver", 720, 480)
 
-
 var
-  main = Scene("Main")
-
-  img = load("img.png", GL_RGBA)
-
-  sprite = Sprite()
-
   direction = Vector2()
   speed = 3f
 
-sprite.centered = false
-sprite.setTexture(img)
+build:
+  - Scene main:
+    - Sprite sprite:
+      centered: false
+      call setTexture(load("img.png", GL_RGBA))
 
 sprite@on_process(self):
   let rect = Rect2(sprite.global_position, sprite.rect_size)
@@ -37,7 +33,5 @@ sprite@on_process(self):
   sprite.move(direction*speed)
 
 
-main.addChild(sprite )
-addScene(main)
-setMainScene("Main")
+addMainScene(main)
 windowLaunch()

+ 12 - 16
examples/snake/main.nim

@@ -14,13 +14,18 @@ type
     body: seq[Vector2Ref]
 
 
-var
-  main = Scene("Main")
-  game_over = Scene("GameOverScene")
-  label_go = Label("GameOverLabel")
-
-  canvas = Canvas("Canvas")
+build:
+  - Scene main:
+    call rename("Main")
+    - Canvas canvas
+  - Scene game_over:
+    call rename("GameOverScene")
+    - Label label_go:
+      text: "Game Over"
+      call setTextAlign(0.5, 0.5, 0.5, 0.5)
+      call setSizeAnchor(1, 1)
 
+var
   snake = Snake(
     dir: Vector2(),
     body: @[Vector2(0, 0)],
@@ -29,13 +34,6 @@ var
   time = 0
 
 
-game_over.addChild(label_go)
-
-label_go.text = "Game Over"
-label_go.setTextAlign(0.5, 0.5, 0.5, 0.5)
-label_go.setSizeAnchor(1, 1)
-
-
 Input.addKeyAction("forward", "w")
 Input.addKeyAction("backward", "s")
 Input.addKeyAction("left", "a")
@@ -124,7 +122,5 @@ canvas@on_process(self):
 
 
 addScene(game_over)
-main.addChild(canvas)
-addScene(main)
-setMainScene("Main")
+addMainScene(main)
 windowLaunch()

+ 1 - 1
src/nodesnim/graphics/drawable.nim

@@ -45,7 +45,7 @@ proc Drawable*: DrawableRef =
     border_radius_rightbottom: 0,
     border_color: Color(0, 0, 0, 0),
     background_color: Color(0, 0, 0, 0),
-    shadow_offset: Vector2(0, 0)
+    shadow_offset: Vector2(0, 0), shadow: false
   )
 
 let shadow_color: ColorRef = Color(0f, 0f, 0f, 0.5f)

+ 1 - 0
src/nodesnim/nodes/animation_player.nim

@@ -45,6 +45,7 @@ method draw*(self: AnimationPlayerRef, w: GLfloat, h: GLfloat) =
         self.tick = 0
         if not self.loop:
             self.is_played = false
+            return
 
     var
       current_states: seq[tuple[tick: int, value: float]] = @[]

+ 3 - 0
src/nodesnim/nodes/node.nim

@@ -197,6 +197,9 @@ method hasParent*(self: NodeRef): bool {.base, inline.} =
 method hide*(self: NodeRef) {.base.} =
   self.visible = false
 
+method rename*(self: NodeRef, new_name: string) {.base.} =
+  self.name = new_name
+
 method removeChild*(self: NodeRef, index: int) {.base.} =
   ## Removes node child at a specific position.
   ##

+ 1 - 1
src/nodesnim/window.nim

@@ -21,7 +21,7 @@ var
   cmdCount {.importc: "cmdCount".}: cint
 
 
-when not defined(ios) and not defined(android):
+when not defined(ios) and not defined(android) and not defined(useGlew):
   when defined(debug):
     debug("Try to load OpenGL ...")
   loadExtensions()  # Load OpenGL extensions.