ludic migrate state packages <every example program> packages/ludic.lab/example/plate.ludic 1804 vars into 126 states, 64 into lets; 23498 edits in 460 files Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
51 lines
2.1 KiB
Text
51 lines
2.1 KiB
Text
# ports.ludic - the config, and what the ports answer when the game leaves them unbound
|
|
export function telemetry_config(telemetry_st: mut TelemetryState, c: TelemetryConfig) -> void { telemetry_st.telemetry__cfg = c }
|
|
|
|
function telemetry__conf(telemetry_st: mut TelemetryState) -> TelemetryConfig {
|
|
if telemetry_st.telemetry__cfg == null { telemetry_st.telemetry__cfg = new TelemetryConfig }
|
|
return telemetry_st.telemetry__cfg
|
|
}
|
|
|
|
function telemetry__yes() -> bool { return true }
|
|
function telemetry__wall_ms(telemetry_st: TelemetryState) -> int { return (Time.now() - telemetry_st.telemetry__t0) * 1000 }
|
|
function telemetry__wall_stamp() -> string { return DateTime.format(Time.now(), "YYYY-MM-DDTHH:mm:ssZ") }
|
|
|
|
function telemetry__can_send(telemetry_st: mut TelemetryState) -> bool {
|
|
let c = telemetry__conf(telemetry_st)
|
|
if len(c.host) == 0 or len(c.key) == 0 { return false }
|
|
return TelemetryWorld.can_send()
|
|
}
|
|
|
|
function telemetry__enabled() -> bool { return TelemetryWorld.enabled() }
|
|
function telemetry__now() -> int { return TelemetryWorld.now_ms() }
|
|
function telemetry__stamp() -> string { return TelemetryWorld.stamp() }
|
|
|
|
function telemetry__http_send(url: string, body: string) -> int {
|
|
let h = Http.open("POST", url)
|
|
if h < 0 { return h }
|
|
Http.set(h, "Content-Type", "application/json")
|
|
Http.body(h, body)
|
|
Http.send(h)
|
|
return h
|
|
}
|
|
|
|
function telemetry__http_poll(h: int) -> int {
|
|
let st = Http.poll(h)
|
|
if st < 0 { return -1 }
|
|
var ok = 0
|
|
if st > 0 and Http.ok(h) { ok = 1 }
|
|
Http.free(h)
|
|
return ok
|
|
}
|
|
|
|
function telemetry__http_drop(h: int) -> void { Http.free(h) }
|
|
|
|
function telemetry__send(telemetry_st: mut TelemetryState, body: string) -> int { return TelemetryTransport.send(telemetry__conf(telemetry_st).host + telemetry__conf(telemetry_st).path, body) }
|
|
function telemetry__poll(h: int) -> int { return TelemetryTransport.poll(h) }
|
|
|
|
# a request abandoned (the player said no)
|
|
function telemetry__drop_request(telemetry_st: mut TelemetryState) -> void {
|
|
if telemetry_st.telemetry__h < 0 { return }
|
|
TelemetryTransport.drop(telemetry_st.telemetry__h)
|
|
telemetry_st.telemetry__h = -1
|
|
}
|