3.2 - Drawing
Drawing is the act of putting a sprite on the screen. When the game draws directly to the screen it does it in a loop. Most of the time drawing directly to the screen in a single will result in the next frame drawing over it.
ModCS will run on loop things put in a globally defined
ModCS.Game.Draw() function. The difference between
ModCS.Game.Draw() is when they're called in-game.
ModCS.Game.Act() is ran before anything is drawn on the screen, therefore anything drawn in it will not appear because it will be 'overdrawn' by the things that draw after it. On the other hand
ModCS.Game.Draw() runs after everything has been drawn on the screen, and anything drawn on it will appear over everything drawn so far.
ModCS.Game.Draw() only runs during the main game loop.
As an example of drawing we will continue off the example number addition code from the previous page.
ModCS.PutNumber() will draw a number sprite of a given number to specific screen coordinates.
1 2 3 4 5 6 7 8 9 10 11 12 13
The two numbers after
number represent X and Y coordinates. For example if you wanted to draw the number in the center of the screen you would do
ModCS.PutNumber(number, 160, 120) (Please note that
ModCS.PutNumber() offsets the coordinates a little so it can contain up to 4 digit numbers. If you would like to experiment with exact coordinates you may use
3.2.1 - Surfaces
Surfaces are image data types which contain pixels of an image. They are used in-game to have sprites drawn from. For example the player sprites are contained in Surface with ID
16. Some Surfaces are simply loaded from a
.bmp image when the game launches (Surface
16 is taken from
data/MyChar.bmp). Others are more complicated, such as the Tileset Surface (Surface
2), which is used by the game to load the tileset
.bmp file specified in a Stage Table entry to, and from where any tiles are drawn from.
After Surfaces are created their sizes cannot be changed. Surfaces loaded from
.bmp files take their sizes from the
.bmp files they were created with. Other surfaces have to be created with specified sizes. This is why things such as per-Stage NPC Sheets (Surfaces
22) are limited to 320x240.
3.2.2 - Rects
Rects are a pair of X and Y coordinates which represent a part of a Surface. They are usually used for displaying different sprites from a Surface. You may create a Rect variable with
Rect variables contain the following values:
|X coordinate of the upper-left corner of the Rect.
|Y coordinate of the upper-left corner of the Rect.
|X coordinate of the down-right corner of the Rect.
|Y coordinate of the down-right corner of the Rect.
As an example we can try to get the Rect of the number 4 sprite from
The coordinates of the upper-left corner are 32, 56. The coordinates of the down-right corner are 40, 64. Therefore we may set our Example Rect variable to the Rect of the number 4 like this:
1 2 3 4 5 6
A cleaner way would be using
1 2 3
An even cleaner way would be creating the Rect variable by giving the
bottom values straight to
Rects can be drawn to the screen using
ModCS.Rect.Put(). For example, if we wanted to draw our example rect from earlier to the center of the screen we would do this:
1 2 3 4 5
26 is the ID of the Surface we will be drawing from (Surface
26 is the Surface to where
data/TextBox.bmp is loaded to).