Skip to content

Commit

Permalink
sorry everything is broken
Browse files Browse the repository at this point in the history
  • Loading branch information
goldbuick committed May 6, 2024
1 parent 1aa0b7d commit c796357
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 14 deletions.
40 changes: 30 additions & 10 deletions zss/device/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ without having to include device code
*/

import { INPUT } from 'zss/gadget/data/types'
import { GADGET_STATE, INPUT } from 'zss/gadget/data/types'
import { hub } from 'zss/hub'
import { BOOK } from 'zss/memory/book'

Expand All @@ -14,19 +14,28 @@ export function api_error(sender: string, message: string, player: string) {
return tape_error(sender, [message, player])
}

export function tape_log(sender: string, ...message: any[]) {
hub.emit('tape:log', sender, message)
return true
export function register_reboot(sender: string, player: string) {
hub.emit('register:reboot', sender, undefined, player)
}

// internal only, use api_error
function tape_error(sender: string, ...message: any[]) {
hub.emit('tape:error', sender, message)
return false
export function gadgetclient_reset(
sender: string,
gadgetstate: GADGET_STATE,
player: string,
) {
hub.emit('gadgetclient:reset', sender, gadgetstate, player)
}

export function register_reboot(sender: string, player: string) {
hub.emit('register:reboot', sender, undefined, player)
export function gadgetclient_patch(sender: string, json: any, player: string) {
hub.emit('gadgetclient:patch', sender, json, player)
}

export function gadgetserver_desync(sender: string, player: string) {
hub.emit('gadgetserver:desync', sender, undefined, player)
}

export function gadgetserver_clearscroll(sender: string, player: string) {
hub.emit('gadgetserver:clearscroll', sender, undefined, player)
}

export function register_read(sender: string, name: string, player: string) {
Expand All @@ -42,6 +51,17 @@ export function register_write(
hub.emit('register:write', sender, [name, value], player)
}

export function tape_log(sender: string, ...message: any[]) {
hub.emit('tape:log', sender, message)
return true
}

// internal only, use api_error
function tape_error(sender: string, ...message: any[]) {
hub.emit('tape:error', sender, message)
return false
}

export function vm_mem(sender: string, book: BOOK, player: string) {
hub.emit('vm:mem', sender, book, player)
}
Expand Down
2 changes: 1 addition & 1 deletion zss/device/gadgetclient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ const gadgetclientdevice = createdevice(
message,
'desync',
undefined,
syncstate.state.player,
message.player,
)
}
}
Expand Down
6 changes: 4 additions & 2 deletions zss/device/gadgetserver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import {
import { GADGET_STATE } from 'zss/gadget/data/types'
import { memoryreadgadgetlayers } from 'zss/memory'

import { gadgetclient_patch, gadgetclient_reset } from './api'

// tracking gadget state for individual players
const syncstate: Record<string, GADGET_STATE> = {}

Expand All @@ -25,14 +27,14 @@ const gadgetserverdevice = createdevice('gadgetserver', ['tock'], (message) => {
const patch = compare(syncstate[player] ?? {}, shared)
if (patch.length) {
syncstate[player] = deepClone(shared)
gadgetserverdevice.emit('gadgetclient:patch', patch, player)
gadgetclient_patch(gadgetserverdevice.name(), patch, player)
}
})
break
case 'desync':
if (message.player) {
const state = gadgetstate(message.player)
gadgetserverdevice.emit('gadgetclient:reset', state, message.player)
gadgetclient_reset(gadgetserverdevice.name(), state, message.player)
}
break
case 'clearscroll':
Expand Down
3 changes: 2 additions & 1 deletion zss/gadget/components/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { useThree } from '@react-three/fiber'
import { deepClone, _areEquals } from 'fast-json-patch'
import React, { useState } from 'react'
import { gadgetserver_clearscroll } from 'zss/device/api'
import { hub } from 'zss/hub'
import { clamp } from 'zss/mapping/number'

Expand Down Expand Up @@ -220,7 +221,7 @@ export function Layout({ player, layers, layout }: LayoutProps) {
},
sendclose() {
// send a message to trigger the close
hub.emit('gadgetserver:clearscroll', 'gadget', undefined, player)
gadgetserver_clearscroll('gadget', player)
},
didclose() {
// clear scroll state
Expand Down

0 comments on commit c796357

Please sign in to comment.