on main help sign in
sub to azimuth/events to keep track of spawned points
commitd831dbbdd4a25f7e700054495b8eb49cd5bd068e authorJohn Hyde <johnhydefour@gmail.com> dateThu 21 Apr 2022, 22:57 (5 years ago) parentf5ced06
5 files changed+181−48
desk/app/astrolabe.hoon+120−9 desk/lib/astrolabe.hoon+34−28 desk/mar/astrolabe/point.hoon+2−2 desk/sur/astrolabe.hoon+8−2 ui/src/components/ShipView.svelte+17−7
desk/app/astrolabe.hoon+120−9
@@ -1,11 +1,16 @@
1−/- astrolabe
1+/- *astrolabe
22/+ naive, default-agent, dbug, agentio
33/$ udon-to-docu %udon %docu
44|%
55+$ versioned-state
66 $% state-0
77 ==
8−+$ state-0 [%0 data=(map @p @t)]
8++$ state-0
9+ $: %0
10+ spa=spawned
11+ ==
12+::
13++$ spawned (jug ship ship)
914+$ card card:agent:gall
1015--
1116%- agent:dbug
@@ -20,7 +25,8 @@
2025::
2126++ on-init
2227 ^- (quip card _this)
23− `this
28+ :_ this
29+ [%pass /azimuth-events %agent [our.bowl %azimuth] %watch /event]~
2430::
2531++ on-save on-save:def
2632++ on-load on-load:def
@@ -33,9 +39,7 @@
3339 ^- (unit (unit cage))
3440 ?+ path (on-peek:def path)
3541 [%x %point @ ~]
36− =, bowl
37− :- ~ :- ~ :- %astrolabe-point
38− !> .^(upoint:astrolabe %gx (scrio:hc %azimuth /point/[&3.path]/noun))
42+ ``astrolabe-point+!>((get-point:hc &3.path))
3943 [%x %doc ^]
4044 =/ doc-path=^path t.t.path
4145 =/ doc (read-doc:hc doc-path)
@@ -43,14 +47,121 @@
4347 `~
4448 ``json+!>(s+u.doc)
4549 ==
50+++ on-agent
51+ |= [=wire =sign:agent:gall]
52+ ^- (quip card _this)
53+ |^
54+ ?+ wire (on-agent:def wire sign)
55+ [%azimuth-events ~] (azimuth-event sign)
56+ ==
57+ ::
58+ ++ azimuth-event
59+ |= =sign:agent:gall
60+ ^- (quip card _this)
61+ ?+ -.sign [~ this]
62+ %watch-ack
63+ ?~ p.sign [~ this]
64+ =/ =tank leaf+"{(trip dap.bowl)} couldn't start listen to %azimuth"
65+ %- (slog tank u.p.sign)
66+ [~ this]
67+ ::
68+ %fact
69+ ?+ p.cage.sign (on-agent:def wire sign)
70+ %naive-diffs
71+ =+ !<(=diff:naive q.cage.sign)
72+ =^ cards state
73+ (on-naive-diff:hc diff)
74+ [cards this]
75+ ::
76+ %naive-state
77+ ~& > %received-azimuth-state
78+ :: =+ !<([nas=^state:naive =indices:dice] q.cage.sign)
79+ =+ !<([nas=^state:naive indices=*] q.cage.sign)
80+ =^ cards state
81+ (on-naive-state:hc nas)
82+ [cards this]
83+ ==
84+ ==
85+ --
4686::
47−++ on-agent on-agent:def
48−++ on-arvo on-arvo:def
49−++ on-fail on-fail:def
87+++ on-arvo on-arvo:def
88+++ on-fail on-fail:def
5089--
5190::
5291|_ =bowl:gall
5392++ scrio ~(scry agentio bowl)
93+++ put-in-spa
94+ |= =ship
95+ ^- _spa
96+ =/ parent=^ship (^sein:title ship)
97+ ?: =(parent ship)
98+ spa
99+ (~(put ju spa) parent ship)
100+++ on-naive-state
101+ |= nas=^state:naive
102+ ^- (quip card _state)
103+ =+ points=points.nas :: =points, eh?
104+ =. spa
105+ |-
106+ ^- _spa
107+ ?~ points spa
108+ =/ =ship -.n.points
109+ :: traverse tree of points and add @ps to spa with ^sein, you know
110+ =. spa (put-in-spa ship)
111+ $(points l.points, spa $(points r.points))
112+ `state
113+::
114+++ on-naive-diff
115+ |= =diff:naive
116+ ^- (quip card _state)
117+ :: =? spa (is-spawn-tx diff)
118+ =? spa ?=([%tx [* * * %spawn ship *] *] diff)
119+ %- put-in-spa
120+ ship.tx.raw-tx.diff
121+ `state
122+::
123+++ is-spawn-tx
124+ |= =diff:naive
125+ ^- ?
126+ ?= [%tx [* * * %spawn ship *] *] diff
127+::
128+++ get-point
129+ |= ship-name=term
130+ ^- point
131+ =/ =ship `@p`(slav %p ship-name)
132+ =/ unpoint (get-unpoint ship-name)
133+ :* unpoint
134+ (spa-count ship)
135+ (sponsor-chain unpoint)
136+ (probable-dominion unpoint)
137+ ==
138+::
139+++ get-unpoint
140+ |= ship-name=term
141+ .^(unpoint %gx (scrio %azimuth /point/[ship-name]/noun))
142+::
143+++ spa-count
144+ |= =ship
145+ ^- @ud
146+ %~ wyt
147+ in
148+ (~(get ju spa) ship)
149+::
150+++ sponsor-chain
151+ |= =unpoint
152+ ^- (list ship)
153+ ?~ unpoint ~
154+ =/ sponsor sponsor.net.u.unpoint
155+ ?. has.sponsor ~
156+ [who.sponsor ~] :: todo: lookup parent
157+::
158+++ probable-dominion
159+ |= =unpoint
160+ ^- dominion:naive
161+ ?^ unpoint
162+ dominion.u.unpoint
163+ %l1 :: todo: lookup parent
164+::
54165++ read-doc
55166 |= =path
56167 =/ doc-path=^path :(weld /doc/usr path /udon)
desk/lib/astrolabe.hoon+34−28
@@ -11,40 +11,46 @@
1111 =, enjs:format
1212 |%
1313 ++ point
14− |= =upoint
14+ |= =^point
1515 ^- json
16− ?~ upoint (pairs ~)
17− =* point u.upoint
16+ =* unpoint unpoint.point
17+ ?~ unpoint (pairs ~)
18+ =* npoint u.unpoint
1819 %+ frond %point
1920 %- pairs :~
20− [%dominion s+dominion.point]
21− :- %own
22− =* own own.point
21+ spa-count+(numb spa-count.point)
22+ [%probable-dominion s+probable-dominion.point]
23+ :- %npoint
2324 %- pairs :~
24− owner+(address owner.own)
25− spawn-proxy+(address spawn-proxy.own)
26− management-proxy+(address management-proxy.own)
27− voting-proxy+(address voting-proxy.own)
28− transfer-proxy+(address transfer-proxy.own)
29− ==
30− :- %net
31− =* net net.point
32− %- pairs
33− :~ rift+(numb rift.net)
34− :- %keys
25+ [%dominion s+dominion.npoint]
26+ :- %own
27+ =* own own.npoint
3528 %- pairs :~
36− life+(numb life.keys.net)
37− suite+(numb suite.keys.net)
38− auth+(numb auth.keys.net)
39− crypt+(numb crypt.keys.net)
29+ owner+(address owner.own)
30+ spawn-proxy+(address spawn-proxy.own)
31+ management-proxy+(address management-proxy.own)
32+ voting-proxy+(address voting-proxy.own)
33+ transfer-proxy+(address transfer-proxy.own)
4034 ==
41− :- %sponsor
42− %- pairs :~
43− has+b+has.sponsor.net
44− who+(ship who.sponsor.net)
35+ :- %net
36+ =* net net.npoint
37+ %- pairs
38+ :~ rift+(numb rift.net)
39+ :- %keys
40+ %- pairs :~
41+ life+(numb life.keys.net)
42+ suite+(numb suite.keys.net)
43+ auth+(numb auth.keys.net)
44+ crypt+(numb crypt.keys.net)
45+ ==
46+ :- %sponsor
47+ %- pairs :~
48+ has+b+has.sponsor.net
49+ who+(ship who.sponsor.net)
50+ ==
51+ :- %escape
52+ (biff escape.net ship)
4553 ==
46− :- %escape
47− (biff escape.net ship)
4854 ==
4955 ==
5056 ++ address
@@ -76,7 +82,7 @@
7682 |%
7783 ++ point
7884 |= jon=json
79− ^- upoint ~
85+ *^point
8086 --
8187::
8288++ share-dejs
desk/mar/astrolabe/point.hoon+2−2
@@ -1,8 +1,8 @@
11/+ *astrolabe
2−|_ pnt=upoint
2+|_ pnt=point
33++ grab
44 |%
5− ++ noun upoint
5+ ++ noun point
66 ++ json point:dejs
77 --
88++ grow
desk/sur/astrolabe.hoon+8−2
@@ -1,5 +1,11 @@
11/+ naive
22|%
3−+$ point point:naive
4−++ upoint (unit point)
3++$ npoint point:naive
4+++ unpoint (unit npoint)
5++$ point
6+ $: =unpoint
7+ spa-count=@ud
8+ sponsor-chain=(list ship)
9+ probable-dominion=dominion:naive
10+ ==
511--
ui/src/components/ShipView.svelte+17−7
@@ -87,20 +87,29 @@
8787 }
8888 $: {
8989 pointInfo = {};
90− let spawnStatus: any, layer: any, life: number, rift: number;
90+ let spawnStatus: any,
91+ layer: any,
92+ life: number,
93+ rift: number,
94+ spawnedCount: number;
9195 let keysSet = false;
9296 if (!azPoint) {
9397
9498 } else if (rawPointInfo.point) {
9599 const { point } = rawPointInfo;
96− life = point.net.keys.life;
97− rift = point.net.rift;
100+ const {
101+ 'probable-dominion': dominion,
102+ npoint
103+ } = point;
104+ spawnedCount = point['spa-count'];
105+ life = npoint.net.keys.life;
106+ rift = npoint.net.rift;
98107 if (life > 0) {
99108 keysSet = true;
100109 }
101110
102− pointInfo.proxies = point.own;
103− const { dominion } = point;
111+ pointInfo.proxies = npoint.own;
112+ // const { dominion } = npoint;
104113 layer = layerOptions[dominion];
105114
106115 if (pointInfo.proxies.owner.address === '0x86cd9cd0992f04231751e3761de45cecea5d1801') {
@@ -110,7 +119,7 @@
110119 } else {
111120 spawnStatus = spawnStatusOptions.spawnedNoKeys;
112121 }
113− const { sponsor } = point.net;
122+ const { sponsor } = npoint.net;
114123 if (sponsor.has) {
115124 pointInfo.sponsor = normalizeId(sponsor.who);
116125 }
@@ -129,6 +138,7 @@
129138 keysSet,
130139 life,
131140 rift,
141+ spawnedCount,
132142 };
133143 }
134144</script>
@@ -281,7 +291,7 @@
281291 </div>
282292 {#if canSpawnPoints}
283293 <div>
284− <h3 class="text-lg">Spawned Points</h3>
294+ <h3 class="text-lg">Spawned Points: {pointInfo.spawnedCount || ''}</h3>
285295 <span class="text-green-600">// TODO</span>
286296 </div>
287297 {/if}