Fixed some little errors with the drawing functions.
[luagame.git] / doc / class_object.html
blob2b5bf428318bebf79d1d1bd5ec29a214f7b81e9e
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6 <meta name="generator" content="AsciiDoc 8.2.1" />
7 <style type="text/css">
8 /* Debug borders */
9 p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
11 border: 1px solid red;
15 body {
16 margin: 1em 5% 1em 5%;
19 a {
20 color: blue;
21 text-decoration: underline;
23 a:visited {
24 color: fuchsia;
27 em {
28 font-style: italic;
31 strong {
32 font-weight: bold;
35 tt {
36 color: navy;
39 h1, h2, h3, h4, h5, h6 {
40 color: #527bbd;
41 font-family: sans-serif;
42 margin-top: 1.2em;
43 margin-bottom: 0.5em;
44 line-height: 1.3;
47 h1 {
48 border-bottom: 2px solid silver;
50 h2 {
51 border-bottom: 2px solid silver;
52 padding-top: 0.5em;
55 div.sectionbody {
56 font-family: serif;
57 margin-left: 0;
60 hr {
61 border: 1px solid silver;
64 p {
65 margin-top: 0.5em;
66 margin-bottom: 0.5em;
69 pre {
70 padding: 0;
71 margin: 0;
74 span#author {
75 color: #527bbd;
76 font-family: sans-serif;
77 font-weight: bold;
78 font-size: 1.1em;
80 span#email {
82 span#revision {
83 font-family: sans-serif;
86 div#footer {
87 font-family: sans-serif;
88 font-size: small;
89 border-top: 2px solid silver;
90 padding-top: 0.5em;
91 margin-top: 4.0em;
93 div#footer-text {
94 float: left;
95 padding-bottom: 0.5em;
97 div#footer-badges {
98 float: right;
99 padding-bottom: 0.5em;
102 div#preamble,
103 div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
104 div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
105 div.admonitionblock {
106 margin-right: 10%;
107 margin-top: 1.5em;
108 margin-bottom: 1.5em;
110 div.admonitionblock {
111 margin-top: 2.5em;
112 margin-bottom: 2.5em;
115 div.content { /* Block element content. */
116 padding: 0;
119 /* Block element titles. */
120 div.title, caption.title {
121 font-family: sans-serif;
122 font-weight: bold;
123 text-align: left;
124 margin-top: 1.0em;
125 margin-bottom: 0.5em;
127 div.title + * {
128 margin-top: 0;
131 td div.title:first-child {
132 margin-top: 0.0em;
134 div.content div.title:first-child {
135 margin-top: 0.0em;
137 div.content + div.title {
138 margin-top: 0.0em;
141 div.sidebarblock > div.content {
142 background: #ffffee;
143 border: 1px solid silver;
144 padding: 0.5em;
147 div.listingblock {
148 margin-right: 0%;
150 div.listingblock > div.content {
151 border: 1px solid silver;
152 background: #f4f4f4;
153 padding: 0.5em;
156 div.quoteblock > div.content {
157 padding-left: 2.0em;
160 div.attribution {
161 text-align: right;
163 div.verseblock + div.attribution {
164 text-align: left;
167 div.admonitionblock .icon {
168 vertical-align: top;
169 font-size: 1.1em;
170 font-weight: bold;
171 text-decoration: underline;
172 color: #527bbd;
173 padding-right: 0.5em;
175 div.admonitionblock td.content {
176 padding-left: 0.5em;
177 border-left: 2px solid silver;
180 div.exampleblock > div.content {
181 border-left: 2px solid silver;
182 padding: 0.5em;
185 div.verseblock div.content {
186 white-space: pre;
189 div.imageblock div.content { padding-left: 0; }
190 div.imageblock img { border: 1px solid silver; }
191 span.image img { border-style: none; }
193 dl {
194 margin-top: 0.8em;
195 margin-bottom: 0.8em;
197 dt {
198 margin-top: 0.5em;
199 margin-bottom: 0;
200 font-style: italic;
202 dd > *:first-child {
203 margin-top: 0;
206 ul, ol {
207 list-style-position: outside;
209 ol.olist2 {
210 list-style-type: lower-alpha;
213 div.tableblock > table {
214 border: 3px solid #527bbd;
216 thead {
217 font-family: sans-serif;
218 font-weight: bold;
220 tfoot {
221 font-weight: bold;
224 div.hlist {
225 margin-top: 0.8em;
226 margin-bottom: 0.8em;
228 div.hlist td {
229 padding-bottom: 5px;
231 td.hlist1 {
232 vertical-align: top;
233 font-style: italic;
234 padding-right: 0.8em;
236 td.hlist2 {
237 vertical-align: top;
240 @media print {
241 div#footer-badges { display: none; }
244 div#toctitle {
245 color: #527bbd;
246 font-family: sans-serif;
247 font-size: 1.1em;
248 font-weight: bold;
249 margin-top: 1.0em;
250 margin-bottom: 0.1em;
253 div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
254 margin-top: 0;
255 margin-bottom: 0;
257 div.toclevel2 {
258 margin-left: 2em;
259 font-size: 0.9em;
261 div.toclevel3 {
262 margin-left: 4em;
263 font-size: 0.9em;
265 div.toclevel4 {
266 margin-left: 6em;
267 font-size: 0.9em;
269 /* Workarounds for IE6's broken and incomplete CSS2. */
271 div.sidebar-content {
272 background: #ffffee;
273 border: 1px solid silver;
274 padding: 0.5em;
276 div.sidebar-title, div.image-title {
277 font-family: sans-serif;
278 font-weight: bold;
279 margin-top: 0.0em;
280 margin-bottom: 0.5em;
283 div.listingblock div.content {
284 border: 1px solid silver;
285 background: #f4f4f4;
286 padding: 0.5em;
289 div.quoteblock-content {
290 padding-left: 2.0em;
293 div.exampleblock-content {
294 border-left: 2px solid silver;
295 padding-left: 0.5em;
298 /* IE6 sets dynamically generated links as visited. */
299 div#toc a:visited { color: blue; }
300 </style>
301 <script type="text/javascript">
302 /*<![CDATA[*/
303 window.onload = function(){generateToc(2)}
304 /* Author: Mihai Bazon, September 2002
305 * http://students.infoiasi.ro/~mishoo
307 * Table Of Content generator
308 * Version: 0.4
310 * Feel free to use this script under the terms of the GNU General Public
311 * License, as long as you do not remove or alter this notice.
314 /* modified by Troy D. Hanson, September 2006. License: GPL */
315 /* modified by Stuart Rackham, October 2006. License: GPL */
317 function getText(el) {
318 var text = "";
319 for (var i = el.firstChild; i != null; i = i.nextSibling) {
320 if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
321 text += i.data;
322 else if (i.firstChild != null)
323 text += getText(i);
325 return text;
328 function TocEntry(el, text, toclevel) {
329 this.element = el;
330 this.text = text;
331 this.toclevel = toclevel;
334 function tocEntries(el, toclevels) {
335 var result = new Array;
336 var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');
337 // Function that scans the DOM tree for header elements (the DOM2
338 // nodeIterator API would be a better technique but not supported by all
339 // browsers).
340 var iterate = function (el) {
341 for (var i = el.firstChild; i != null; i = i.nextSibling) {
342 if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
343 var mo = re.exec(i.tagName)
344 if (mo)
345 result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
346 iterate(i);
350 iterate(el);
351 return result;
354 // This function does the work. toclevels = 1..4.
355 function generateToc(toclevels) {
356 var toc = document.getElementById("toc");
357 var entries = tocEntries(document.getElementsByTagName("body")[0], toclevels);
358 for (var i = 0; i < entries.length; ++i) {
359 var entry = entries[i];
360 if (entry.element.id == "")
361 entry.element.id = "toc" + i;
362 var a = document.createElement("a");
363 a.href = "#" + entry.element.id;
364 a.appendChild(document.createTextNode(entry.text));
365 var div = document.createElement("div");
366 div.appendChild(a);
367 div.className = "toclevel" + entry.toclevel;
368 toc.appendChild(div);
371 /*]]>*/
372 </script>
373 <title>Object Class Reference</title>
374 </head>
375 <body>
376 <div id="header">
377 <h1>Object Class Reference</h1>
378 <div id="toc">
379 <div id="toctitle">Table of Contents</div>
380 <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
381 </div>
382 </div>
383 <h2>1. Attributes</h2>
384 <div class="sectionbody">
385 <div class="tableblock">
386 <table rules="all"
387 frame="hsides"
388 cellspacing="0" cellpadding="4">
389 <col width="182" />
390 <col width="240" />
391 <thead>
392 <tr>
393 <th align="left">
394 Attribute
395 </th>
396 <th align="left">
397 Description
398 </th>
399 </tr>
400 </thead>
401 <tbody valign="top">
402 <tr>
403 <td align="left">
405 </td>
406 <td align="left">
407 x position (on screen)
408 </td>
409 </tr>
410 <tr>
411 <td align="left">
413 </td>
414 <td align="left">
415 y position (on screen)
416 </td>
417 </tr>
418 <tr>
419 <td align="left">
421 </td>
422 <td align="left">
423 width
424 </td>
425 </tr>
426 <tr>
427 <td align="left">
429 </td>
430 <td align="left">
431 height
432 </td>
433 </tr>
434 <tr>
435 <td align="left">
436 x_offset
437 </td>
438 <td align="left">
439 drawing offset
440 </td>
441 </tr>
442 <tr>
443 <td align="left">
444 y_offset
445 </td>
446 <td align="left">
447 drawing offset
448 </td>
449 </tr>
450 <tr>
451 <td align="left">
452 heading
453 </td>
454 <td align="left">
455 movement heading in degrees
456 </td>
457 </tr>
458 <tr>
459 <td align="left">
460 speed
461 </td>
462 <td align="left">
463 speed (in pixels/update)
464 </td>
465 </tr>
466 <tr>
467 <td align="left">
468 rotation
469 </td>
470 <td align="left">
471 current rotation of the object
472 </td>
473 </tr>
474 <tr>
475 <td align="left">
476 angular_velocity
477 </td>
478 <td align="left">
479 angular velocity of the object
480 </td>
481 </tr>
482 <tr>
483 <td align="left">
484 image
485 </td>
486 <td align="left">
487 image of the Object
488 </td>
489 </tr>
490 <tr>
491 <td align="left">
492 rects
493 </td>
494 <td align="left">
495 list of collision Rects
496 </td>
497 </tr>
498 <tr>
499 <td align="left">
500 type
501 </td>
502 <td align="left">
503 type of Object (for collision)
504 </td>
505 </tr>
506 <tr>
507 <td align="left">
508 max_updates
509 </td>
510 <td align="left">
511 maximum number of updates before Object self-collects
512 </td>
513 </tr>
514 <tr>
515 <td align="left">
516 num_updates
517 </td>
518 <td align="left">
519 current number of updates
520 </td>
521 </tr>
522 <tr>
523 <td align="left">
524 no_collide
525 </td>
526 <td align="left">
527 flag for if Object should not be colliding
528 </td>
529 </tr>
530 <tr>
531 <td align="left">
532 collect
533 </td>
534 <td align="left">
535 flag to indicate if an Object should be collected
536 </td>
537 </tr>
538 </tbody>
539 </table>
540 </div>
541 </div>
542 <h2>2. Methods</h2>
543 <div class="sectionbody">
544 <div class="tableblock">
545 <table rules="all"
546 frame="hsides"
547 cellspacing="0" cellpadding="4">
548 <col width="262" />
549 <col width="240" />
550 <thead>
551 <tr>
552 <th align="left">
553 Method
554 </th>
555 <th align="left">
556 Description
557 </th>
558 </tr>
559 </thead>
560 <tbody valign="top">
561 <tr>
562 <td align="left">
563 new(o)
564 </td>
565 <td align="left">
566 constructor
567 </td>
568 </tr>
569 <tr>
570 <td align="left">
571 update()
572 </td>
573 <td align="left">
574 updates the Object's state
575 </td>
576 </tr>
577 <tr>
578 <td align="left">
579 draw()
580 </td>
581 <td align="left">
582 draws the Object's image at (x, y)
583 </td>
584 </tr>
585 <tr>
586 <td align="left">
587 collide(ids, object)
588 </td>
589 <td align="left">
590 method executed upon collision (undefined for Object class)
591 </td>
592 </tr>
593 <tr>
594 <td align="left">
595 get_center()
596 </td>
597 <td align="left">
598 returns the center coordinates of the Object
599 </td>
600 </tr>
601 <tr>
602 <td align="left">
603 set_origin()
604 </td>
605 <td align="left">
606 sets the drawing offset (sprite is offset by these amounts to the upper left)
607 </td>
608 </tr>
609 <tr>
610 <td align="left">
611 unload()
612 </td>
613 <td align="left">
614 unloads any resources used and sets class to nil (undefined for Object class)
615 </td>
616 </tr>
617 </tbody>
618 </table>
619 </div>
620 </div>
621 <h2>3. Usage</h2>
622 <div class="sectionbody">
623 <p>This class is not designed to be instantiated directly, instead it should be
624 extended and serve as the base for all in-game objects.
625 An example object definition is as follows:</p>
626 <div class="listingblock">
627 <div class="content"><!-- Generator: GNU source-highlight 2.4
628 by Lorenzo Bettini
629 http://www.lorenzobettini.it
630 http://www.gnu.org/software/src-highlite -->
631 <pre><tt>MyObj <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">Object:new</span></span><span style="color: #990000">()</span>
632 MyObj<span style="color: #990000">.</span>attr1 <span style="color: #990000">=</span> <span style="color: #993399">4</span>
633 MyObj<span style="color: #990000">.</span>attr2 <span style="color: #990000">=</span> <span style="color: #FF0000">"some value"</span>
635 <span style="font-style: italic"><span style="color: #9A1900">--constructor</span></span>
636 <span style="font-weight: bold"><span style="color: #0000FF">function</span></span> <span style="font-weight: bold"><span style="color: #000000">MyObj:new</span></span><span style="color: #990000">(</span>o<span style="color: #990000">)</span>
637 o <span style="color: #990000">=</span> o <span style="font-weight: bold"><span style="color: #0000FF">or</span></span> <span style="color: #FF0000">{}</span>
638 <span style="font-weight: bold"><span style="color: #000000">setmetatable</span></span><span style="color: #990000">(</span>o<span style="color: #990000">,</span> self<span style="color: #990000">)</span>
639 self<span style="color: #990000">.</span>__index <span style="color: #990000">=</span> self
640 <span style="font-weight: bold"><span style="color: #0000FF">return</span></span> o
641 <span style="font-weight: bold"><span style="color: #0000FF">end</span></span>
643 <span style="font-style: italic"><span style="color: #9A1900">--other methods defined here</span></span>
644 </tt></pre></div></div>
645 </div>
646 <div id="footer">
647 <div id="footer-text">
648 Last updated 09-Jan-2008 19:32:58 EDT
649 </div>
650 </div>
651 </body>
652 </html>