view codeDoc/input/inputIDs.txt @ 17:5f90774ea1ef

Applied the GNU GPL v2 to mde. committer: Diggory Hardy <diggory.hardy@gmail.com>
author Diggory Hardy <diggory.hardy@gmail.com>
date Sat, 15 Mar 2008 15:14:25 +0000
parents 4608be19ebe2
children 611f7b9063c6
line wrap: on
line source

Part of mde: a Modular D game-oriented Engine
Copyright © 2007-2008 Diggory Hardy

This program is free software; you can redistribute it and/or modify it under the terms of
the GNU General Public License, version 2, as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */


Event input status and callbacks are differentiated via IDs of type Input.inputID (currently uint).

Multi-user support requiers some way to make these specific to particular users; this is intended to be implemented via each user having their own Input class object; user-common callbacks are added by each user's class, thus enabling these to have extra user-specific functionality added later. Thus inputIDs don't need to contain a user ID.

4 bytes are available; of this the lowest 4 bits specifies which part of the engine uses these IDs, the rest is available for the engine part to use as it wants. The reason the lowest 4 bits are used for the engine part is so that if the inputID type is changed to a different sized integer, these 4 bits remain at the end of the block (i.e. the IDs available for the subsystem are still in one block).

Bit:	31		   4  3		0
	[ engine subsystem ]  [subsystem]


Subsystem values:
0	Direct engine commands:
		Main commands handled by mde.mde (may be moved), e.g. direct quit
1	GUI/User interface:
		Interface commands, including quit dialog box
2	Physics system:
		Direct control of thrusters, etc (control also possible via scripts)
3	Scripting system:
		Indirect control of thrusters, etc. from physics objects
		Other game-world interaction & scripting uses
4-F	Unassigned


This is not enforced by the engine (except perhaps for scripts?), but simply followed.



Subsystem 0:
xx_xx_xx_00	Quitting:
00_00_00_00		End main loop normally
xx_xx_xx_E0	Debug dumps/commands
xx_xx_xx_F0	Test events




For stream functions, codes are used as follows. Only the last (lowest) two bytes are used; of this the highest 4 bits categorise the rough type of the stream function, and the next 4 bits subdivide this. The lowest byte has no meaning but is just a number.

Categorisation:

1*_**	Output as event
2*_**	Adjustments, keeping same output type
3*_**	Adjustments with a different output type
F*_**	Debug types
    *
2X_**	Adjustments:
	OR'd flags for X:
	1	uses timers
	2	uses other events from same button/axis/etc.
	4	uses other events from different button/axis/etc.
	8	no output, only sets values for use by other adjusters
    *
3X_**	Adjustments with different output types (e.g. axis -> button):
	OR'd flags as for 2X_**

F*_**	Debug outputs:
	F0_00	No output, doesn't do anything
	F1_**	Logs output, passing event on

Actual codes, with config values used:

1000	Standard output functions
		Use 1 config value for output ID
2000	Reverse value (axes only)
		No config values