Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/world_entities/power_ups/power_up.cc @ 6574

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

orxonox/trunk: merged the WeaponManager back to the trunk

File size: 2.9 KB
Line 
1/*
2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2004 orx
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2, or (at your option)
9   any later version.
10
11   ### File Specific:
12   main-programmer: Manuel Leuenberger
13   co-programmer: ...
14*/
15
16#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WORLD_ENTITY
17
18
19#include "power_up.h"
20#include "extendable.h"
21#include "primitive_model.h"
22
23using namespace std;
24
25PowerUp::PowerUp(float r, float g, float b)
26{
27  this->setClassID(CL_POWER_UP, "PowerUp");
28
29  this->respawnType = RESPAWN_NONE;
30/*  if(!PowerUp::sphereModel) {*/
31
32  Model* sphereModel = new PrimitiveModel(PRIM_SPHERE, 7, 5);
33
34  this->setModel(sphereModel);
35  this->buildObbTree( 4);
36  this->sphereMaterial = new Material;
37  this->sphereMaterial->setTransparency(.1);
38  this->sphereMaterial->setDiffuse(r, g, b);
39  this->toList(OM_COMMON);
40}
41
42PowerUp::~PowerUp ()
43{
44  delete this->sphereMaterial;
45}
46
47
48void PowerUp::loadParams(const TiXmlElement* root)
49{
50  WorldEntity::loadParams(root);
51}
52
53
54void PowerUp::collidesWith (WorldEntity* entity, const Vector& location)
55{
56  if(entity->isA(CL_EXTENDABLE))
57  {
58    if(dynamic_cast<Extendable*>(entity)->pickup(this))
59    {
60      this->toList(OM_DEAD_TICK);
61    }
62  }
63}
64
65void PowerUp::draw() const
66{
67  this->sphereMaterial->select();
68  WorldEntity::draw();
69  /*glMatrixMode(GL_MODELVIEW);
70  glPushMatrix();
71
72  glTranslatef (this->getAbsCoor ().x,
73                this->getAbsCoor ().y,
74                this->getAbsCoor ().z);
75  Vector tmpRot = this->getAbsDir().getSpacialAxis();
76  glRotatef (this->getAbsDir().getSpacialAxisAngle(), tmpRot.x, tmpRot.y, tmpRot.z );
77
78   this->sphereMaterial->select();
79   this->getModel(0)->draw();
80
81  glPopMatrix();*/
82}
83
84const char* PowerUp::respawnTypes[] = {
85  "none",
86  "time"
87};
88
89void PowerUp::setRespawnType(const char* type)
90{
91  for(int i = 0; i < RESPAWN_size; ++i) {
92    if(!strcmp(type, respawnTypes[i])) {
93      this->respawnType = (PowerUpRespawn)i;
94      break;
95    }
96  }
97}
98
99
100
101/********************************************************************************************
102 NETWORK STUFF
103 ********************************************************************************************/
104
105
106/**
107 * data copied in data will bee sent to another host
108 * @param data pointer to data
109 * @param maxLength max length of data
110 * @return the number of bytes writen
111 */
112int PowerUp::readState( byte * data, int maxLength )
113{
114  SYNCHELP_WRITE_BEGIN();
115  SYNCHELP_WRITE_FKT( WorldEntity::readState );
116  return SYNCHELP_WRITE_N;
117}
118
119
120/**
121 * Writes data from network containing information about the state
122 * @param data pointer to data
123 * @param length length of data
124 * @param sender hostID of sender
125 */
126int PowerUp::writeState( const byte * data, int length, int sender )
127{
128  SYNCHELP_READ_BEGIN();
129  SYNCHELP_READ_FKT( WorldEntity::writeState );
130  return SYNCHELP_READ_N;
131}
132
Note: See TracBrowser for help on using the repository browser.