main.nim 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. # main scene
  2. import nodesnim
  3. Window("Novel game", 1280, 720)
  4. var
  5. main_obj: SceneObj
  6. main = Scene("Main", main_obj)
  7. button_obj: ButtonObj
  8. button = Button("New game", button_obj)
  9. # Game scene
  10. game_scene_obj: SceneObj
  11. game_scene = Scene("Game", game_scene_obj)
  12. # Backgrounds:
  13. night = load("assets/night.jpg")
  14. # Charapters:
  15. akiko_default = load("assets/sharp.jpg")
  16. name_charapter_obj: LabelObj
  17. name_charapter = Label(name_charapter_obj)
  18. dialog_text_obj: RichLabelObj
  19. dialog_text = RichLabel(dialog_text_obj)
  20. background_image_obj: TextureRectObj
  21. background_image = TextureRect(background_image_obj)
  22. foreground_rect_obj: ColorRectObj
  23. foreground_rect = ColorRect(foreground_rect_obj)
  24. charapter_obj: TextureRectObj
  25. charapter = TextureRect("Charapter", charapter_obj)
  26. dialog = @[
  27. ("Me", "H-Hey .. ?", false),
  28. ("Eileen", "NANI??????", true)
  29. ]
  30. stage = -1
  31. game_scene.addChild(background_image)
  32. background_image.setSizeAnchor(1, 1)
  33. background_image.setTexture(night)
  34. background_image.setTextureAnchor(0.5, 0.5, 0.5, 0.5)
  35. background_image.texture_mode = TEXTURE_KEEP_ASPECT_RATIO
  36. game_scene.addChild(charapter)
  37. charapter.setSizeAnchor(1, 1)
  38. charapter.setTexture(akiko_default)
  39. charapter.setTextureAnchor(0.5, 0.5, 0.5, 0.5)
  40. charapter.texture_mode = TEXTURE_KEEP_ASPECT_RATIO
  41. charapter.visible = false
  42. game_scene.addChild(dialog_text)
  43. dialog_text.setSizeAnchor(0.8, 0.3)
  44. dialog_text.setAnchor(0.1, 0.6, 0, 0)
  45. dialog_text.setBackgroundColor(Color(0x0e131760))
  46. dialog_text.addChild(name_charapter)
  47. name_charapter.resize(128, 32)
  48. name_charapter.setAnchor(0, 0, 0, 1)
  49. name_charapter.setBackgroundColor(Color(0x0e131760))
  50. name_charapter.setTextAlign(0.1, 0.5, 0.1, 0.5)
  51. game_scene.addChild(foreground_rect)
  52. foreground_rect.setSizeAnchor(1, 1)
  53. foreground_rect.ready =
  54. proc() =
  55. foreground_rect.color = Color(0x0e1317ff)
  56. foreground_rect.process =
  57. proc() =
  58. if foreground_rect.color.a > 0f:
  59. foreground_rect.color.a -= 0.001
  60. foreground_rect.input =
  61. proc(event: InputEvent) =
  62. if event.isInputEventMouseButton() and not event.pressed:
  63. inc stage
  64. if stage < dialog.len():
  65. name_charapter.setText(dialog[stage][0])
  66. dialog_text.setText(clrtext(dialog[stage][1]))
  67. charapter.visible = dialog[stage][2]
  68. main.addChild(button)
  69. button.text = "New game"
  70. button.resize(128, 32)
  71. button.setAnchor(0.5, 0.5, 0.5, 0.5)
  72. button.on_click =
  73. proc(x, y: float) =
  74. changeScene("Game")
  75. addScene(main)
  76. addScene(game_scene)
  77. setMainScene("Main")
  78. windowLaunch()