~ubuntu-branches/ubuntu/precise/pingus/precise

« back to all changes in this revision

Viewing changes to src/traps/hammer.cc

  • Committer: Bazaar Package Importer
  • Author(s): Raphael Goulais
  • Date: 2004-08-09 10:26:00 UTC
  • mfrom: (2.1.1 warty)
  • Revision ID: james.westby@ubuntu.com-20040809102600-lg2q9lfars0q1p42
Tags: 0.6.0-8
Applied patch from Andreas Jochens (Closes: #263992)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
//  $Id: hammer.cc,v 1.16 2001/12/16 03:23:45 cagri Exp $
2
 
//
3
 
//  Pingus - A free Lemmings clone
4
 
//  Copyright (C) 1999 Ingo Ruhnke <grumbel@gmx.de>
5
 
//
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.
10
 
//
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.
15
 
//
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.
19
 
 
20
 
#include "../World.hh"
21
 
#include "hammer.hh"
22
 
#include "../particles/GroundParticle.hh"
23
 
#include "../PingusResource.hh"
24
 
#include "../algo.hh"
25
 
#include "../ActionHolder.hh"
26
 
#include "../PinguActionFactory.hh"
27
 
#include "../PinguHolder.hh"
28
 
 
29
 
Hammer::Hammer(const TrapData& data)
30
 
{
31
 
  pos = data.pos;
32
 
 
33
 
  surface = PingusResource::load_surface("Traps/hammer", "traps");
34
 
  counter.set_size(surface.get_num_frames());
35
 
  counter.set_type(GameCounter::ping_pong);
36
 
  counter.set_speed(1);
37
 
}
38
 
 
39
 
Hammer::~Hammer()
40
 
{
41
 
}
42
 
 
43
 
void
44
 
Hammer::update(float delta)
45
 
{
46
 
  if (counter == 0) 
47
 
    particle_thrown = false;
48
 
 
49
 
  PinguHolder* holder = world->get_pingu_p ();
50
 
  for (PinguIter pingu = holder->begin (); pingu != holder->end (); ++pingu){
51
 
       catch_pingu(*pingu);
52
 
  }
53
 
 
54
 
  if (counter == (int)(surface.get_num_frames()) - 3 && !particle_thrown) {
55
 
    particle_thrown = true;
56
 
    /*
57
 
    for(int i=0; i < 5; ++i)
58
 
      particle->add_particle(new GroundParticle(x_pos + 67 + rand() % 40 - 20 ,
59
 
                                                y_pos + 177,
60
 
                                                frand() * 2 - 1,
61
 
                                                frand() * - 1.5));
62
 
    */
63
 
  }
64
 
  ++counter;
65
 
}
66
 
 
67
 
void
68
 
Hammer::catch_pingu(boost::shared_ptr<Pingu> pingu)
69
 
{
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"));
74
 
  }
75
 
}
76
 
 
77
 
/* EOF */