CoordinationHelpers

Functions for multi-entity coordination and communication

coordination

Library Implementation

-- CoordinationHelpers.lua
-- Utilities for coordinating between entities and sending reports

local CoordinationHelpers = {}

-- Send progress report
function CoordinationHelpers.sendProgressReport(state, phase, status)
    local reportData = {
        phase = phase,
        status = status,
        progress = state.currentSubtask and (state.currentSubtask / #state.subtasks) or 0,
        timestamp = vrf.getSimulationTime()
    }

    SendReport{report = reportData}
    return true
end

-- Send completion report
function CoordinationHelpers.sendCompletionReport(state, success, message)
    local reportData = {
        taskComplete = true,
        success = success,
        message = message,
        duration = vrf.getSimulationTime() - state.startTime,
        subtasksCompleted = state.currentSubtask or 0
    }

    SendReport{report = reportData}
    return true
end

-- Coordinate with other entities
function CoordinationHelpers.coordinateAction(action, params)
    -- Check if coordination is needed
    if not params.requiresCoordination then
        return true, "No coordination required"
    end

    -- Coordinate with FAC or command element
    CoordinateWithFAC{}

    -- Broadcast position for deconfliction
    BroadcastPosition{}

    return true, "Coordination complete"
end

-- Request support from other entities
function CoordinationHelpers.requestSupport(supportType, params)
    local supportMsg = {
        type = supportType,
        location = params.location,
        urgency = params.urgency or "ROUTINE",
        requestTime = vrf.getSimulationTime()
    }

    SendReport{report = supportMsg}
    return true, "Support requested"
end

-- Synchronize timing with other entities
function CoordinationHelpers.synchronizeTiming(state, syncPoint)
    if not state.syncPoints then
        state.syncPoints = {}
    end

    -- Mark this sync point as reached
    state.syncPoints[syncPoint] = vrf.getSimulationTime()

    -- In real implementation, would wait for other entities
    return true, "Sync point reached: " .. syncPoint
end

return CoordinationHelpers
2097 characters

Usage Example

-- Usage example:
local CoordinationHelpers = require("CoordinationHelpers")

function tick()
    if taskState.current == "READY" then
        -- Send initial progress report
        CoordinationHelpers.sendProgressReport(taskState, "READY", "Starting execution")
        taskState.current = "EXECUTING"
    end

    if taskState.current == "EXECUTING" then
        -- Coordinate before critical action
        local success, msg = CoordinationHelpers.coordinateAction("engage", {
            requiresCoordination = true
        })

        -- Request support if needed
        if needsSupport then
            CoordinationHelpers.requestSupport("CAS", {
                location = targetLocation,
                urgency = "IMMEDIATE"
            })
        end
    end

    if taskState.current == "COMPLETE" then
        -- Send completion report
        CoordinationHelpers.sendCompletionReport(taskState, true, "Mission accomplished")
        return "COMPLETE", "Task completed"
    end

    return "CONTINUE", "Executing"
end

Quick Reference

Import Statement

local CoordinationHelpers = require("CoordinationHelpers")

Category

coordination

Key Features

  • Send progress and completion reports
  • Coordinate actions with other entities
  • Request support from friendly forces
  • Synchronize timing across entities