Skip to content

Commit 4430872

Browse files
committed
Use pun in a few places.
1 parent 6290cac commit 4430872

File tree

5 files changed

+45
-37
lines changed

5 files changed

+45
-37
lines changed

simalq/geometry.hy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
;; --------------------------------------------------------------
66

77
(require
8-
hyrule [unless do-n]
8+
hyrule [unless do-n pun]
99
simalq.macros [defdataclass defmeth])
1010
(import
1111
itertools [chain]
@@ -125,7 +125,7 @@
125125
(%= y map.height))
126126
(unless (and (<= 0 x (- map.width 1)) (<= 0 y (- map.height 1)))
127127
(raise (GeometryError f"Illegal position: {x}, {y}")))
128-
(for [[k v] (.items (dict :map map :x x :y y))]
128+
(for [[k v] (.items (pun (dict :!map :!x :!y)))]
129129
; Call `object.__setattr__` to bypass `dataclass`'s frozen
130130
; checks.
131131
(object.__setattr__ @ k v)))

simalq/quest_definition/__init__.hy

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ quest definitions from other files in this directory."
77
;; --------------------------------------------------
88

99
(require
10-
hyrule [unless])
10+
hyrule [unless pun])
1111
(import
1212
math [ceil]
1313
re
@@ -54,14 +54,14 @@ quest definitions from other files in this directory."
5454
[name "Test Quest"]
5555
[authors "Mitt Lowporch and Cire Whyhall"]
5656
[title "Test Quest title"]]
57-
(Quest
58-
:name name
59-
:authors authors
60-
:title title
61-
:starting-hp starting-hp
57+
(pun (Quest
58+
:!name
59+
:!authors
60+
:!title
61+
:!starting-hp
6262
:levels (tuple (gfor
6363
[i level-args] (enumerate levels)
64-
(mk-level :n (+ i 1) #** (kwdict level-args))))))
64+
(mk-level :n (+ i 1) #** (kwdict level-args)))))))
6565

6666
(defn mk-level [
6767
; Make a level.
@@ -87,16 +87,16 @@ quest definitions from other files in this directory."
8787
(mk-tile
8888
(Pos m (+ (get player-start 0) i 1) (get player-start 1))
8989
tile-spec))))
90-
(Level
91-
:title title
92-
:n n
90+
(pun (Level
91+
:!title
92+
:!n
9393
:next-level (or next-level (+ n 1))
9494
:map m
9595
:player-start (Pos m #* player-start)
96-
:poison-intensity poison-intensity
97-
:time-limit time-limit
98-
:exit-delay exit-delay
99-
:timed-exit-start timed-exit-start))
96+
:!poison-intensity
97+
:!time-limit
98+
:!exit-delay
99+
:!timed-exit-start)))
100100

101101
(defn parse-text-map [text [map-marks #()] [wrap-x False] [wrap-y False]]
102102
(setv text (dedent

simalq/tile/__init__.hy

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
;; --------------------------------------------------------------
44

55
(require
6-
hyrule [unless defmacro-kwargs]
6+
hyrule [unless defmacro-kwargs pun]
77
simalq.macros [field-defaults defmeth])
88
(import
99
copy [deepcopy]
@@ -321,7 +321,7 @@
321321
(for [[iq-ix field-value] (.items d)]
322322
(assert (not-in iq-ix Tile.types-by-iq-ix))
323323
(setv (get Tile.types-by-iq-ix iq-ix)
324-
(dict :cls cls :field field :value field-value))))
324+
(pun (dict :!cls :!field :value field-value)))))
325325

326326
; Update `hy.repr`.
327327
(hy.repr-register cls (fn [x]
@@ -496,6 +496,5 @@
496496
simalq.tile.monster [Monster]
497497
simalq.tile.unimplemented [UnimplementedTile])
498498
499-
(setv Tile.superclasses (do-mac (dfor
500-
c '[Scenery Item Monster Player]
501-
(str c) c)))
499+
(setv Tile.superclasses (pun (dict
500+
:!Scenery :!Item :!Monster :!Player)))

simalq/tile/monster.hy

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
;; --------------------------------------------------------------
44

55
(require
6-
hyrule [unless do-n list-n defmacro-kwargs case]
6+
hyrule [unless do-n list-n defmacro-kwargs case pun]
77
simalq.macros [field-defaults pop-integer-part defmeth]
88
simalq.tile [deftile])
99
(import
@@ -19,6 +19,8 @@
1919
simalq.tile.scenery [Scenery walkability can-occupy?])
2020
(setv T True F False)
2121

22+
(pun
23+
2224
;; --------------------------------------------------------------
2325
;; * Declarations
2426
;; --------------------------------------------------------------
@@ -108,7 +110,7 @@
108110

109111
; Otherwise, try a ranged attack.
110112
(when (and (not attack) (or @damage-shot @special-shot))
111-
(for [target (ray :pos pos :direction d :length
113+
(for [target (ray :!pos :direction d :length
112114
(min (or @shot-range Inf) G.rules.reality-bubble-size))]
113115
(when (= target G.player.pos)
114116
(setv attack 'shot)
@@ -226,9 +228,9 @@
226228
tile (at intermediate)
227229
(and (isinstance tile Scenery) tile.superblock))))
228230
(setx target (+ intermediate d))
229-
(can-occupy? target :monster? T :ethereal-to ethereal-to))
231+
(can-occupy? target :monster? T :!ethereal-to))
230232
(do
231-
(setv [target wly] (walkability @pos d :monster? T :ethereal-to ethereal-to))
233+
(setv [target wly] (walkability @pos d :monster? T :!ethereal-to))
232234
(= wly 'walk))))
233235
234236
(unless (ok-target)
@@ -282,7 +284,7 @@
282284
(setv [d @wander-state] (@pseudorandom-dir @wander-state))
283285
(unless d
284286
(return))
285-
(setv [target wly] (walkability @pos d :monster? T :ethereal-to ethereal-to))
287+
(setv [target wly] (walkability @pos d :monster? T :!ethereal-to))
286288
(unless (= wly 'walk)
287289
(return))
288290
(when (> (dist G.player.pos target) G.rules.reality-bubble-size)
@@ -354,7 +356,7 @@
354356
; end summoning, wasting the consumed summon power.
355357
(return)))
356358
; We have a target. Place the monster.
357-
(@make target stem :hp hp))
359+
(@make target stem :!hp))
358360
T))
359361
360362
;; --------------------------------------------------------------
@@ -446,8 +448,8 @@
446448
; We need `[hp hp]` above to be sure we get a separate variable
447449
; for each closure.
448450
[((get Tile.types "generator")
449-
:pos pos
450-
:hp hp
451+
:!pos
452+
:!hp
451453
:summon-class ~(get (.partition name " ") 2)
452454
:summon-hp (>> te-v2 5)
453455
:summon-frequency (get
@@ -760,8 +762,8 @@
760762
(setv (get Tile.types-by-iq-ix 135) (fn [pos _ te-v2]
761763
; Unlike IQ, we represent the spider and its web separately.
762764
[
763-
((get Tile.types "giant spider") :pos pos :hp te-v2)
764-
((get Tile.types "web") :pos pos)]))
765+
((get Tile.types "giant spider") :!pos :hp te-v2)
766+
((get Tile.types "web") :!pos)]))
765767
766768
767769
(deftile "Z " "a turret" Stationary
@@ -861,3 +863,5 @@
861863
T)))
862864
863865
:flavor "This mermaid is all giggles and smiles, but she's obviously trying to kill you. She sings an enchanted song that can briefly enrapture you, holding you in place in a momentary crisis of conscience. The words go like this: \"Oh please, kind sir, spare me. Oh please, sir, get me back to the water. Let me live, oh let me live.\" Pretty rude of her to misgender you like that.\n\n Hey guys, did you know that…")
866+
867+
)

tests/test_geometry.hy

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33

44
(require
5-
hyrule [ebranch])
5+
hyrule [ebranch pun])
66
(import
77
copy [deepcopy]
88
hyrule [thru]
@@ -13,6 +13,9 @@
1313
(setv T True F False)
1414

1515

16+
(pun
17+
18+
1619
(defn test-map []
1720
(setv w 5 h 3)
1821
(setv m (Map.from-data :wrap-x F :wrap-y F :data
@@ -130,7 +133,7 @@
130133
(defn test-adjacent? []
131134
(defn all-adjacencies [[wrap-x F] [wrap-y F]]
132135
"Get all adjacencies from (0, 0)."
133-
(setv m (Map.make :wrap-x wrap-x :wrap-y wrap-y :width 4 :height 5))
136+
(setv m (Map.make :!wrap-x :!wrap-y :width 4 :height 5))
134137
(lfor
135138
y (reversed (range m.height))
136139
x (range m.width)
@@ -165,7 +168,7 @@
165168
(defn test-dir-to []
166169
(defn all-dirs [[wrap-x F] [wrap-y F]]
167170
"Get all directions from (1, 1)."
168-
(setv m (Map.make :wrap-x wrap-x :wrap-y wrap-y :width 5 :height 6))
171+
(setv m (Map.make :!wrap-x :!wrap-y :width 5 :height 6))
169172
(lfor
170173
y (reversed (range m.height))
171174
x (range m.width)
@@ -210,7 +213,7 @@
210213
(setv d 7)
211214
(defn all-dists [[wrap-x F] [wrap-y F]]
212215
"Get all distances from (1, 1)."
213-
(setv m (Map.make :wrap-x wrap-x :wrap-y wrap-y :width d :height d))
216+
(setv m (Map.make :!wrap-x :!wrap-y :width d :height d))
214217
(lfor
215218
y (reversed (range m.height))
216219
x (range m.width)
@@ -252,8 +255,7 @@
252255

253256
(defn test-burst []
254257
(for [size [2 6] exclude-center [F T] wrap-x [F T] wrap-y [F T]]
255-
(setv m (Map.make :width 5 :height 7
256-
:wrap-x wrap-x :wrap-y wrap-y))
258+
(setv m (Map.make :!wrap-x :!wrap-y :width 5 :height 7))
257259
(setv p0 (Pos m 1 1))
258260
(setv b (tuple (burst p0 size exclude-center)))
259261
; A burst shouldn't duplicate positions.
@@ -316,3 +318,6 @@
316318
(setv m (Map.make :width 20 :height 20 :wrap-x T :wrap-y T))
317319
(setv b (list (burst (Pos m 4 7) Inf)))
318320
(assert (= (len b) (* 20 20))))
321+
322+
323+
)

0 commit comments

Comments
 (0)