From 919ea92030b72614338e450188d28f29f0d52b58 Mon Sep 17 00:00:00 2001 From: Valmo Trindade Date: Fri, 26 Jul 2024 03:01:37 -0300 Subject: [PATCH] added putGeoObject method to DLL --- addons/main/functions/fn_init.sqf | 26 +++++++++++++----- extensions/armatak/service.go | 44 ++++++++++++++++++++++++++++--- 2 files changed, 59 insertions(+), 11 deletions(-) diff --git a/addons/main/functions/fn_init.sqf b/addons/main/functions/fn_init.sqf index 223f82c..1be8409 100644 --- a/addons/main/functions/fn_init.sqf +++ b/addons/main/functions/fn_init.sqf @@ -1,9 +1,21 @@ -// 1. Create FreeTAKServer instance -// .... -if (!isServer) exitWith {}; +if ((!isServer) && (player != player)) then { + waitUntil { + player == player + }; +}; -private _armatak_fts_server_url = "armatak" callExtension ["init",[]]; +if (isDedicated) exitWith {}; -if (!_armatak_fts_server_url) exitWith {}; - -missionNamespace setVariable ["armatak_fts_server_url", _armatak_fts_server_url]; +if (player != player) then { + waitUntil { + player == player + }; +}; + +{ + [{if (_x getVariable "_atak_uid" == "") then { + [_x] call armatak_fnc_postGeoObject; + } else { + [_x] call armatak_fnc_putGeoObject; + }},0,[]] call CBA_fnc_addPerFrameHandler; +} forEach playableUnits; diff --git a/extensions/armatak/service.go b/extensions/armatak/service.go index ae3f5f8..5823072 100644 --- a/extensions/armatak/service.go +++ b/extensions/armatak/service.go @@ -1,6 +1,8 @@ package main -import "strconv" +import ( + "strconv" +) func armatak_service_ManageAPI_getHelp() (string, error) { return getRequest("manageAPI/getHelp") // ERROR - returning unsuported on 2.2 FTS (API is returning this, not my fault) @@ -24,7 +26,7 @@ func armatak_service_ManageGeoObject_postGeoObject(args []string) (string, error bearing, bearingError := strconv.ParseFloat(args[4], 32) if bearingError != nil { - return "", bearingError + bearing = 0 } payload := GeoObject{ @@ -38,10 +40,44 @@ func armatak_service_ManageGeoObject_postGeoObject(args []string) (string, error Timeout: 600, } - return postRequest("http://localhost:3000/ManageGeoObject/postGeoObject", payload) + return postRequest(args[7]+"/ManageGeoObject/postGeoObject", payload, args[8]) } -func armatak_service_ManageGeoObject_putGeoObject() {} +func armatak_service_ManageGeoObject_putGeoObject(args []string) (string, error) { + sanitazeArgs(args) + + latitude, latitudeError := strconv.ParseFloat(args[1], 32) + + if latitudeError != nil { + return "", latitudeError + } + + longitude, longitudeError := strconv.ParseFloat(args[2], 32) + + if longitudeError != nil { + return "", longitudeError + } + + bearing, bearingError := strconv.ParseFloat(args[4], 32) + + if bearingError != nil { + bearing = 0 + } + + payload := GeoObject{ + UID: args[0], + Longitude: longitude, + Latitude: latitude, + Attitude: args[3], + Bearing: int(bearing), + GeoObject: args[5], + How: "nonCoT", + Name: args[6], + Timeout: 600, + } + + return putRequest(args[7]+"/ManageGeoObject/putGeoObject", payload, args[8]) +} func armatak_service_ManageGeoObject_getGeoObject() {}