1
// $Id: hammer.cc,v 1.16 2001/12/16 03:23:45 cagri Exp $
3
// Pingus - A free Lemmings clone
4
// Copyright (C) 1999 Ingo Ruhnke <grumbel@gmx.de>
6
// This program is free software; you can redistribute it and/or
7
// modify it under the terms of the GNU General Public License
8
// as published by the Free Software Foundation; either version 2
9
// of the License, or (at your option) any later version.
11
// This program is distributed in the hope that it will be useful,
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
// GNU General Public License for more details.
16
// You should have received a copy of the GNU General Public License
17
// along with this program; if not, write to the Free Software
18
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20
#include "../World.hh"
22
#include "../particles/GroundParticle.hh"
23
#include "../PingusResource.hh"
25
#include "../ActionHolder.hh"
26
#include "../PinguActionFactory.hh"
27
#include "../PinguHolder.hh"
29
Hammer::Hammer(const TrapData& data)
33
surface = PingusResource::load_surface("Traps/hammer", "traps");
34
counter.set_size(surface.get_num_frames());
35
counter.set_type(GameCounter::ping_pong);
44
Hammer::update(float delta)
47
particle_thrown = false;
49
PinguHolder* holder = world->get_pingu_p ();
50
for (PinguIter pingu = holder->begin (); pingu != holder->end (); ++pingu){
54
if (counter == (int)(surface.get_num_frames()) - 3 && !particle_thrown) {
55
particle_thrown = true;
57
for(int i=0; i < 5; ++i)
58
particle->add_particle(new GroundParticle(x_pos + 67 + rand() % 40 - 20 ,
68
Hammer::catch_pingu(boost::shared_ptr<Pingu> pingu)
70
if (counter >= (int)(surface.get_num_frames()) - 3) {
71
if (pingu->get_x() > pos.x + 55 && pingu->get_x() < pos.x + 77
72
&& pingu->get_y() > pos.y + 146 && pingu->get_y() < pos.y + 185)
73
pingu->set_action(PinguActionFactory::instance ()->create_sp ("smashed"));