| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534 | /** * \defgroup System System * @{ *//**\brief Returns world time	\param[out] hour \p int Hour	\param[out] minute \p int Minute	\param[out] second \p int Second	\return \p void	@code		int hour = 0;		int minute = 0;		int second = 0;		GetHourMinuteSecondUTC(hour, minute, second);		Print(hour);		Print(minute);		Print(second);		>> hour = 16		>> minute = 38		>> second = 7	@endcode*/proto void GetHourMinuteSecond(out int hour, out int minute, out int second);/**\brief Returns world date	\param[out] year \p int Year	\param[out] month \p int Month	\param[out] day \p int Day	\return \p void	@code		int year = 0;		int month = 0;		int day = 0;		GetYearMonthDay(year, month, day);		Print(year);		Print(month);		Print(day);		>> year = 2015		>> month = 3		>> day = 24	@endcode*/proto void GetYearMonthDay(out int year, out int month, out int day);/**\brief Returns UTC world time	\param[out] hour \p int Hour	\param[out] minute \p int Minute	\param[out] second \p int Second	\return \p void	@code		int hour = 0;		int minute = 0;		int second = 0;		GetHourMinuteSecondUTC(hour, minute, second);		Print(hour);		Print(minute);		Print(second);		>> hour = 15		>> minute = 38		>> second = 7	@endcode*/proto void GetHourMinuteSecondUTC(out int hour, out int minute, out int second);/**\brief Returns UTC world date	\param[out] year \p int Year	\param[out] month \p int Month	\param[out] day \p int Day	\return \p void	@code		int year = 0;		int month = 0;		int day = 0;		GetYearMonthDayUTC(year, month, day);		Print(year);		Print(month);		Print(day);		>> year = 2015		>> month = 3		>> day = 24	@endcode*/proto void GetYearMonthDayUTC(out int year, out int month, out int day);proto string GetProfileName();proto string GetMachineName();//! performance counter. Returns number of CPU ticks between 'prev' and 'now'proto native int TickCount(int prev);/**\brief Switches memory validation (huge slowdown! Use with care only for certain section of code!)	\param enable \p bool Enable	\return \p void	@code		???	@endcode*/proto native void MemoryValidation(bool enable);/**\brief Returns command line argument	\param name of a command line argument	\param val \p string value of the param or empty string if the param hasn't been found	\return True if param is present, False if hasn't been found	@code		string param;		GetCLIParam("world", param); // return a value when program executed with param -world something	@endcode*/proto bool GetCLIParam(string param, out string val);		/**\brief Returns if command line argument is present	\param name of a command line argument	\return True if param is present, False if hasn't been found	@code		if (IsCLIParam("verbose")) // Prints "something" when program executed with param -verbose		{ 			Print("something");		}	@endcode*/proto native bool IsCLIParam(string param);			#ifdef ENF_DONE//! developer tool - start video grabberproto native void StartVideo(string name);//! developer tool - stop video grabberproto native void StopVideo();#endif/** * \defgroup Keyboard Keyboard input API * @{ */enum KeyCode{	KC_ESCAPE,	KC_1,	KC_2,	KC_3,	KC_4,	KC_5,	KC_6,	KC_7,	KC_8,	KC_9,	KC_0,	KC_MINUS,   ///< - on main keyboard 	KC_EQUALS,	KC_BACK,    ///< backspace 	KC_TAB,	KC_Q,	KC_W,	KC_E,	KC_R,	KC_T,	KC_Y,	KC_U,	KC_I,	KC_O,	KC_P,	KC_LBRACKET,	KC_RBRACKET,	KC_RETURN,   ///< Enter on main keyboard 	KC_LCONTROL,	KC_A,	KC_S,	KC_D,	KC_F,	KC_G,	KC_H,	KC_J,	KC_K,	KC_L,	KC_SEMICOLON,	KC_APOSTROPHE,	KC_GRAVE,    ///< accent grave 	KC_LSHIFT,	KC_BACKSLASH,	KC_Z,	KC_X,	KC_C,	KC_V,	KC_B,	KC_N,	KC_M,	KC_COMMA,	KC_PERIOD,   ///< . on main keyboard 	KC_SLASH,    ///< / on main keyboard 	KC_RSHIFT,	KC_MULTIPLY,    ///< * on numeric keypad 	KC_LMENU,    ///< left Alt 	KC_SPACE,	KC_CAPITAL,	KC_F1,	KC_F2,	KC_F3,	KC_F4,	KC_F5,	KC_F6,	KC_F7,	KC_F8,	KC_F9,	KC_F10,	KC_NUMLOCK,	KC_SCROLL,    ///< Scroll Lock 	KC_NUMPAD7,	KC_NUMPAD8,	KC_NUMPAD9,	KC_SUBTRACT,    ///< - on numeric keypad 	KC_NUMPAD4,	KC_NUMPAD5,	KC_NUMPAD6,	KC_ADD,    ///< + on numeric keypad 	KC_NUMPAD1,	KC_NUMPAD2,	KC_NUMPAD3,	KC_NUMPAD0,	KC_DECIMAL,   ///< . on numeric keypad 	KC_OEM_102,    ///< < > | on UK/Germany keyboards 	KC_F11,	KC_F12,	KC_NUMPADEQUALS,    ///< = on numeric keypad (NEC PC98) 	KC_PREVTRACK,    ///< Previous Track (DIKC_CIRCUMFLEX on Japanese keyboard) 	KC_AT,    ///<                     (NEC PC98) 	KC_COLON,    ///<                     (NEC PC98) 	KC_UNDERLINE,    ///<                     (NEC PC98) 	KC_STOP,    ///<                     (NEC PC98) 	KC_AX,    ///<                     (Japan AX) 	KC_UNLABELED,    ///<                        (J3100) 	KC_NEXTTRACK,    ///< Next Track 	KC_NUMPADENTER,    ///< Enter on numeric keypad 	KC_RCONTROL,	KC_MUTE,    ///< Mute 	KC_CALCULATOR,    ///< Calculator 	KC_PLAYPAUSE,    ///< Play / Pause 	KC_MEDIASTOP,    ///< Media Stop 	KC_VOLUMEDOWN,    ///< Volume - 	KC_VOLUMEUP,    ///< Volume + 	KC_WEBHOME,    ///< Web home 	KC_NUMPADCOMMA,    ///< , on numeric keypad (NEC PC98) 	KC_DIVIDE,    ///< / on numeric keypad 	KC_SYSRQ,	KC_RMENU,    ///< right Alt 	KC_PAUSE,    ///< Pause 	KC_HOME,    ///< Home on arrow keypad 	KC_UP,    ///< UpArrow on arrow keypad 	KC_PRIOR,    ///< PgUp on arrow keypad 	KC_LEFT,    ///< LeftArrow on arrow keypad 	KC_RIGHT,    ///< RightArrow on arrow keypad 	KC_END,    ///< End on arrow keypad 	KC_DOWN,    ///< DownArrow on arrow keypad 	KC_NEXT,    ///< PgDn on arrow keypad 	KC_INSERT,    ///< Insert on arrow keypad 	KC_DELETE,    ///< Delete on arrow keypad 	KC_LWIN,    ///< Left Windows key 	KC_RWIN,    ///< Right Windows key 	KC_APPS,    ///< AppMenu key 	KC_POWER,    ///< System Power 	KC_SLEEP,    ///< System Sleep 	KC_WAKE,    ///< System Wake 	KC_MEDIASELECT   ///< Media Select };/*!Gets key state\param key	Key code\returns 0 when not pressed, 15. bit set when pressed, 0.-14. bit pressed count */proto native int KeyState(KeyCode key);/*!Clears the key state.Call this function if you want to overcome autorepeating in reporting key state. If called, the KeyState returns pressed only after the key is released and pressed again.*/proto native void ClearKey(KeyCode key);/** @}*///! returns index of defined key in InputDevice by its name//proto native int GetDefKey(string name);//proto native int DefKeyState(int defkey, bool clear);/** * \defgroup Mouse Mouse API * @{ */enum MouseState{	LEFT,	RIGHT,	MIDDLE,	X,	Y,	WHEEL};//const int MB_PRESSED_MASK/*!Returns state of mouse button. It's combination of number of release/pressed edges and mask MB_PRESSED_MASKthat is set when button is pressed.If you want just to check if button is pressed, use this: if(GetMouseState(MouseState.LEFT) & MB_PRESSED_MASK)) Print("left button pressed");*/	proto native int GetMouseState(MouseState index);// Gets current mouse positionproto void GetMousePos(out int x, out int y);// Gets current screen size (resolution)proto void GetScreenSize(out int x, out int y);/** @}*//** * \defgroup Gamepad API * @{ */enum GamepadButton{	BUTTON_NONE,	MENU,	VIEW,	A,	B,	X,	Y,	PAD_UP,	PAD_DOWN,	PAD_LEFT,	PAD_RIGHT,	SHOULDER_LEFT,	SHOULDER_RIGHT,	THUMB_LEFT,	THUMB_RIGHT};enum GamepadAxis{	LEFT_THUMB_HORIZONTAL,	LEFT_THUMB_VERTICAL,	RIGHT_THUMB_HORIZONTAL,	RIGHT_THUMB_VERTICAL,	LEFT_TRIGGER,	RIGHT_TRIGGER,};//! return if the button is pressed or notproto native int GetGamepadButton(GamepadButton button);//! return value in gamepad axis <-1000; 1000>proto native float GetGamepadAxis(GamepadAxis axis);/** @}*///----------------------------------------------/** * \defgroup File FileIO API * @{ */enum FileMode{	READ,	WRITE,	APPEND};	typedef int[] ParseHandle;typedef int[] FileHandle;proto native ParseHandle BeginParse(string filename);proto int ParseLine(ParseHandle tp, int num, string tokens[]);proto native void EndParse(ParseHandle file);//!Check existence of fileproto bool FileExist(string name);/**\brief Opens File	@param name of a file to open, (you can use filesystem prefixes ('$profile','$saves','$mission'). For accessing profile dir use '$profile', e.g. '$profile:myfilename.txt')	@param mode constants FileMode.WRITE, FileMode.READ or FileMode.APPEND flag can be used	\return file handle ID or 0 if fails	\n usage :	@code	FileHandle file = OpenFile("$profile:testiik.txt", FileMode.WRITE);	//FileHandle file = OpenFile("$profile:testiik.txt", FileMode.APPEND);	if (file != 0)	{		FPrintln(file, "line1");		FPrintln(file, "line2");		FPrintln(file, "line3");		CloseFile(file);	}	@endcode*/proto FileHandle		OpenFile(string name, FileMode mode);/**Reads raw data from file.\param param_array Receiving array for the data. Valid types are int[] or string\param length Length of data\returns number of read bytes*/proto int ReadFile(FileHandle file, void param_array, int length);/**\brief Close the File	@param file File handle ID of a opened file	\return void	\n usage :	@code	FileHandle file = OpenFile("$profile:testiik.txt", FileMode.WRITE);	if (file != 0)	{		FPrintln(file, "line1");		FPrintln(file, "line2");		FPrintln(file, "line3");		CloseFile(file);	}	@endcode*/proto void		CloseFile(FileHandle file);/**\brief Write to file	@param file File handle ID of a opened file	@param var Value to write	\return void	\n usage :	@code	FileHandle file = OpenFile("$profile:testiik.txt", FileMode.WRITE);	if (file != 0)	{		FPrint(file, "A");		FPrint(file, "B");		FPrint(file, "C");		CloseFile(file);	}	@endcode*/proto void		FPrint(FileHandle file, void var);/**\brief Write to file and add new line	@param file File handle ID of a opened file	@param var Value to write	\return void	\n usage :	@code	FileHandle file = OpenFile("$profile:testiik.txt", FileMode.WRITE);	if (file != 0)	{		FPrintln(file, "line1");		FPrintln(file, "line2");		FPrintln(file, "line3");		CloseFile(file);	}	@endcode*/proto void		FPrintln(FileHandle file, void var);/**\brief Get line from file, every next call of this function returns next line	@param file File handle ID of a opened file	@param var Value to write	\return int Count of chars or -1 if is not any for read (end of file is EMPTY line)	\n usage :	@code		FileHandle file_handle = OpenFile("$profile:testiik.txt", FileMode.READ);		string line_content;		while ( FGets( file_handle,  line_content ) > 0 )		{			Print(line_content);		}		CloseFile(file_handle);	@endcode*/proto int		FGets(FileHandle file, string var);typedef int[] FindFileHandle;enum FileAttr{	DIRECTORY, ///<File is directory	HIDDEN, ///<File is hidden	READONLY, ///<File is read-only	INVALID ///<Invalid file};enum FindFileFlags{	DIRECTORIES, ///<Looks for files in fs directories only.	ARCHIVES,	///<Looks for files in archive only. (.pak)	ALL ///<Looks in archives and fs directories.}proto FindFileHandle FindFile(string pattern, out string fileName, out FileAttr fileAttributes, FindFileFlags flags);proto bool FindNextFile(FindFileHandle handle, out string fileName, out FileAttr fileAttributes);proto native void CloseFindFile(FindFileHandle handle);//!Makes a directoryproto native bool MakeDirectory(string name);//!delete file. Works only on "$profile:" and "$saves:" locationsproto native bool DeleteFile(string name);//! copy file. destName must be "$profile:" or "$saves:" locationproto native bool CopyFile(string sourceName, string destName);/** @}*/ //@}
 |