From 6e9ada941b18221cf5aa7b4d8101b3bcb4b998c2 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Tue, 10 Nov 2015 19:57:22 -0800 Subject: [PATCH] should allow steam achievements. --- desktop/project.clj | 3 +++ desktop/release.sh | 2 +- desktop/src-common/advent/core.clj | 2 ++ .../advent/screens/rooms/behind_house.clj | 8 ++++++-- desktop/src-common/advent/screens/scene.clj | 2 ++ desktop/src-common/advent/steam.clj | 20 +++++++++++++++++++ desktop/steam_appid.txt | 1 + 7 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 desktop/src-common/advent/steam.clj create mode 100644 desktop/steam_appid.txt diff --git a/desktop/project.clj b/desktop/project.clj index fc588bd4..bd145c77 100644 --- a/desktop/project.clj +++ b/desktop/project.clj @@ -28,6 +28,9 @@ [org.clojure/data.csv "0.1.3"]] :warn-on-reflection true} + :steam { + :dependencies [[com.code-disaster.steamworks4j/steamworks4j "1.2.2"]] + } } :aot [advent.core.desktop-launcher] :main advent.core.desktop-launcher) diff --git a/desktop/release.sh b/desktop/release.sh index 38139dea..fe69850e 100755 --- a/desktop/release.sh +++ b/desktop/release.sh @@ -1,7 +1,7 @@ #!/bin/bash gawk -i inplace ' { print $1+1; } ' last-release git tag -a v0.1.`cat last-release` -m "tagging version 0.1.`cat last-release`" -lein do clean, compile, uberjar +lein with-profile steam do clean, compile, uberjar java -jar packr.jar build-windows.json java -jar packr.jar build-osx.json read -p "Steam pass: " STEAM_PASS diff --git a/desktop/src-common/advent/core.clj b/desktop/src-common/advent/core.clj index 2d41f0b5..47bb8f0f 100644 --- a/desktop/src-common/advent/core.clj +++ b/desktop/src-common/advent/core.clj @@ -9,6 +9,7 @@ [advent.screens.credits :as credits] [advent.screens.inventory :as inventory] [advent.screens.safe :as safe] + [advent.steam :as steam] [clojure.pprint] [advent.pathfind]) (:import [com.badlogic.gdx.graphics Pixmap Pixmap$Filter Texture Texture$TextureFilter] @@ -23,6 +24,7 @@ (defgame advent :on-create (fn [this] + (steam/init) (set-screen! this title/title-screen))) diff --git a/desktop/src-common/advent/screens/rooms/behind_house.clj b/desktop/src-common/advent/screens/rooms/behind_house.clj index 2da2c3ea..987c0ee0 100644 --- a/desktop/src-common/advent/screens/rooms/behind_house.clj +++ b/desktop/src-common/advent/screens/rooms/behind_house.clj @@ -4,11 +4,13 @@ [advent.screens.items :as items] [advent.actions :as actions] [advent.utils :as utils] + [advent.steam :as steam] [clojure.zip :as zip] [play-clj.core :refer :all] [play-clj.ui :refer :all] [play-clj.utils :refer :all] - [play-clj.g2d :refer :all])) + [play-clj.g2d :refer :all]) + ) (defn make-night [entities] (assoc-in entities [:room :entities :peeling :opacity] 0)) @@ -86,7 +88,9 @@ (actions/play-sound entities "safe-sound.ogg" 0.1) (actions/talk entities :ego "So that's the code to his safe..." :animate? false :stop? false) (actions/play-animation entities :ego :end-squat) - (actions/talk entities :ego "A lot of good it'll do me to know his password while he's still there.")) + (actions/talk entities :ego "A lot of good it'll do me to know his password while he's still there.") + (steam/set-achievement "MASTER_SLEUTH") + ) :else (do (actions/walk-to entities :ego [80 80] :face :left) diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index 6e38bec2..a956994c 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -15,6 +15,7 @@ [advent.utils :as utils] [advent.saves :as saves] [advent.tween :as tween] + [advent.steam :as steam] [advent.screens.rooms :as rooms] [advent.screens.fade :refer [fade-screen]] [advent.screens.items :as items] @@ -1122,6 +1123,7 @@ void main () :on-render (fn [{:keys [^OrthographicCamera camera ^FitViewport viewport] :as screen} [entities]] + (steam/update) (.apply viewport) (if (get-in entities [:closing? :value]) diff --git a/desktop/src-common/advent/steam.clj b/desktop/src-common/advent/steam.clj new file mode 100644 index 00000000..e7661701 --- /dev/null +++ b/desktop/src-common/advent/steam.clj @@ -0,0 +1,20 @@ +(ns advent.steam) + +(def has-steam? + (try + (import '[com.codedisaster.steamworks SteamUserStats SteamUserStatsCallback SteamAPI]) + true + (catch Exception e + false))) + +(defn init [] + (when has-steam? + (eval `(SteamAPI/init)))) + +(defn update [] + (when (and has-steam? (eval `(SteamAPI/isSteamRunning))) + (eval `(SteamAPI/runCallbacks)))) + +(defn set-achievement [achievement] + (when has-steam? + (eval `(.setAchievement (SteamUserStats. nil) ~achievement)))) diff --git a/desktop/steam_appid.txt b/desktop/steam_appid.txt new file mode 100644 index 00000000..b7595ef9 --- /dev/null +++ b/desktop/steam_appid.txt @@ -0,0 +1 @@ +411610