Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/world_entities/npc.cc @ 5451

Last change on this file since 5451 was 5451, checked in by bensch, 19 years ago

orxonox/trunk: NPC's die, and emmit a power-UP

File size: 1.8 KB
Line 
1
2
3/*
4   orxonox - the future of 3D-vertical-scrollers
5
6   Copyright (C) 2004 orx
7
8   This program is free software; you can redistribute it and/or modify
9   it under the terms of the GNU General Public License as published by
10   the Free Software Foundation; either version 2, or (at your option)
11   any later version.
12
13   ### File Specific:
14   main-programmer: Patrick Boenzli
15   co-programmer:
16*/
17#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WORLD_ENTITY
18
19
20#include "npc.h"
21#include "obb_tree.h"
22
23#include "state.h"
24#include "list.h"
25#include "stdlibincl.h"
26#include "power_ups/turret_power_up.h"
27
28using namespace std;
29
30
31NPC::NPC()
32{
33  this->setClassID(CL_NPC, "NPC");
34
35  this->loadModelWithScale("models/ships/bolido.obj", 2);
36
37  this->randomRotAxis =  VECTOR_RAND(1);
38}
39
40
41NPC::~NPC () {}
42
43
44void NPC::collidesWith(WorldEntity* entity, const Vector& location)
45{
46  if (entity->isA(CL_PROJECTILE) && entity != this->collider)
47  {
48//    PRINTF(3)("collision %s vs %s @ (%f,%f,%f)\n", this->getName(), entity->getName(), location.x, location.y, location.z);
49//    this->applyForce(Vector(0,0,0)-location*1000);
50    if ((float)rand()/RAND_MAX < .3)
51    {
52      WorldEntity* powerUp = new TurretPowerUp();
53      powerUp->setAbsCoor(this->getAbsCoor());
54      State::getWorldEntityList()->add(powerUp);
55    }
56    State::getWorldEntityList()->remove(this);
57
58      this->collider = entity;
59  }
60  else if (entity->isA(CL_PLAYER))
61    this->applyForce(Vector(0,0,0)-location*100);
62  else if (entity->isA(CL_NPC))
63  {
64    this->setVisibiliy(false);
65    State::getWorldEntityList()->remove(this);
66  }
67}
68
69
70void NPC::tick(float dt)
71{
72//  Vector direction = (State::getCameraTarget()->getAbsCoor() - this->getAbsCoor());
73
74  //if (directin.len() < 100)
75//  this->shiftCoor(direction *dt * 5 * exp(-direction.len() / 30.0));
76  this->shiftDir(Quaternion(dt, this->randomRotAxis));
77
78}
79
80
81
Note: See TracBrowser for help on using the repository browser.