VDEngine (DirectX, C++, Win32)
by Varkalas D`Lonovan
(since December 2008)



TODO List
~~~~~~~~~

0xFFFFFFFF - White as transparent color
0xFF000000 - Black as transparent color
0x00FFFFFF - Black takes over white

* Map Editor:  - we have a list of NPC's to add to the map, what about
                 basic objects?  We could create an NPC for that, and
                 set it to be a static object, with 0 dialogue.... *ponders*
* Direct3D - probably change AddSprite to AddNPCSprite, AddPlayerSprite, and
             AddTileSprite... and remove isStatic and isNPC from VDSprite constructor
* add NPC animation
* if we add NPC's via NPC Editor, make sure we re-LoadNPCs() for Map Editor to use
* add movementSpeed to NPC Editor
* implement dialogue interaction
* change to unicode
* go through header files functions/cpp functions and order them
* organize Resources.h
* come up with a system for stats/attributes/calculation/damage/etc./etc.
* optimize loops
* set it up so that no matter what resolution we use, the sprites stay the
  same size
* clear out TODO's
* Creature Editor
* Item Editor
* implement and add sound effects
* implement and add music (and create music!)
* Game Options (FINAL STEP)
* OpenGL (optional)
* find out if using IDirect3DTexture9 is better than ID3DXSprite



*************
* Main Loop *
*************

(wiki)
check for user input
run AI
move enemies
resolve collisions
draw graphics
play sounds

(one version)
Get elapsed time
Handle lost/reset graphics devices
Get player input
Perform A.I. and game logic
Handle sound
Render
Synchronize display

**************
* Data Types *
**************

		signed						unsigned			size
char	-128 to 127					0 to 255			1 byte
short	-32768 to 32767				0 to 65535			2 bytes
int		-2147483648 to 2147483647	0 to 4294967295		4 bytes
long	-2147483648 to 2147483647	0 to 4294967295		4 bytes

**********************
* Important Keywords *
**********************

private:	accessed only by that class
public:		accessed by all code
protected:	accessed by that class and its subclasses
inline:		calls to an inline function will be replaced with the actual code (thus making it faster, but taking up more space)
virtual:	used to denote polymorphism (use on destructors with classes that have subclasses!! otherwise, subclass's destructors won't get called)

class A, class B : A
both have functions X
if function X is called from a B object, it still uses A's function X
unless!  we have class A make it a virtual X

*********************
* Memory Management *
*********************

What's the difference in speed and memory allocation (RAM, hard disk, etc.)
with the following two instances:

1.  Creature aCreature;
2.  Creature *aCreature = new Creature();

1.  An instance
2.  This is allocated, uses constructor/destructor, and needs to be deallocated