55 lines
3.1 KiB
Clojure
55 lines
3.1 KiB
Clojure
(ns advent.screens.rooms.common
|
|
(:require [clojure.core.async :refer [chan]]
|
|
[advent.screens.rooms :as rooms]
|
|
[advent.actions :as actions]
|
|
[advent.screens.items :as items]
|
|
[advent.utils :as utils]
|
|
[advent.pathfind]
|
|
[clojure.zip :as zip]
|
|
[play-clj.core :refer :all]
|
|
[play-clj.ui :refer :all]
|
|
[play-clj.utils :refer :all]
|
|
[play-clj.g2d :refer :all]))
|
|
|
|
(defn go-to-jail [entities]
|
|
(actions/update-state entities #(assoc % :time :night))
|
|
(actions/update-state entities #(assoc % :chest-contents (concat (remove #{:key} (:inventory %)) (:chest-contents %))))
|
|
(actions/update-state entities #(assoc % :inventory []))
|
|
(actions/update-state entities #(assoc % :opened-bars? false))
|
|
(actions/transition-background entities :inside-jail [130 85]))
|
|
|
|
(defn make-wizard [screen wizard-spec]
|
|
(let [wizard-sheet (texture! (texture "wizard/talk.png") :split 20 46)
|
|
wizard-stand (animation 0.2 (for [i (flatten [(repeat 10 0) 1])]
|
|
(aget wizard-sheet 0 i)))
|
|
wizard-disappear (utils/make-anim "wizard/disappear.png" [20 46] 0.075 (range 19))
|
|
wizard-talk (animation 0.2 (for [i [0 2 0 2 1 2 0 3 0 2 0 1 0 2]]
|
|
(aget wizard-sheet 0 i)))]
|
|
(actions/start-animation screen (merge (assoc (animation->texture screen wizard-stand)
|
|
:left {:talk (utils/flip wizard-talk)
|
|
:stand (utils/flip wizard-stand)
|
|
:disappear (utils/flip wizard-disappear)}
|
|
:right {:talk wizard-talk
|
|
:stand wizard-stand
|
|
:disappear wizard-disappear}
|
|
:talk-color (color 0.95 0.3 1.0 1.0)
|
|
:facing :left) wizard-spec)
|
|
:stand)))
|
|
|
|
|
|
(defn read-note-1 [entities]
|
|
(actions/do-dialogue entities
|
|
:ego "It's a note from Gandarf! It says:"
|
|
:ego "'Boy, I have been kidnapped by Blergh.'"
|
|
:ego "'He's got me locked up in his fortress of doom.'"
|
|
:ego "'It's actually pretty comfortable, despite the name.'"
|
|
:ego "'But you must hurry.'"
|
|
:ego "'You must cast the spell to restore magic to the Slinger's Shot yourself.'"
|
|
:ego "'I will do my best to help you along the way.'"
|
|
:ego "'You will need to add to your flask the ashes of magic, and the sound of buzzing.'"
|
|
:ego "'Then stir with the gift of flight.'"
|
|
:ego "'Then pour the contents in the cauldron.'"
|
|
:ego "'I will give you more instructions when I can.'"
|
|
:ego "'And please hurry, because we're being forced into a karaoke competition.'"
|
|
:ego "'I'm about at my witt's end.'"))
|