on main help sign in
sub to azimuth/events to keep track of spawned points
d831dbbJohn Hyde
desk/app/astrolabe.hoon+120−9
@@ -1,11 +1,16 @@
1−/- astrolabe
1+/- *astrolabe
2/+ naive, default-agent, dbug, agentio
2/+ naive, default-agent, dbug, agentio
3/$ udon-to-docu %udon %docu
3/$ udon-to-docu %udon %docu
4|%
4|%
5+$ versioned-state
5+$ versioned-state
6 $% state-0
6 $% state-0
7 ==
7 ==
8−+$ state-0 [%0 data=(map @p @t)]
8++$ state-0
9+ $: %0
10+ spa=spawned
11+ ==
12+::
13++$ spawned (jug ship ship)
9+$ card card:agent:gall
14+$ card card:agent:gall
10--
15--
11%- agent:dbug
16%- agent:dbug
@@ -20,7 +25,8 @@
20::
25::
21++ on-init
26++ on-init
22 ^- (quip card _this)
27 ^- (quip card _this)
23− `this
28+ :_ this
29+ [%pass /azimuth-events %agent [our.bowl %azimuth] %watch /event]~
24::
30::
25++ on-save on-save:def
31++ on-save on-save:def
26++ on-load on-load:def
32++ on-load on-load:def
@@ -33,9 +39,7 @@
33 ^- (unit (unit cage))
39 ^- (unit (unit cage))
34 ?+ path (on-peek:def path)
40 ?+ path (on-peek:def path)
35 [%x %point @ ~]
41 [%x %point @ ~]
36− =, bowl
37− :- ~ :- ~ :- %astrolabe-point
42+ ``astrolabe-point+!>((get-point:hc &3.path))
38− !> .^(upoint:astrolabe %gx (scrio:hc %azimuth /point/[&3.path]/noun))
39 [%x %doc ^]
43 [%x %doc ^]
40 =/ doc-path=^path t.t.path
44 =/ doc-path=^path t.t.path
41 =/ doc (read-doc:hc doc-path)
45 =/ doc (read-doc:hc doc-path)
@@ -43,14 +47,121 @@
43 `~
47 `~
44 ``json+!>(s+u.doc)
48 ``json+!>(s+u.doc)
45 ==
49 ==
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+ --
46::
86::
47−++ on-agent on-agent:def
48−++ on-arvo on-arvo:def
87+++ on-arvo on-arvo:def
49−++ on-fail on-fail:def
88+++ on-fail on-fail:def
50--
89--
51::
90::
52|_ =bowl:gall
91|_ =bowl:gall
53++ scrio ~(scry agentio bowl)
92++ 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+::
54++ read-doc
165++ read-doc
55 |= =path
166 |= =path
56 =/ doc-path=^path :(weld /doc/usr path /udon)
167 =/ doc-path=^path :(weld /doc/usr path /udon)
desk/lib/astrolabe.hoon+34−28
@@ -11,40 +11,46 @@
11 =, enjs:format
11 =, enjs:format
12 |%
12 |%
13 ++ point
13 ++ point
14− |= =upoint
14+ |= =^point
15 ^- json
15 ^- json
16+ =* unpoint unpoint.point
16− ?~ upoint (pairs ~)
17+ ?~ unpoint (pairs ~)
17− =* point u.upoint
18+ =* npoint u.unpoint
18 %+ frond %point
19 %+ frond %point
19 %- pairs :~
20 %- pairs :~
21+ spa-count+(numb spa-count.point)
20− [%dominion s+dominion.point]
22+ [%probable-dominion s+probable-dominion.point]
21− :- %own
23+ :- %npoint
22− =* own own.point
23 %- pairs :~
24 %- pairs :~
24− owner+(address owner.own)
25+ [%dominion s+dominion.npoint]
25− spawn-proxy+(address spawn-proxy.own)
26+ :- %own
26− management-proxy+(address management-proxy.own)
27+ =* own own.npoint
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
35 %- pairs :~
28 %- pairs :~
36− life+(numb life.keys.net)
29+ owner+(address owner.own)
37− suite+(numb suite.keys.net)
30+ spawn-proxy+(address spawn-proxy.own)
38− auth+(numb auth.keys.net)
31+ management-proxy+(address management-proxy.own)
39− crypt+(numb crypt.keys.net)
32+ voting-proxy+(address voting-proxy.own)
33+ transfer-proxy+(address transfer-proxy.own)
40 ==
34 ==
41− :- %sponsor
35+ :- %net
36+ =* net net.npoint
37+ %- pairs
38+ :~ rift+(numb rift.net)
39+ :- %keys
42− %- pairs :~
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 :~
43− has+b+has.sponsor.net
48+ has+b+has.sponsor.net
44− who+(ship who.sponsor.net)
49+ who+(ship who.sponsor.net)
50+ ==
51+ :- %escape
52+ (biff escape.net ship)
45 ==
53 ==
46− :- %escape
47− (biff escape.net ship)
48 ==
54 ==
49 ==
55 ==
50 ++ address
56 ++ address
@@ -76,7 +82,7 @@
76 |%
82 |%
77 ++ point
83 ++ point
78 |= jon=json
84 |= jon=json
79− ^- upoint ~
85+ *^point
80 --
86 --
81::
87::
82++ share-dejs
88++ share-dejs
desk/mar/astrolabe/point.hoon+2−2
@@ -1,8 +1,8 @@
1/+ *astrolabe
1/+ *astrolabe
2−|_ pnt=upoint
2+|_ pnt=point
3++ grab
3++ grab
4 |%
4 |%
5− ++ noun upoint
5+ ++ noun point
6 ++ json point:dejs
6 ++ json point:dejs
7 --
7 --
8++ grow
8++ grow
desk/sur/astrolabe.hoon+8−2
@@ -1,5 +1,11 @@
1/+ naive
1/+ naive
2|%
2|%
3−+$ point point:naive
3++$ npoint point:naive
4+++ unpoint (unit npoint)
4−++ upoint (unit point)
5++$ point
6+ $: =unpoint
7+ spa-count=@ud
8+ sponsor-chain=(list ship)
9+ probable-dominion=dominion:naive
10+ ==
5--
11--
ui/src/components/ShipView.svelte+17−7
@@ -87,20 +87,29 @@
87 }
87 }
88 $: {
88 $: {
89 pointInfo = {};
89 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;
91 let keysSet = false;
95 let keysSet = false;
92 if (!azPoint) {
96 if (!azPoint) {
93
97
94 } else if (rawPointInfo.point) {
98 } else if (rawPointInfo.point) {
95 const { point } = rawPointInfo;
99 const { point } = rawPointInfo;
100+ const {
101+ 'probable-dominion': dominion,
102+ npoint
103+ } = point;
104+ spawnedCount = point['spa-count'];
96− life = point.net.keys.life;
105+ life = npoint.net.keys.life;
97− rift = point.net.rift;
106+ rift = npoint.net.rift;
98 if (life > 0) {
107 if (life > 0) {
99 keysSet = true;
108 keysSet = true;
100 }
109 }
101
110
102− pointInfo.proxies = point.own;
111+ pointInfo.proxies = npoint.own;
103− const { dominion } = point;
112+ // const { dominion } = npoint;
104 layer = layerOptions[dominion];
113 layer = layerOptions[dominion];
105
114
106 if (pointInfo.proxies.owner.address === '0x86cd9cd0992f04231751e3761de45cecea5d1801') {
115 if (pointInfo.proxies.owner.address === '0x86cd9cd0992f04231751e3761de45cecea5d1801') {
@@ -110,7 +119,7 @@
110 } else {
119 } else {
111 spawnStatus = spawnStatusOptions.spawnedNoKeys;
120 spawnStatus = spawnStatusOptions.spawnedNoKeys;
112 }
121 }
113− const { sponsor } = point.net;
122+ const { sponsor } = npoint.net;
114 if (sponsor.has) {
123 if (sponsor.has) {
115 pointInfo.sponsor = normalizeId(sponsor.who);
124 pointInfo.sponsor = normalizeId(sponsor.who);
116 }
125 }
@@ -129,6 +138,7 @@
129 keysSet,
138 keysSet,
130 life,
139 life,
131 rift,
140 rift,
141+ spawnedCount,
132 };
142 };
133 }
143 }
134</script>
144</script>
@@ -281,7 +291,7 @@
281 </div>
291 </div>
282 {#if canSpawnPoints}
292 {#if canSpawnPoints}
283 <div>
293 <div>
284− <h3 class="text-lg">Spawned Points</h3>
294+ <h3 class="text-lg">Spawned Points: {pointInfo.spawnedCount || ''}</h3>
285 <span class="text-green-600">// TODO</span>
295 <span class="text-green-600">// TODO</span>
286 </div>
296 </div>
287 {/if}
297 {/if}