1 // -*- Mode: C++; tab-width:2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi:tw=80:et:ts=2:sts=2
3 //
4 // -----------------------------------------------------------------------
5 //
6 // This file is part of RLVM, a RealLive virtual machine clone.
7 //
8 // -----------------------------------------------------------------------
9 //
10 // Copyright (C) 2007 Elliot Glaysher
11 //
12 // This program is free software; you can redistribute it and/or modify
13 // it under the terms of the GNU General Public License as published by
14 // the Free Software Foundation; either version 3 of the License, or
15 // (at your option) any later version.
16 //
17 // This program is distributed in the hope that it will be useful,
18 // but WITHOUT ANY WARRANTY; without even the implied warranty of
19 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20 // GNU General Public License for more details.
21 //
22 // You should have received a copy of the GNU General Public License
23 // along with this program; if not, write to the Free Software
24 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
25 //
26 // -----------------------------------------------------------------------
27 
28 #ifndef SRC_SYSTEMS_BASE_OBJECT_SETTINGS_H_
29 #define SRC_SYSTEMS_BASE_OBJECT_SETTINGS_H_
30 
31 #include <vector>
32 
33 // Holds certain properties of regarding an object that are set from
34 // the Gameexe.ini and are immutable inside of an instance.
35 struct ObjectSettings {
36   ObjectSettings();
37   explicit ObjectSettings(const std::vector<int>& data);
38 
39   // Purpose unknown
40   int layer;
41 
42   // SpaceKey determines whether an object is considered part of the
43   // UI layer or not; if it's non-zero, then the object is hidden
44   // temporarily if the player hides the text window to view the
45   // picture properly (typically by pressing the space key).
46   int space_key;
47 
48   // ObjOnOff determines whether an object can be toggled on and off
49   // independently by the player.  Valid values are 0, 1, and 2.
50   // Values of 1 and 2 correspond to [Set]ShowObject1() and
51   // [Set]ShowObject2(), and to \#SYSCOMs 18 and 19 respectively.
52   int obj_on_off;
53 
54   // Purpose Unknown
55   int time_mod;
56 
57   // Purpose Unknown
58   int disp_sort;
59 
60   // Purpose Unknown. (Set to 1 in objects 08[1234] in CLANNAD)
61   int init_mod;
62 
63   // WeatherOnOff determines whether the object is considered a
64   // weather effect object or not; if it's non-zero, the object will
65   // be shown and hidden with [Set]ShowWeather(), \#SYSCOM 17.
66   int weather_on_off;
67 };
68 
69 #endif  // SRC_SYSTEMS_BASE_OBJECT_SETTINGS_H_
70