(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.'"))