~ubuntu-branches/ubuntu/oneiric/blobandconquer/oneiric

« back to all changes in this revision

Viewing changes to src/cplusplus/CSwitch.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Guus Sliepen
  • Date: 2008-06-15 12:04:29 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20080615120429-5ss7cbb4z9mpywj5
Tags: 0.95-1
New upstream release. Closes: #486310

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
Copyright (C) 2006 Parallel Realities
 
3
 
 
4
This program is free software; you can redistribute it and/or
 
5
modify it under the terms of the GNU General Public License
 
6
as published by the Free Software Foundation; either version 2
 
7
of the License, or (at your option) any later version.
 
8
 
 
9
This program is distributed in the hope that it will be useful,
 
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
12
 
 
13
See the GNU General Public License for more details.
 
14
 
 
15
You should have received a copy of the GNU General Public License
 
16
along with this program; if not, write to the Free Software
 
17
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
18
 
 
19
*/
 
20
 
 
21
#include "../headers.h"
 
22
 
 
23
Switch::Switch(long uniqueId)
 
24
{
 
25
        this->uniqueId = uniqueId;
 
26
 
 
27
        entityType = ET_SWITCH;
 
28
        
 
29
        switchType = SWT_NORMAL;
 
30
        
 
31
        independent = false;
 
32
        
 
33
        active = false;
 
34
        
 
35
        puzzleType = Math::rrand(PUZZLE_TYPE_MASTERMIND, PUZZLE_TYPE_LASERGRID);
 
36
        puzzleSeed = Math::rrand(1000000, 9999999);
 
37
        
 
38
        model = NULL;
 
39
        texture[0] = texture[1] = NULL;
 
40
        
 
41
        altModel = false;
 
42
        
 
43
        rotation.z = 90;
 
44
        
 
45
        boundingBox.mins.set(-1, -3, 0);
 
46
        boundingBox.maxs.set(1, 3, 15);
 
47
}
 
48
 
 
49
Switch::~Switch()
 
50
{
 
51
}
 
52
 
 
53
void Switch::loadAdditional(Properties *props)
 
54
{
 
55
        active = props->getInt("active", active);
 
56
        switchType = props->getInt("switchType", switchType);
 
57
        requires = props->getString("requires", requires.getText());
 
58
        custom = props->getFloat("timeout", custom);
 
59
        independent = props->getInt("independent", independent);
 
60
        puzzleType = props->getInt("puzzleType", puzzleType);
 
61
        puzzleSeed = props->getInt("puzzleSeed", puzzleSeed);
 
62
        altModel = props->getInt("altModel", altModel);
 
63
        rotation.z -= props->getFloat("angle", 0);
 
64
        
 
65
        if (requires != "")
 
66
        {
 
67
                altModel = true;
 
68
        }
 
69
        
 
70
        if (altModel)
 
71
        {
 
72
                boundingBox.mins.set(-3, -3, 0);
 
73
                boundingBox.maxs.set(3, 3, 10);
 
74
        }
 
75
}
 
76
 
 
77
void Switch::saveAdditional(Properties *props)
 
78
{
 
79
        switch (switchType)
 
80
        {
 
81
                case SWITCH_DEMOLITION:
 
82
                        props->name = "DemolitionPlate";
 
83
                        break;
 
84
                        
 
85
                case SWT_PRESSURE:
 
86
                        props->name = "PressurePlate";
 
87
                        break;
 
88
                        
 
89
                default:
 
90
                        props->name = "Switch";
 
91
                        break;
 
92
        }
 
93
        
 
94
        props->setProperty("active", active);
 
95
        props->setProperty("switchType", switchType);
 
96
        props->setProperty("requires", requires.getText());
 
97
        props->setProperty("independent", independent);
 
98
        props->setProperty("puzzleType", puzzleType);
 
99
        props->setProperty("puzzleSeed", puzzleSeed);
 
100
        props->setProperty("altModel", altModel);
 
101
}