#pragma once #include #include "../Util/ArrayWithLength.h" // 4J Jev, just thought it would be easier this way. #define ArrayCopyFunctionDeclaration(x) \ static void arraycopy(arrayWithLength src, unsigned int srcPos, \ arrayWithLength* dst, unsigned int dstPos, \ unsigned int length); #define ArrayCopyFunctionDefinition(x) \ void System::arraycopy(arrayWithLength src, unsigned int srcPos, \ arrayWithLength* dst, unsigned int dstPos, \ unsigned int length) { \ arraycopy(src, srcPos, dst, dstPos, length); \ } class System { template static void arraycopy(arrayWithLength src, unsigned int srcPos, arrayWithLength* dst, unsigned int dstPos, unsigned int length); public: ArrayCopyFunctionDeclaration(uint8_t) ArrayCopyFunctionDeclaration(Node*) ArrayCopyFunctionDeclaration(Biome*) ArrayCopyFunctionDeclaration(int) static int64_t nanoTime(); static int64_t currentTimeMillis(); static int64_t currentRealTimeMillis(); // 4J Added to get real-world time // for timestamps in saves static void ReverseUSHORT(unsigned short* pusVal); static void ReverseSHORT(short* psVal); static void ReverseULONG(unsigned long* pulVal); static void ReverseULONG(unsigned int* pulVal); static void ReverseINT(int* piVal); static void ReverseULONGLONG(int64_t* pullVal); static void ReverseWCHARA(wchar_t* pwch, int iLen); }; #define MAKE_FOURCC(ch0, ch1, ch2, ch3) \ (static_cast(static_cast(ch0)) | \ (static_cast(static_cast(ch1)) << 8) | \ (static_cast(static_cast(ch2)) << 16) | \ (static_cast(static_cast(ch3)) << 24))