From da3599c2ca1e27a3f12aa1168dec1a1c577af477 Mon Sep 17 00:00:00 2001 From: Defent Date: Sat, 29 Aug 2015 03:58:25 +0200 Subject: [PATCH] Added an FSM This one handles the loop for cleanup, mission check and select mission. --- @ExileServer/addons/a3_dms/FSM/missions.fsm | 221 ++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 @ExileServer/addons/a3_dms/FSM/missions.fsm diff --git a/@ExileServer/addons/a3_dms/FSM/missions.fsm b/@ExileServer/addons/a3_dms/FSM/missions.fsm new file mode 100644 index 0000000..4735318 --- /dev/null +++ b/@ExileServer/addons/a3_dms/FSM/missions.fsm @@ -0,0 +1,221 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"",7,210,821.012817,321.000000,829.012817,329.000000,0.000000,""}; +item1[] = {"INIT",0,250,516.749146,-106.908607,606.749146,-56.908607,0.000000,"INIT"}; +item2[] = {"true",8,218,775.000000,25.000000,875.000000,75.000000,0.000000,"true"}; +item3[] = {"Waiting",2,250,775.000000,100.000000,875.000000,150.000000,0.000000,"Waiting"}; +item4[] = {"",7,210,596.000000,321.000000,604.000000,329.000000,0.000000,""}; +item5[] = {"___min_loop_2",4,218,625.012756,175.000000,725.012756,225.000000,1.000000,"1 min loop"}; +item6[] = {"Check_Mission_Running",2,250,624.311890,250.000000,724.311890,300.000000,0.000000,"Check Mission" \n "Running" \n "Status"}; +item7[] = {"",7,210,521.000000,321.000000,529.000000,329.000000,0.000000,""}; +item8[] = {"___min_loop_1",4,218,777.816040,173.598328,867.816040,223.598328,2.000000,"1 min loop"}; +item9[] = {"",7,210,521.000000,46.000000,529.000000,54.000000,0.000000,""}; +item10[] = {"",7,210,670.311951,321.000000,678.311951,329.000000,0.000000,""}; +item11[] = {"Mission_Cleanup",2,250,774.311890,250.000000,874.311890,300.000000,0.000000,"Mission Cleanup"}; +item12[] = {"",7,210,669.887329,234.306717,677.887329,242.306702,0.000000,""}; +item13[] = {"INITIALIZE",4,218,655.694763,-107.164581,745.694763,-57.164581,0.000000,"INITIALIZE"}; +item14[] = {"PREPARE",2,250,780.348511,-108.565193,870.348511,-58.565193,0.000000,"PREPARE"}; +item15[] = {"___Min_loop",4,218,914.967773,173.130890,1004.967773,223.130890,3.000000,"1 Min loop"}; +item16[] = {"Select_Mission",2,250,915.668457,249.519714,1005.668518,299.519714,0.000000,"Select Mission"}; +item17[] = {"",7,210,956.270142,321.086121,964.270142,329.086121,0.000000,""}; +link0[] = {0,10}; +link1[] = {1,13}; +link2[] = {2,3}; +link3[] = {3,5}; +link4[] = {3,8}; +link5[] = {3,15}; +link6[] = {4,7}; +link7[] = {5,12}; +link8[] = {6,10}; +link9[] = {7,9}; +link10[] = {8,11}; +link11[] = {9,2}; +link12[] = {10,4}; +link13[] = {11,0}; +link14[] = {12,6}; +link15[] = {13,14}; +link16[] = {14,2}; +link17[] = {15,16}; +link18[] = {16,17}; +link19[] = {17,0}; +globals[] = {0.000000,0,0,0,0,640,480,2,451,6316128,1,326.983643,1179.875732,440.842163,-196.198654,1217,909,1}; +window[] = {2,-1,-1,-1,-1,903,208,1502,169,3,1235}; +*//*%FSM*/ +class FSM +{ + fsmName = "dms_main"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + itemno = 1; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class INITIALIZE + { + itemno = 13; + priority = 0.000000; + to="PREPARE"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isnil ""bis_fnc_init"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Waiting + { + name = "Waiting"; + itemno = 3; + init = /*%FSM*/"// Waiting for next task to proceed with."/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class ___Min_loop + { + itemno = 15; + priority = 3.000000; + to="Select_Mission"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _selectMission) > 60)"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class ___min_loop_1 + { + itemno = 8; + priority = 2.000000; + to="Mission_Cleanup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _cleanupTime) > 60)"/*%FSM*/; + action=/*%FSM*/"_cleanupTime = time;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class ___min_loop_2 + { + itemno = 5; + priority = 1.000000; + to="Check_Mission_Running"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _missionStatusCheck) > 60)"/*%FSM*/; + action=/*%FSM*/"_missionStatusCheck = time;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Mission_Running + { + name = "Check_Mission_Running"; + itemno = 6; + init = /*%FSM*/"call DMS_MissionStatusCheck;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + itemno = 2; + priority = 0.000000; + to="Waiting"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Mission_Cleanup + { + name = "Mission_Cleanup"; + itemno = 11; + init = /*%FSM*/"call DMS_CleanUpManager;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + itemno = 2; + priority = 0.000000; + to="Waiting"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class PREPARE + { + name = "PREPARE"; + itemno = 14; + init = /*%FSM*/"private [""_missionStatusCheck"",""_cleanupTime"",""_selectMission""];" \n + "diag_log (""DMS :: Initializing FSM mission script"");" \n + "" \n + "_missionStatusCheck = diag_tickTime;" \n + "_cleanupTime = diag_tickTime;" \n + "_selectMission = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + itemno = 2; + priority = 0.000000; + to="Waiting"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Mission + { + name = "Select_Mission"; + itemno = 16; + init = /*%FSM*/"call DMS_selectMission;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + itemno = 2; + priority = 0.000000; + to="Waiting"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + }; +}; +/*%FSM*/ \ No newline at end of file