You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.4 KiB
64 lines
2.4 KiB
#include <YDTrigger/ImportSaveLoadSystem.h>
|
|
#include <boost/preprocessor/slot/counter.hpp>
|
|
#include <boost/preprocessor/cat.hpp>
|
|
#include <boost/preprocessor/repetition.hpp>
|
|
#include <boost/preprocessor/tuple/elem.hpp>
|
|
#include <boost/preprocessor/iteration/local.hpp>
|
|
#include <boost/preprocessor/arithmetic/sub.hpp>
|
|
#include <boost/preprocessor/tuple/elem.hpp>
|
|
|
|
|
|
#include BOOST_PP_UPDATE_COUNTER()
|
|
|
|
#ifdef YDTimerPragmaSize
|
|
#undef YDTimerPragmaSize
|
|
#endif
|
|
#ifdef YDTimerPragmaTuple
|
|
#undef YDTimerPragmaTuple
|
|
#endif
|
|
#ifdef YDTimerBindHash
|
|
#undef YDTimerBindHash
|
|
#endif
|
|
#ifdef YDTimerReadHash
|
|
#undef YDTimerReadHash
|
|
#endif
|
|
#ifdef YDTimerBright
|
|
#undef YDTimerBright
|
|
#endif
|
|
#ifdef YDTimerStartEx
|
|
#undef YDTimerStartEx
|
|
#endif
|
|
|
|
#define YDTimerPragmaSize BOOST_PP_TUPLE_ELEM(3, 1, YDTimerBind)
|
|
#define YDTimerPragmaTuple BOOST_PP_TUPLE_ELEM(3, 2, YDTimerBind)
|
|
#define YDTimerBindHash(t, type, var) YDTriggerSet(type, YDTriggerAny2I(timer, t), StringHash(#var), var)
|
|
#define YDTimerReadHash(t, type, var) var = YDTriggerGet(type, YDTriggerAny2I(timer, t), StringHash(#var))
|
|
#define YDTimerBright BOOST_PP_CAT(YDTimerBright_, BOOST_PP_COUNTER)
|
|
#define YDTimerStartEx BOOST_PP_CAT(YDTimerStartEx_, BOOST_PP_COUNTER)
|
|
|
|
#ifndef YDTimerPragmaListHasType
|
|
#define YDTimerPragmaListHasType(z, n, data) BOOST_PP_TUPLE_ELEM(YDTimerPragmaSize, n, data) p ## n
|
|
#endif
|
|
|
|
#ifndef YDTimerPragmaList
|
|
#define YDTimerPragmaList(z, n, data) p ## n
|
|
#endif
|
|
|
|
function YDTimerBright takes nothing returns nothing
|
|
local timer t = GetExpiredTimer()
|
|
#define BOOST_PP_LOCAL_MACRO(n) local BOOST_PP_TUPLE_ELEM(YDTimerPragmaSize, n, YDTimerPragmaTuple) YDTimerReadHash(t, BOOST_PP_TUPLE_ELEM(YDTimerPragmaSize, n, YDTimerPragmaTuple), p ## n)
|
|
#define BOOST_PP_LOCAL_LIMITS (0, BOOST_PP_SUB(YDTimerPragmaSize,1))
|
|
#include BOOST_PP_LOCAL_ITERATE()
|
|
call BOOST_PP_TUPLE_ELEM(3, 0, YDTimerBind)(BOOST_PP_ENUM(YDTimerPragmaSize, YDTimerPragmaList, YDTimerPragmaTuple))
|
|
endfunction
|
|
|
|
function YDTimerStartEx takes timer t, real timeout, boolean periodic, BOOST_PP_ENUM(YDTimerPragmaSize, YDTimerPragmaListHasType, YDTimerPragmaTuple) returns nothing
|
|
#define BOOST_PP_LOCAL_MACRO(n) call YDTimerBindHash(t, BOOST_PP_TUPLE_ELEM(YDTimerPragmaSize, n, YDTimerPragmaTuple), p ## n)
|
|
#define BOOST_PP_LOCAL_LIMITS (0, BOOST_PP_SUB(YDTimerPragmaSize,1))
|
|
#include BOOST_PP_LOCAL_ITERATE()
|
|
call TimerStart(t, timeout, periodic, function YDTimerBright)
|
|
endfunction
|
|
|
|
#ifdef YDTimerBind
|
|
#undef YDTimerBind
|
|
#endif
|
|
|