Develop and Download Open Source Software

Browse Subversion Repository

Contents of /trunk/CRailwayMode.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (show annotations) (download) (as text)
Sun Aug 15 01:53:13 2010 UTC (13 years, 9 months ago) by okadu
File MIME type: text/x-c++src
File size: 8020 byte(s)


1 #include "stdafx.h"
2 #include "CPopMenu.h"
3 #include "CRailPlugin.h"
4 #include "CTiePlugin.h"
5 #include "CGirderPlugin.h"
6 #include "CPierPlugin.h"
7 #include "CLinePlugin.h"
8 #include "CPolePlugin.h"
9 #include "CRailwayPluginSet.h"
10 #include "CRailwayMode.h"
11
12 // ŠO•”’萔
13 extern const int ARROW_INTERFACE_HEIGHT;
14
15 // static ƒƒ“ƒo
16 int CRailwayMode::ms_CurrentType = 0;
17 int CRailwayMode::ms_WindowPos[2][2];
18 int CRailwayMode::ms_TrackNum = 1;
19 float CRailwayMode::ms_TrackInterval = 4.0;
20 CWindowCtrl CRailwayMode::ms_RailWindow;
21 CPushButton CRailwayMode::ms_PluginSetButton;
22 CStaticCtrl CRailwayMode::ms_TypeLabel;
23 CCheckBox CRailwayMode::ms_Type[6];
24 CCheckBox CRailwayMode::ms_EnableCant;
25 CCheckBox CRailwayMode::ms_LiftRailSurface;
26 CStaticCtrl CRailwayMode::ms_MultiTrackLabel;
27 CCheckBox CRailwayMode::ms_MultiTrackCheck;
28 CStaticCtrl CRailwayMode::ms_TrackNumLabel;
29 CEditCtrl CRailwayMode::ms_TrackNumEdit;
30 CStaticCtrl CRailwayMode::ms_TrackIntLabel;
31 CEditCtrl CRailwayMode::ms_TrackIntEdit;
32 CCamera CRailwayMode::ms_RailwayModeCamera;
33
34 /*
35 * [static]
36 * ‹¤’ĘƒCƒ“ƒ^[ƒtƒFƒCƒX‚̏‰Šú‰ť
37 */
38 void CRailwayMode::InitRailwayInterface(){
39 CInterface::ResetTabHead();
40 int i, sww = TILE_UNIT*14, swh = TILE_UNIT*8, gwh = ARROW_INTERFACE_HEIGHT;
41 ms_WindowPos[0][0] = g_DispWidth-sww-TILE_UNIT*3;
42 ms_WindowPos[0][1] = g_DispHeight-swh-TILE_UNIT;
43 ms_WindowPos[1][0] = TILE_UNIT;
44 ms_WindowPos[1][1] = g_DispHeight-gwh-swh-TILE_UNIT*2;
45 ms_RailWindow.Init(ms_WindowPos[0][0], ms_WindowPos[0][1],
46 sww, swh, lang(RailwayOption), NULL, true);
47 ms_PluginSetButton.Init(sww-TILE_UNIT*6-TILE_HALF, TILE_QUAD/2+TILE_UNIT,
48 TILE_UNIT*6, TILE_UNIT, lang(LoadSaveSettings), &ms_RailWindow);
49 ms_TypeLabel.Init(TILE_HALF, TILE_QUAD+TILE_UNIT,
50 sww-TILE_UNIT, TILE_UNIT, lang(BuildElement), &ms_RailWindow, 0, 1);
51 char *typelabel[6] = {
52 lang(Rail), lang(Tie), lang(Girder), lang(Pier), lang(Line), lang(Pole)};
53 bool setdefault[6] = {true, true, false, true, true, true};
54 for(i = 0; i<6; i++){
55 ms_Type[i].Init(TILE_HALF+(i%3)*(sww-TILE_QUAD*3)/3, TILE_QUAD+TILE_UNIT*(i/3+2),
56 (i+1)*(sww-TILE_QUAD*3)/3-i*(sww-TILE_QUAD*3)/3-TILE_QUAD, TILE_UNIT,
57 typelabel[i], &ms_RailWindow);
58 if(setdefault[i]) ms_Type[i].SetCheck(1);
59 }
60 int tw = sww-TILE_UNIT-TILE_HALF;
61 ms_EnableCant.Init(TILE_HALF, TILE_QUAD+TILE_UNIT*4,
62 tw/2, TILE_UNIT, lang(Cant), &ms_RailWindow);
63 ms_LiftRailSurface.Init(tw/2+TILE_HALF, TILE_QUAD+TILE_UNIT*4,
64 tw-tw/2, TILE_UNIT, lang(AltOffset), &ms_RailWindow);
65 ms_EnableCant.SetCheck(1);
66 ms_LiftRailSurface.SetCheck(1);
67 ms_MultiTrackLabel.Init(TILE_HALF, TILE_QUAD+TILE_UNIT*5,
68 sww-TILE_UNIT, TILE_UNIT, lang(MultiTrackOption), &ms_RailWindow, 0, 1);
69 ms_MultiTrackCheck.Init(TILE_HALF, TILE_QUAD+TILE_UNIT*6,
70 TILE_UNIT*4, TILE_UNIT, lang(Enabled), &ms_RailWindow);
71 ms_TrackNumLabel.Init(TILE_HALF*2+TILE_UNIT*4, TILE_QUAD+TILE_UNIT*6,
72 TILE_UNIT*2, TILE_UNIT, lang(TrNum), &ms_RailWindow, 0, 1);
73 ms_TrackNumEdit.Init(TILE_HALF*2+TILE_UNIT*6, TILE_QUAD+TILE_UNIT*6,
74 TILE_UNIT*2, TILE_UNIT, "2", &ms_RailWindow, 3);
75 ms_TrackIntLabel.Init(TILE_HALF+TILE_UNIT*9, TILE_QUAD+TILE_UNIT*6,
76 TILE_UNIT*2, TILE_UNIT, lang(Itv), &ms_RailWindow, 0, 1);
77 ms_TrackIntEdit.Init(TILE_HALF+TILE_UNIT*11, TILE_QUAD+TILE_UNIT*6,
78 TILE_UNIT*2, TILE_UNIT, "4.00", &ms_RailWindow, 6);
79 ms_RailwayModeCamera.Init(20.0f, 2.0f, 200.0f, false);
80 }
81
82 /*
83 * [static]
84 * ŠeŽíƒvƒ‰ƒOƒCƒ“ ON/OFF Žć“ž
85 */
86 void CRailwayMode::GetPlugin(
87 CRailPlugin **b_rail, // ƒŒ[ƒ‹ƒvƒ‰ƒOƒCƒ“
88 CTiePlugin **b_tie, // ––Řƒvƒ‰ƒOƒCƒ“
89 CGirderPlugin **b_girder, // ‹´Œ…ƒvƒ‰ƒOƒCƒ“
90 CPierPlugin **b_pier, // ‹´‹rƒvƒ‰ƒOƒCƒ“
91 CLinePlugin **b_line, // ‰Ëüƒvƒ‰ƒOƒCƒ“
92 CPolePlugin **b_pole // ‰Ëü’Œƒvƒ‰ƒOƒCƒ“
93 ){
94 *b_rail = ms_Type[0].GetCheck() ? g_Rail : NULL;
95 *b_tie = ms_Type[1].GetCheck() ? g_Tie : NULL;
96 *b_girder = ms_Type[2].GetCheck() ? g_Girder : NULL;
97 *b_pier = ms_Type[3].GetCheck() ? g_Pier : NULL;
98 *b_line = ms_Type[4].GetCheck() ? g_Line : NULL;
99 *b_pole = ms_Type[5].GetCheck() ? g_Pole : NULL;
100 }
101
102 /*
103 * [static]
104 * ƒŒ[ƒ‹ŠÖ˜AƒIƒvƒVƒ‡ƒ“Ý’č
105 */
106 void CRailwayMode::SetRailwayOption(
107 bool rail, bool tie, bool girder, // on/off
108 bool pier, bool line, bool pole, // on/off
109 bool cant, // ƒJƒ“ƒgƒtƒ‰ƒO
110 bool lift, // •Ąüƒtƒ‰ƒO
111 bool multi, // •Ąüƒtƒ‰ƒO
112 int tnum, // ‹O“š”
113 float tint // ‹O“šŠÔŠu
114 ){
115 ms_Type[0].SetCheck(rail); ms_Type[1].SetCheck(tie); ms_Type[2].SetCheck(girder);
116 ms_Type[3].SetCheck(pier); ms_Type[4].SetCheck(line); ms_Type[5].SetCheck(pole);
117 ms_EnableCant.SetCheck(cant);
118 ms_LiftRailSurface.SetCheck(lift);
119 ms_MultiTrackCheck.SetCheck(multi);
120 ms_TrackNumEdit.SetText(FlashIn("%d", tnum));
121 ms_TrackIntEdit.SetText(FlashIn("%.2f", tint));
122 }
123
124 /*
125 * [static]
126 * Ý’č“Ǎž
127 */
128 char *CRailwayMode::LoadRailwaySetting(
129 char *str // ‘ÎŰ•śŽš—ń
130 ){
131 char *eee;
132 int tnum;
133 float tint;
134 bool type[6], cant, lift, multi;
135 if(!(str = BeginBlock(eee = str, "RailwayMode"))) throw CSynErr(eee);
136 if(!(str = AsgnYesNo(eee = str, "RailCheck", &type[0]))) throw CSynErr(eee);
137 if(!(str = AsgnYesNo(eee = str, "TieCheck", &type[1]))) throw CSynErr(eee);
138 if(!(str = AsgnYesNo(eee = str, "GirderCheck", &type[2]))) throw CSynErr(eee);
139 if(!(str = AsgnYesNo(eee = str, "PierCheck", &type[3]))) throw CSynErr(eee);
140 if(!(str = AsgnYesNo(eee = str, "LineCheck", &type[4]))) throw CSynErr(eee);
141 if(!(str = AsgnYesNo(eee = str, "PoleCheck", &type[5]))) throw CSynErr(eee);
142 if(!(str = AsgnYesNo(eee = str, "EnableCant", &cant))) throw CSynErr(eee);
143 if(!(str = AsgnYesNo(eee = str, "LiftRailSurface", &lift))) throw CSynErr(eee);
144 if(!(str = AsgnYesNo(eee = str, "MultiTrack", &multi))) throw CSynErr(eee);
145 if(!(str = AsgnInteger(eee = str, "TrackNum", &tnum))) throw CSynErr(eee);
146 if(!(str = AsgnFloat(eee = str, "TrackInterval", &tint))) throw CSynErr(eee);
147 SetRailwayOption(type[0], type[1], type[2], type[3], type[4], type[5],
148 cant, lift, multi, tnum, tint);
149 if(!(str = EndBlock(eee = str))) throw CSynErr(eee, ERR_ENDBLOCK);
150 return str;
151 }
152
153 /*
154 * [static]
155 * Ý’č•Ű‘ś
156 */
157 void CRailwayMode::SaveRailwaySetting(
158 FILE *file // ƒtƒ@ƒCƒ‹
159 ){
160 fprintf(file, "RailwayMode{\n");
161 fprintf(file, "\tRailCheck = %s;\n", YESNO[ms_Type[0].GetCheck()]);
162 fprintf(file, "\tTieCheck = %s;\n", YESNO[ms_Type[1].GetCheck()]);
163 fprintf(file, "\tGirderCheck = %s;\n", YESNO[ms_Type[2].GetCheck()]);
164 fprintf(file, "\tPierCheck = %s;\n", YESNO[ms_Type[3].GetCheck()]);
165 fprintf(file, "\tLineCheck = %s;\n", YESNO[ms_Type[4].GetCheck()]);
166 fprintf(file, "\tPoleCheck = %s;\n", YESNO[ms_Type[5].GetCheck()]);
167 fprintf(file, "\tEnableCant = %s;\n", YESNO[ms_EnableCant.GetCheck()]);
168 fprintf(file, "\tLiftRailSurface = %s;\n", YESNO[ms_LiftRailSurface.GetCheck()]);
169 fprintf(file, "\tMultiTrack = %s;\n", YESNO[ms_MultiTrackCheck.GetCheck()]);
170 fprintf(file, "\tTrackNum = %d;\n", GetTrackNum());
171 fprintf(file, "\tTrackInterval = %f;\n", GetTrackInterval());
172 fprintf(file, "}\n\n");
173 }
174
175 /*
176 * [static]
177 * ƒ‚[ƒh‚đ—LŒř‰ť
178 */
179 void CRailwayMode::EnterRailway(
180 int type // ƒ^ƒCƒv (0: interface, 1: scenery)
181 ){
182 ms_WindowPos[ms_CurrentType][0] = ms_RailWindow.GetPosX();
183 ms_WindowPos[ms_CurrentType][1] = ms_RailWindow.GetPosY();
184 ms_CurrentType = type;
185 ms_RailWindow.SetPos(ms_WindowPos[ms_CurrentType][0], ms_WindowPos[ms_CurrentType][1]);
186 ms_RailWindow.SetColor(0xffffffff);
187 }
188
189 /*
190 * [static]
191 * “ü—̓`ƒFƒbƒN
192 */
193 void CRailwayMode::ScanInputRailway(){
194 if(ms_PluginSetButton.IsPushed()){
195 ms_PluginSetButton.SetPush(false);
196 POINT pos = g_Cursor.GetPos();
197 g_RailwayPluginSetMenu->Popup(pos.x, pos.y);
198 }
199 }
200
201 /*
202 * [static]
203 * “ü—̓`ƒFƒbƒN
204 */
205 void CRailwayMode::ReformEditValue(){
206 ms_TrackNum = GetTrackNum();
207 ms_TrackNumEdit.SetText(FlashIn("%d", ms_TrackNum));
208 ms_TrackInterval = GetTrackInterval();
209 ms_TrackIntEdit.SetText(FlashIn("%.2f", ms_TrackInterval));
210 if(!ms_MultiTrackCheck.GetCheck()) ms_TrackNum = 1;
211 }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26