# flightgear developer environments simulator (beta) # ValKmjolnir 2022 use std.runtime; use std.coroutine; use std.os; println("-------------------------------------------------------------"); println(" FlightGear simulated-env for developers project, since 2019"); println(" Developed by:"); println(" Sidi762 (FGPRC-0762)"); println(" ValKmjolnir (FGPRC-0818)"); println("-------------------------------------------------------------"); println(" See help using command line argument: --fg-env-help"); println("-------------------------------------------------------------"); var fg_env_cli={ "--fg-env-help":{ info:"get help", trigger:0, f:func { if (me.trigger) return; println("-------------------------------------------------------------"); println(" Help:"); foreach(var i;keys(fg_env_cli)) println(" ",i,": ",fg_env_cli[i].info); println("-------------------------------------------------------------"); me.trigger=1; } }, "--fg-env-debug":{ info:"get property tree structure", trigger:0, f:func { if (me.trigger) return; props.globals.debug(); me.trigger=1; } }, "--fg-env-mktmtest":{ info:"test maketimer", trigger:0, f:func { if (me.trigger) return; maketimer_multi_coroutine_test(32); me.trigger=1; } } }; println("[\e[32m fg_env \e[0m] [",os.time(),"] init begin"); println("[\e[32m maketimer \e[0m] [",os.time(),"] init tasks"); println("[\e[32m maketimer \e[0m] [",os.time(),"] init events"); var fg_globals={ task:{}, event:{} }; println("[\e[32m maketimer \e[0m] [",os.time(),"] new func add_event(name,interval,function)"); var add_event = func(name,interval,function) { fg_globals.event[name]=coroutine.create(func { var timestamp=maketimestamp(); timestamp.stamp(); while (timestamp.elapsedMSec()0) { if (contains(tmp.val,path[i]~'['~index~']')) return tmp.val[path[i]~'['~index~']']; else return tmp.val[path[i]]; } return tmp; } }; println("[\e[32m props \e[0m] [",os.time(),"] init props.Node"); props.Node={ new:func(values=nil) { var res={ parents:fg_env_props_node_traits, val:{}, type:'GHOST', parent:nil }; if (typeof(values)=="hash") res.val=values; return res; }, addChild:func(name) { if (!contains(me.val,name)) { me.val[name]=props.Node.new(); me.val[name].parent=me; return 1; } return 0; }, addChildren:func(name,cnt=0) { for (var i=0;i