commit: f6bd3b199894787cabc15b05397b0ba131be9f16
parent 3934e3755f35f31fbccdf36233c71b4a18adada4
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date: Fri, 22 Mar 2024 20:41:54 +0100
README: Move to README.md, add dependencies & markup
Diffstat:
D | README | 166 | ------------------------------------------------------------------------------- |
A | README.md | 156 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
2 files changed, 156 insertions(+), 166 deletions(-)
diff --git a/README b/README
@@ -1,165 +0,0 @@
-libBulletML 0.0.5
-
-* Abstract
-
-It is a C++ library to handle BulletML, the Bullet Markup
-Language. You can use BulletML in your program without bothering to
-parse XML.
-
-If you want to know BulletML more, please see following web site by
-ABA (author of BulletML):
-http://www.asahi-net.or.jp/~cs8k-cyu/bulletml/index_e.html
-
-
-* Usage
-
-You can use it with VC and BorlandC++ and gcc and I wish, almost all
-compiler that supports standard C++.
-
-An example of this library is available in my software "siroi
-danmakukun":
-http://user.ecc.u-tokyo.ac.jp/~s31552/wp/sdmkun/sdmkun-1.5.6.zip
-You can see usage of this library in src/command_bulletml.* .
-
-
-* Tutorial
-
-This library's basic usage is event driven model.
-
-0. Get XML file written in BulletML.
-
-You can use BulletML file in "siroi danmakukun". (bosses.d/*.xml in
-archive)
-
-1. Include headers
-
-#include "bulletml/bulletmlparser.h"
-#include "bulletml/bulletmlparser-tinyxml.h"
-#include "bulletml/bulletmlrunner.h"
-
-2. Create class that inherits BulletMLRunner
-
-class BulletCommand : public BulletMLRunner {
- // ...
-
- // the bullet you will handle
- Bullet* bullet_;
-}
-
-3. Implement all pure virtual function defined in bulletmlrunner.h
-
-For example:
-class BulletCommand : public BulletMLRunner {
- virtual void doVanish() {
- bullet_->die();
- }
-
- // ... and other pure virtual functions
-}
-
-createSimpleBullet and createBullet method should be implemented
-carefully. In libBulletML, all bullets are divided to two
-types. createSimpleBullet type does not have <action>, createBullet
-type has <action>. For example, "siroi danmakukun" uses two class:
-Shot and Enemy.
-
-When libBulletML handle <fire> element that does not have <action>
-element, BulletMLRunner calls createSimpleBullet method with two
-arguments: direction and speed.
-
-In the other hand, if <fire> element has <action> element,
-BulletMLRunner calls createBullet method with three arguments:
-direction, speed, and state. You should not care the detail of the
-state argument. But it should be given to the class derived from
-BulletMLRunner in its constructor. The creation of this class is
-described in next section.
-
-4. Create of the class derived from BulletMLRunner
-
-In libBulletML, the batteries are divided two types. One type is the
-battery that is defined in <action label="top"> (first order battery),
-and one type is the battery that is created by the other battery
-(second, third, forth... battery).
-
-Then, you should create two constructors to handle these two kind of
-batteries.
-
-For example, first order battery is implemented like following:
-
-BulletCommand::BulletCommand(BulletMLParser* bp, Bullet* b)
- : BulletMLRunner(bp), bullet_(b)
-
-For example, second, third... order battery is implemented like following:
-
-BulletCommand::BulletCommand(BulletMLState* bs, Bullet* b)
- : BulletMLRunner(bs), bullet_(b)
-
-You should call this constructor when createBullet method is called.
-
-5. Create BulletML document
-
-BulletMLParser* bp = new BulletMLParserTinyXML("foo.xml");
-bp->build();
-
-Because parsing BulletML is slow, all xml files should be loaded in
-the initialization of the program.
-
-6. Create first order battery
-
-BulletCommand* bc = new BulletCommand(bp)
-
-7. Run BulletCommand in all turn.
-
-while (1) {
- // the main loop of game
-
- bc->run();
-}
-
-If some errors are occured, libBulletML throws BulletMLError. You can
-catch this exception.
-
-
-* Misc
-
-TinyXML is used to parse XML.
-http://www.gibaradunn.srac.org/tiny/index.shtml
-
-If you cannot understand this document (yes, it's poor document and
-writen in poor English), please ask me with email.
-
-
-* Modified BSD License
-
-Copyright (c) 2003, shinichiro.h All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
- * The name of the author may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-shinichiro.h
- s31552@mail.ecc.u-tokyo.ac.jp
- http://user.ecc.u-tokyo.ac.jp/~s
-\ No newline at end of file
diff --git a/README.md b/README.md
@@ -0,0 +1,156 @@
+# libBulletML
+
+This is a library to parse (Bullet Markup Language)[http://www.asahi-net.or.jp/~cs8k-cyu/bulletml/index_e.html] files.
+
+## Dependencies
+- POSIX environment with make
+- C++11 compiler (supported: gcc, clang)
+
+## Tutorial
+
+This library's basic usage is event driven model.
+
+0. Get XML file written in BulletML.
+
+You can use BulletML file in "siroi danmakukun". (bosses.d/*.xml in
+archive)
+
+1. Include headers
+
+```c++
+#include "bulletml/bulletmlparser.h"
+#include "bulletml/bulletmlparser-tinyxml.h"
+#include "bulletml/bulletmlrunner.h"
+```
+
+2. Create class that inherits `BulletMLRunner`
+
+```c++
+class BulletCommand : public BulletMLRunner {
+ // ...
+
+ // the bullet you will handle
+ Bullet* bullet_;
+}
+```
+
+3. Implement all pure virtual function defined in bulletmlrunner.h
+
+For example:
+```c++
+class BulletCommand : public BulletMLRunner {
+ virtual void doVanish() {
+ bullet_->die();
+ }
+
+ // ... and other pure virtual functions
+}
+```
+
+`createSimpleBullet` and `createBullet` method should be implemented
+carefully. In libBulletML, all bullets are divided to two
+types. `createSimpleBullet` type does not have `<action>`, `createBullet`
+type has `<action>`. For example, "siroi danmakukun" uses two class:
+Shot and Enemy.
+
+When libBulletML handle `<fire>` element that does not have `<action>`
+element, BulletMLRunner calls `createSimpleBullet` method with two
+arguments: `direction` and `speed`.
+
+In the other hand, if `<fire>` element has `<action>` element,
+BulletMLRunner calls `createBullet` method with three arguments:
+`direction`, `speed`, and `state`. You should not care the detail of the
+state argument. But it should be given to the class derived from
+BulletMLRunner in its constructor. The creation of this class is
+described in next section.
+
+4. Create of the class derived from BulletMLRunner
+
+In libBulletML, the batteries are divided two types. One type is the
+battery that is defined in <action label="top"> (first order battery),
+and one type is the battery that is created by the other battery
+(second, third, forth... battery).
+
+Then, you should create two constructors to handle these two kind of
+batteries.
+
+For example, first order battery is implemented like following:
+
+```c++
+BulletCommand::BulletCommand(BulletMLParser* bp, Bullet* b)
+ : BulletMLRunner(bp), bullet_(b)
+``
+
+For example, second, third... order battery is implemented like following:
+
+```c++
+BulletCommand::BulletCommand(BulletMLState* bs, Bullet* b)
+ : BulletMLRunner(bs), bullet_(b)
+```
+
+You should call this constructor when createBullet method is called.
+
+5. Create BulletML document
+
+```c++
+BulletMLParser* bp = new BulletMLParserTinyXML("foo.xml");
+bp->build();
+```
+
+Because parsing BulletML is slow, all xml files should be loaded in
+the initialization of the program.
+
+6. Create first order battery
+
+```c++
+BulletCommand* bc = new BulletCommand(bp)
+```
+
+7. Run BulletCommand in all turn.
+
+```c++
+while (1) {
+ // the main loop of game
+
+ bc->run();
+}
+```
+
+If some errors are occured, libBulletML throws BulletMLError. You can
+catch this exception.
+
+* Modified BSD License
+
+Copyright (c) 2003, shinichiro.h All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * The name of the author may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+shinichiro.h
+ s31552@mail.ecc.u-tokyo.ac.jp
+ http://user.ecc.u-tokyo.ac.jp/~s
+