/* =========================================================================== Copyright (C) 2015 the OpenMoHAA team This file is part of OpenMoHAA source code. OpenMoHAA source code is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. OpenMoHAA source code is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenMoHAA source code; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA =========================================================================== */ // nature.cpp: nature #include "nature.h" /*****************************************************************************/ /*QUAKED func_emitter (0 0.25 0.5) ? "emitter" - Name of emitter to use. ******************************************************************************/ Event EV_Emitter_EmitterName ( "emitter", EV_DEFAULT, "s", "name", "Emitter to use", EV_NORMAL ); CLASS_DECLARATION(Entity, Emitter, "func_emitter") { {&EV_Emitter_EmitterName, &Emitter::EmitterName}, {NULL, NULL } }; Emitter::Emitter() { edict->s.eType = ET_EMITTER; } void Emitter::setEmitter(str name) { emitterName = name; edict->s.tag_num = gi.imageindex(emitterName); } void Emitter::EmitterName(Event *ev) { setEmitter(ev->GetString(1)); } /*****************************************************************************/ /*QUAKED func_rain (0 0.25 0.5) ? This creates a raining effect in the brush "emitter" - Name of emitter to use for the rain. ******************************************************************************/ CLASS_DECLARATION(Entity, Rain, "func_rain") { {NULL, NULL} }; Rain::Rain() { if (LoadingSavegame) { // Archive function will setup all necessary data return; } setSolidType(SOLID_NOT); edict->s.eType = ET_RAIN; setRainName("defaultrain"); } void Rain::setRainName(str name) { rainName = name; edict->s.tag_num = gi.imageindex(rainName); } /*****************************************************************************/ /* Plant Puffdaddy */ /*****************************************************************************/ Event EV_PuffDaddy_Idle ( "idle", EV_DEFAULT, NULL, NULL, "Animates the puff daddy.", EV_NORMAL ); CLASS_DECLARATION(Animate, PuffDaddy, "plant_puffdaddy") { {&EV_Touch, &PuffDaddy::Touch}, {&EV_PuffDaddy_Idle, &PuffDaddy::Idle }, {NULL, NULL } }; void PuffDaddy::Idle(Event *ev) { NewAnim("idle"); } void PuffDaddy::Touch(Event *ev) { Entity *other; other = ev->GetEntity(1); if (!other->inheritsFrom("Sentient")) { return; } NewAnim("touch", EV_PuffDaddy_Idle); //SetFrame( 0 ); SurfaceCommand("puffdaddy", "+nodraw"); setSolidType(SOLID_NOT); } PuffDaddy::PuffDaddy() { if (LoadingSavegame) { // Archive function will setup all necessary data return; } setSolidType(SOLID_TRIGGER); edict->s.eType = ET_MODELANIM; setModel("plant_puffdaddy.tik"); PostEvent(EV_Show, 0); //showModel(); }