Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changes between Version 7 and Version 8 of pps/tutorial_basic


Ignore:
Timestamp:
Sep 30, 2008, 5:47:04 PM (16 years ago)
Author:
rgrieder
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • pps/tutorial_basic

    v7 v8  
    5252The interesting part: Modifying the C++ code. '''Open orxonox/trunk/src/orxonox/objects/TutorialShip.cc'''. As you have already heard from Fabian, the Core Framework is like a language extension to C++. But it cannot be fully automatic. That means you have to add a few lines accordingly:
    5353 1. Find the constructor (TutorialShip::TutorialShip()) and add '''RegisterObject(TutorialShip);''' as the first statement. This is used for the class hierarchy and for the ObjectLists. Whenever you derive from OrxonoxClass or any derivative, this call is necessary.
    54  1. Next will be creating a configurable value in our class. This enables us to configure the TutorialShip from outside (Shell or orxonox.ini). Go to the ''setConfigValues()'' and configure the member variable ''reloadTime_'' with a default value of 0.125. Remember the syntax:
     54 2. Next will be creating a configurable value in our class. This enables us to configure the TutorialShip from outside (Shell or orxonox.ini). Go to the ''setConfigValues()'' and configure the member variable ''reloadTime_'' with a default value of 0.125. Remember the syntax:
    5555{{{ SetConfigValue(''variable name'', ''default value'').description(''description text''); }}}
    56  1. The console command: It enables you to call a static function in the shell. Currently, our TutorialShip cannot fire any projectiles because there is no ConsoleCommand for "fire". This code is static, so we have to go to the beginning of the source code, just after {{{namespace orxonox {}}}. Now add a !ConsoleCommand for the static function ''fire()'' of the TutorialShip:
     56 3. The console command: It enables you to call a static function in the shell. Currently, our TutorialShip cannot fire any projectiles because there is no ConsoleCommand for "fire". This code is static, so we have to go to the beginning of the source code, just after {{{namespace orxonox {}}}. Now add a !ConsoleCommand for the static function ''fire()'' of the TutorialShip:
    5757{{{ SetConsoleCommand(''class name'', ''function name'', true).keybindMode(KeybindMode::''mode''); }}}
    58     keybindMode specifies how the console command should be treated when used on a key. ''OnHold'' means the command gets fired continuously, ''OnRelease'' and ''OnPress'' only once. [[br]][[br]]
     58    keybindMode specifies how the console command should be treated when used on a key. ''OnHold'' means the command gets fired continuously, ''OnRelease'' and ''OnPress'' only once. [[br]]
    5959
    6060We haven't done everything yet, but a little function test would be nice. Compile Orxonox and run it just according to instructions above. If it doesn't compile at all, try to understand the error message and if that doesn't help, ask an assistant. [[br]]
    61 You should now see exactly what you saw last time. The ship still won't fire anything. To change that we can assign that static ''fire()'' function to a key or button. To do that, open the console with the key just above "tab". To bind a console command to a key, type '''{{{keybind fire}}}''' (keybind is a command itself actually), hit enter and then hit the key or button you would like to assign the command to (preferably the left mouse button...).
     61You should now see exactly what you saw last time. The ship still won't fire anything. To change that we can assign that static ''fire()'' function to a key or button. To do that, open the console with the key just above "tab". To bind a console command to a key, type '''{{{keybind fire}}}''' (keybind is a command itself actually), hit enter and then hit the key or button you would like to assign the command to (preferably the left mouse button...). Close the console and try to fire a projectile (mouse would also work with an open console).[[br]][[br]]
     62
     63Now exit the game by hitting ''Esc'' or typing "exit" into the console. In order to change the reload time of the ship's weapon open src/bin/orxonox.ini and look for the section called '''[TutorialShip]'''. There you should see the entry '''reloadTime_'''. Set it to 1.0, save the file and start orxonox again (you don't need to compile anything now). Laggy weapon, right? To change it back open then console and enter "config T". Hit tab then and you will see a list of classes starting with "T" having config values (only ''TutorialShip'' for now). Hit tab again and the shell completes your text. Hit tab two times more and it will even complete the (only) configurable value ''reloadTime_''. You can see the old value being 1.0 above. You need to add a value to the command in order to change the !ConfigValue. Complete instruction now:
     64{{{ config TutorialShip reloadTime_ 0.1 }}}
     65You should now be able to fire quicker. It doesn't yet go faster than the framerate though.