Skyscraper
2.0
src
script
scriptproc.h
Go to the documentation of this file.
1
/*
2
Skyscraper 2.0 Alpha - Script Processor
3
Copyright (C)2004-2024 Ryan Thoryk
4
https://www.skyscrapersim.net
5
https://sourceforge.net/projects/skyscraper/
6
Contact - ryan@skyscrapersim.net
7
8
This program is free software; you can redistribute it and/or
9
modify it under the terms of the GNU General Public License
10
as published by the Free Software Foundation; either version 2
11
of the License, or (at your option) any later version.
12
13
This program is distributed in the hope that it will be useful,
14
but WITHOUT ANY WARRANTY; without even the implied warranty of
15
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
GNU General Public License for more details.
17
18
You should have received a copy of the GNU General Public License
19
along with this program; if not, write to the Free Software
20
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21
*/
22
23
#ifndef SCRIPTPROCESSOR_H
24
#define SCRIPTPROCESSOR_H
25
26
#include "
vm.h
"
27
28
namespace
Skyscraper
{
29
30
class
VMIMPEXP
ScriptProcessor
31
{
32
public
:
33
34
//sub-classes
35
class
Section
;
36
class
ConfigHandler
;
37
class
GlobalsSection
;
38
class
BuildingsSection
;
39
class
TexturesSection
;
40
class
CommandsSection
;
41
class
FloorSection
;
42
class
ElevatorSection
;
43
class
ElevatorCarSection
;
44
class
VehicleSection
;
45
class
ControllerSection
;
46
class
CallStationSection
;
47
48
ScriptProcessor
(
EngineContext
*instance);
49
~ScriptProcessor
();
50
bool
Run();
51
bool
LoadDataFile(
const
std::string &filename,
bool
insert =
false
,
int
insert_line = 0);
52
bool
LoadFromText(
const
std::string &text);
53
void
LoadDefaults();
54
void
Start();
55
bool
ReportMissingFiles
();
56
void
Reset();
57
std::vector<std::string> *GetBuildingData();
58
bool
IsFunctionDefined(
const
std::string &name);
59
std::string DumpState();
60
EngineContext
* GetEngine();
61
ElevatorCarSection
* GetElevatorCarSection();
62
ConfigHandler
* GetConfigHandler();
63
bool
HasRunloop();
64
bool
InRunloop
() {
return
in_runloop;}
65
66
bool
IsFinished
;
67
68
//return codes
69
static
const
int
sContinue = 0;
70
static
const
int
sNextLine = 1;
71
static
const
int
sError = 2;
72
static
const
int
sCheckFloors = 3;
73
static
const
int
sBreak = 4;
74
static
const
int
sRecalc = 5;
75
static
const
int
sSkipReset = 6;
76
static
const
int
sExit = 7;
77
static
const
int
sLoopFor = 8;
78
79
struct
VariableMap
80
{
81
std::string
name
;
82
std::string
value
;
83
};
84
85
std::vector<VariableMap>
variables
;
//named user variables
86
std::vector<std::string>
nonexistent_files
;
//missing files list
87
88
bool
getfloordata
;
89
int
line
;
//line number
90
std::string
LineData
;
//line text
91
bool
NoModels
;
//if true, disable models for DirectX11 support
92
93
private
:
94
95
::SBS::SBS
*
Simcore
;
96
EngineContext
*
engine
;
97
98
ConfigHandler
*
config
;
99
GlobalsSection
*
globals_section
;
100
BuildingsSection
*
buildings_section
;
101
TexturesSection
*
textures_section
;
102
CommandsSection
*
commands_section
;
103
FloorSection
*
floor_section
;
104
ElevatorSection
*
elevator_section
;
105
ElevatorCarSection
*
elevatorcar_section
;
106
VehicleSection
*
vehicle_section
;
107
ControllerSection
*
controller_section
;
108
CallStationSection
*
callstation_section
;
109
110
struct
FunctionData
111
{
112
std::string
Name
;
113
int
CallLine
;
114
std::string
LineData
;
115
std::vector<std::string>
Params
;
116
};
117
118
::SBS::Wall
*
wall
;
119
int
startpos
;
120
std::vector<std::string>
BuildingData
;
121
std::vector<std::string>
BuildingDataOrig
;
122
int
InFunction
;
123
std::vector<FunctionData>
FunctionStack
;
124
bool
ReplaceLine
;
125
std::string
ReplaceLineData
;
126
bool
CalcError
;
127
bool
show_percent
;
128
int
progress_marker
;
129
bool
in_runloop
;
130
bool
processed_runloop
;
131
132
int
ScriptError(std::string message,
bool
warning =
false
);
133
int
ScriptError();
134
int
ScriptWarning(std::string message);
135
std::string Calc(
const
std::string &expression);
136
void
StoreCommand(
::SBS::Object
*
object
);
137
bool
FunctionProc();
138
void
CheckFile(
const
std::string &filename);
139
void
GetLineInformation(
bool
CheckFunctionCall,
int
&LineNumber, std::string &FunctionName,
int
&FunctionLine,
bool
&IsInclude, std::string &IncludeFile,
bool
&IsIncludeFunction, std::string &IncludeFunctionFile);
140
bool
ProcessFunctionParameters();
141
void
ProcessUserVariables();
142
int
ProcessSections();
143
int
ProcessFloorObjects();
144
void
Breakpoint();
145
void
ProcessExtents();
146
int
ProcessForLoops();
147
void
ProcessRunloop();
148
149
struct
FunctionInfo
150
{
151
std::string
name
;
152
int
line
;
153
};
154
155
std::vector<FunctionInfo>
functions
;
//stored functions
156
157
struct
IncludeInfo
158
{
159
std::string
filename
;
160
int
start_line
;
161
int
end_line
;
162
int
parent
;
163
};
164
165
struct
ForInfo
166
{
167
std::string
iterator
;
168
int
line
;
169
int
i
;
170
int
start
;
171
int
end
;
172
};
173
174
std::vector<IncludeInfo>
includes
;
//stored include mappings
175
std::vector<ForInfo>
ForLoops
;
176
};
177
178
}
179
180
#endif
SBS::Object
Definition
object.h:56
SBS::SBS
Definition
sbs.h:131
SBS::Wall
Definition
wall.h:36
Skyscraper::EngineContext
Definition
enginecontext.h:33
Skyscraper::ScriptProcessor::BuildingsSection
Definition
section.h:97
Skyscraper::ScriptProcessor::CallStationSection
Definition
section.h:178
Skyscraper::ScriptProcessor::CommandsSection
Definition
section.h:113
Skyscraper::ScriptProcessor::ConfigHandler
Definition
section.h:64
Skyscraper::ScriptProcessor::ControllerSection
Definition
section.h:170
Skyscraper::ScriptProcessor::ElevatorCarSection
Definition
section.h:154
Skyscraper::ScriptProcessor::ElevatorSection
Definition
section.h:146
Skyscraper::ScriptProcessor::FloorSection
Definition
section.h:121
Skyscraper::ScriptProcessor::GlobalsSection
Definition
section.h:89
Skyscraper::ScriptProcessor::Section
Definition
section.h:29
Skyscraper::ScriptProcessor::TexturesSection
Definition
section.h:105
Skyscraper::ScriptProcessor::VehicleSection
Definition
section.h:162
Skyscraper::ScriptProcessor
Definition
scriptproc.h:31
Skyscraper::ScriptProcessor::getfloordata
bool getfloordata
Definition
scriptproc.h:88
Skyscraper::ScriptProcessor::vehicle_section
VehicleSection * vehicle_section
Definition
scriptproc.h:106
Skyscraper::ScriptProcessor::functions
std::vector< FunctionInfo > functions
Definition
scriptproc.h:155
Skyscraper::ScriptProcessor::nonexistent_files
std::vector< std::string > nonexistent_files
Definition
scriptproc.h:86
Skyscraper::ScriptProcessor::InRunloop
bool InRunloop()
Definition
scriptproc.h:64
Skyscraper::ScriptProcessor::includes
std::vector< IncludeInfo > includes
Definition
scriptproc.h:174
Skyscraper::ScriptProcessor::ForLoops
std::vector< ForInfo > ForLoops
Definition
scriptproc.h:175
Skyscraper::ScriptProcessor::config
ConfigHandler * config
Definition
scriptproc.h:98
Skyscraper::ScriptProcessor::variables
std::vector< VariableMap > variables
Definition
scriptproc.h:85
Skyscraper::ScriptProcessor::controller_section
ControllerSection * controller_section
Definition
scriptproc.h:107
Skyscraper::ScriptProcessor::ReplaceLine
bool ReplaceLine
Definition
scriptproc.h:124
Skyscraper::ScriptProcessor::FunctionStack
std::vector< FunctionData > FunctionStack
Definition
scriptproc.h:123
Skyscraper::ScriptProcessor::progress_marker
int progress_marker
Definition
scriptproc.h:128
Skyscraper::ScriptProcessor::IsFinished
bool IsFinished
Definition
scriptproc.h:66
Skyscraper::ScriptProcessor::BuildingDataOrig
std::vector< std::string > BuildingDataOrig
Definition
scriptproc.h:121
Skyscraper::ScriptProcessor::globals_section
GlobalsSection * globals_section
Definition
scriptproc.h:99
Skyscraper::ScriptProcessor::wall
::SBS::Wall * wall
Definition
scriptproc.h:118
Skyscraper::ScriptProcessor::InFunction
int InFunction
Definition
scriptproc.h:122
Skyscraper::ScriptProcessor::buildings_section
BuildingsSection * buildings_section
Definition
scriptproc.h:100
Skyscraper::ScriptProcessor::callstation_section
CallStationSection * callstation_section
Definition
scriptproc.h:108
Skyscraper::ScriptProcessor::floor_section
FloorSection * floor_section
Definition
scriptproc.h:103
Skyscraper::ScriptProcessor::show_percent
bool show_percent
Definition
scriptproc.h:127
Skyscraper::ScriptProcessor::processed_runloop
bool processed_runloop
Definition
scriptproc.h:130
Skyscraper::ScriptProcessor::startpos
int startpos
Definition
scriptproc.h:119
Skyscraper::ScriptProcessor::commands_section
CommandsSection * commands_section
Definition
scriptproc.h:102
Skyscraper::ScriptProcessor::elevator_section
ElevatorSection * elevator_section
Definition
scriptproc.h:104
Skyscraper::ScriptProcessor::ReplaceLineData
std::string ReplaceLineData
Definition
scriptproc.h:125
Skyscraper::ScriptProcessor::ReportMissingFiles
bool ReportMissingFiles()
Skyscraper::ScriptProcessor::LineData
std::string LineData
Definition
scriptproc.h:90
Skyscraper::ScriptProcessor::CalcError
bool CalcError
Definition
scriptproc.h:126
Skyscraper::ScriptProcessor::NoModels
bool NoModels
Definition
scriptproc.h:91
Skyscraper::ScriptProcessor::engine
EngineContext * engine
Definition
scriptproc.h:96
Skyscraper::ScriptProcessor::Simcore
::SBS::SBS * Simcore
Definition
scriptproc.h:95
Skyscraper::ScriptProcessor::line
int line
Definition
scriptproc.h:89
Skyscraper::ScriptProcessor::in_runloop
bool in_runloop
Definition
scriptproc.h:129
Skyscraper::ScriptProcessor::textures_section
TexturesSection * textures_section
Definition
scriptproc.h:101
Skyscraper::ScriptProcessor::elevatorcar_section
ElevatorCarSection * elevatorcar_section
Definition
scriptproc.h:105
Skyscraper::ScriptProcessor::BuildingData
std::vector< std::string > BuildingData
Definition
scriptproc.h:120
Skyscraper
Definition
native.cpp:50
Skyscraper::ScriptProcessor::ForInfo
Definition
scriptproc.h:166
Skyscraper::ScriptProcessor::ForInfo::start
int start
Definition
scriptproc.h:170
Skyscraper::ScriptProcessor::ForInfo::i
int i
Definition
scriptproc.h:169
Skyscraper::ScriptProcessor::ForInfo::line
int line
Definition
scriptproc.h:168
Skyscraper::ScriptProcessor::ForInfo::end
int end
Definition
scriptproc.h:171
Skyscraper::ScriptProcessor::ForInfo::iterator
std::string iterator
Definition
scriptproc.h:167
Skyscraper::ScriptProcessor::FunctionData
Definition
scriptproc.h:111
Skyscraper::ScriptProcessor::FunctionData::Params
std::vector< std::string > Params
Definition
scriptproc.h:115
Skyscraper::ScriptProcessor::FunctionData::LineData
std::string LineData
Definition
scriptproc.h:114
Skyscraper::ScriptProcessor::FunctionData::CallLine
int CallLine
Definition
scriptproc.h:113
Skyscraper::ScriptProcessor::FunctionData::Name
std::string Name
Definition
scriptproc.h:112
Skyscraper::ScriptProcessor::FunctionInfo
Definition
scriptproc.h:150
Skyscraper::ScriptProcessor::FunctionInfo::line
int line
Definition
scriptproc.h:152
Skyscraper::ScriptProcessor::FunctionInfo::name
std::string name
Definition
scriptproc.h:151
Skyscraper::ScriptProcessor::IncludeInfo
Definition
scriptproc.h:158
Skyscraper::ScriptProcessor::IncludeInfo::end_line
int end_line
Definition
scriptproc.h:161
Skyscraper::ScriptProcessor::IncludeInfo::start_line
int start_line
Definition
scriptproc.h:160
Skyscraper::ScriptProcessor::IncludeInfo::filename
std::string filename
Definition
scriptproc.h:159
Skyscraper::ScriptProcessor::IncludeInfo::parent
int parent
Definition
scriptproc.h:162
Skyscraper::ScriptProcessor::VariableMap
Definition
scriptproc.h:80
Skyscraper::ScriptProcessor::VariableMap::value
std::string value
Definition
scriptproc.h:82
Skyscraper::ScriptProcessor::VariableMap::name
std::string name
Definition
scriptproc.h:81
vm.h
VMIMPEXP
#define VMIMPEXP
Definition
vm.h:49
Generated by
1.11.0