1 // SuperTux 2 // Copyright (C) 2006 Matthias Braun <matze@braunis.de> 3 // 4 // This program is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // This program is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with this program. If not, see <http://www.gnu.org/licenses/>. 16 17 #ifndef HEADER_SUPERTUX_SCRIPTING_THUNDERSTORM_HPP 18 #define HEADER_SUPERTUX_SCRIPTING_THUNDERSTORM_HPP 19 20 #ifndef SCRIPTING_API 21 #include "scripting/game_object.hpp" 22 23 class Thunderstorm; 24 #endif 25 26 namespace scripting { 27 28 class Thunderstorm final 29 #ifndef SCRIPTING_API 30 : public GameObject<::Thunderstorm> 31 #endif 32 { 33 #ifndef SCRIPTING_API 34 public: 35 using GameObject::GameObject; 36 private: 37 Thunderstorm(const Thunderstorm&) = delete; 38 Thunderstorm& operator=(const Thunderstorm&) = delete; 39 #endif 40 41 public: 42 /** 43 * Start playing thunder and lightning at configured interval 44 */ 45 void start(); 46 47 /** 48 * Stop playing thunder and lightning at configured interval 49 */ 50 void stop(); 51 52 /** 53 * Play thunder 54 */ 55 void thunder(); 56 57 /** 58 * Play lightning, i.e. call flash() and electrify() 59 */ 60 void lightning(); 61 62 /** 63 * Display a nice flash 64 */ 65 void flash(); 66 67 /** 68 * Electrify water throughout the whole sector for a short time 69 */ 70 void electrify(); 71 }; 72 73 } // namespace scripting 74 75 #endif 76 77 /* EOF */ 78