forked from gameplay3d/gameplay
-
Notifications
You must be signed in to change notification settings - Fork 0
/
gameplay-newproject.bat
271 lines (241 loc) · 7.72 KB
/
gameplay-newproject.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
@echo off
REM ********************************************************************
REM
REM generate-project.bat
REM
REM This windows batch script generates a set of gameplay project files.
REM The new project will be based of the gameplay-template project and
REM it will be generated with the name and location that is specified
REM as input parameters.
REM
REM IMPORTANT: This script must be run from the root of the gameplay
REM source tree.
REM
REM ********************************************************************
echo.
echo 1. Enter a name for the new project.
echo.
echo This name will be given to the project
echo executable and a folder with this name
echo will be created to store all project files.
echo.
set /p projName=Project name:
if "%projName%" == "" (
echo.
echo ERROR: No project name specified.
echo.
pause
goto done
)
echo.
echo.
echo 2. Enter a game title.
echo.
echo On some platforms, this title is used to
echo identify the game during installation and
echo on shortcuts/icons.
echo.
set /p title=Title:
if "%title%" == "" (
echo.
echo ERROR: No game title specified.
echo.
pause
goto done
)
echo.
echo.
echo 3. Enter a short game description.
echo.
set /p desc=Description:
if "%desc%" == "" (
set desc=%title%
)
echo.
echo.
echo 4. Enter a unique identifier for your project.
echo.
echo This should be a human readable package name,
echo containing at least two words separated by a
echo period (eg. com.surname.gamename).
echo.
set /p uuid=Unique ID:
if "%uuid%" == "" (
echo.
echo ERROR: No uuid specified.
echo.
pause
goto done
)
echo.
echo.
echo 5. Enter author name.
echo.
echo On BlackBerry targets, this is used for
echo signing and must match the developer name
echo of your development certificate.
echo.
set /p author=Author:
if "%author%" == "" (
echo.
echo ERROR: No author specified.
echo.
pause
goto done
)
echo.
echo.
echo 6. Enter your game's main class name.
echo.
echo Your initial game header and source file
echo will be given this name and a class with
echo this name will be created in these files.
echo.
set /p className=Class name:
if "%className%" == "" (
echo.
echo ERROR: No class name specified.
echo.
pause
goto done
)
echo.
echo.
echo 7. Enter the project path.
echo.
echo This can be a relative path, absolute path,
echo or empty for the current folder. Note that
echo a project folder named %projName% will also
echo be created inside this folder.
echo.
set /p location=Path:
if "%location%" == "" (
set projPath=%projName%
) else (
set projPath=%location%\%projName%
)
echo.
call:replacevar projPath "/" "\"
REM Does this path already exist?
if exist %projPath% (
echo.
echo ERROR: Path '%projPath%' already exists, aborting.
echo.
pause
goto done
REM Disabling following code which prompts to overwrite existing path,
REM since this could be potentially damaging if the user specifies
REM an important path and then types 'y', without thinking.
REM
REM set /p owd=Directory '%projPath%' exists, overwrite [Y,N]?
REM if not "!owd!" == "Y" (
REM if not "!owd!" == "y" (
REM echo Aborting.
REM pause
REM goto done
REM )
REM )
REM rmdir /S /Q %projPath%
)
REM Generate relative path from project folder to GamePlay folder
set gpPath=%cd%
call:makerelative gpPath %projPath%\
call:replacevar gpPath "\" "/"
mkdir %projPath%
mkdir %projPath%\src
mkdir %projPath%\res
REM Copy Microsoft Visual Studio project files
copy gameplay-template\gameplay-template.vcxproj %projPath%\%projName%.vcxproj
call:replace %projPath%\%projName%.vcxproj TEMPLATE_PROJECT "%projName%"
call:replace %projPath%\%projName%.vcxproj TemplateGame "%className%"
call:replace %projPath%\%projName%.vcxproj GAMEPLAY_PATH "%gpPath%"
copy gameplay-template\gameplay-template.vcxproj.filters %projPath%\%projName%.vcxproj.filters
call:replace %projPath%\%projName%.vcxproj.filters TemplateGame "%className%"
copy gameplay-template\gameplay-template.vcxproj.user %projPath%\%projName%.vcxproj.user
call:replace %projPath%\%projName%.vcxproj.user GAMEPLAY_PATH "%gpPath%"
REM Copy Apple XCode project files
mkdir %projPath%\%projName%.xcodeproj
copy gameplay-template\gameplay-template.xcodeproj\project.pbxproj %projPath%\%projName%.xcodeproj\project.pbxproj
call:replace %projPath%\%projName%.xcodeproj\project.pbxproj GAMEPLAY_PATH "%gpPath%"
call:replace %projPath%\%projName%.xcodeproj\project.pbxproj TemplateGame "%className%"
call:replace %projPath%\%projName%.xcodeproj\project.pbxproj TEMPLATE_PROJECT "%projName%"
copy gameplay-template\gameplay-template-macos.plist %projPath%\%projName%-macos.plist
call:replace %projPath%\%projName%-macos.plist TEMPLATE_UUID "%uuid%"
call:replace %projPath%\%projName%-macos.plist TEMPLATE_AUTHOR "%author%"
REM Copy BlackBerry NDK project files
copy gameplay-template\template.cproject %projPath%\.cproject
call:replace %projPath%\.cproject TEMPLATE_PROJECT "%projName%"
call:replace %projPath%\.cproject TEMPLATE_UUID "%uuid%"
call:replace %projPath%\.cproject GAMEPLAY_PATH "%gpPath%"
copy gameplay-template\template.project %projPath%\.project
call:replace %projPath%\.project TEMPLATE_PROJECT "%projName%"
copy gameplay-template\template.bar-descriptor.xml %projPath%\bar-descriptor.xml
call:replace %projPath%\bar-descriptor.xml TEMPLATE_PROJECT "%projName%"
call:replace %projPath%\bar-descriptor.xml TEMPLATE_TITLE "%title%"
call:replace %projPath%\bar-descriptor.xml TEMPLATE_UUID "%uuid%"
call:replace %projPath%\bar-descriptor.xml TEMPLATE_AUTHOR "%author%"
call:replace %projPath%\bar-descriptor.xml TEMPLATE_DESCRIPTION "%desc%"
REM Copy source files
copy gameplay-template\src\TemplateGame.h %projPath%\src\%className%.h
copy gameplay-template\src\TemplateGame.cpp %projPath%\src\%className%.cpp
call:replace %projPath%\src\%className%.h TemplateGame "%className%"
call:replace %projPath%\src\%className%.cpp TemplateGame "%className%"
REM Copy resource files
copy gameplay-template\res\* %projPath%\res\
copy gameplay\res\shaders\colored.* %projPath%\res\
REM Copy icon
copy gameplay-template\icon.png %projPath%\icon.png
REM Open new project folder
start %projPath%
goto done
:replace
set rtemp=%1.rtemp
if exist %rtemp% del /Q %rtemp%
for /f "tokens=1* eol=€ delims=€]" %%j in ('type "%1" ^| find /V /N ""') do (
set line=%%k
setlocal EnableDelayedExpansion
if "!line!" == "" (
echo.>>%rtemp%
) else (
set linput=!line!
set loutput=!linput:%~2=%~3!
echo.!loutput!>>%rtemp%
)
endlocal
)
copy /Y %rtemp% %1
del /Q %rtemp%
exit /b
goto done
:replacevar
setlocal EnableDelayedExpansion
echo !%~1!>.replacevar.tmp
endlocal
call:replace .replacevar.tmp "%~2" "%~3"
set /p replaced=<.replacevar.tmp
set %~1=%replaced%
del /Q .replacevar.tmp
exit /b
goto done
:makerelative
setlocal EnableDelayedExpansion
set src=%~1
if defined %1 set src=!%~1!
set bas=%~2
if not defined bas set bas=%cd%
for /f "tokens=*" %%a in ("%src%") do set src=%%~fa
for /f "tokens=*" %%a in ("%bas%") do set bas=%%~fa
set mat=&rem variable to store matching part of the name
set upp=&rem variable to reference a parent
for /f "tokens=*" %%a in ('echo.%bas:\=^&echo.%') do (
set sub=!sub!%%a\
call set tmp=%%src:!sub!=%%
if "!tmp!" NEQ "!src!" (set mat=!sub!)ELSE (set upp=!upp!..\)
)
set src=%upp%!src:%mat%=!
( endlocal & REM RETURN VALUES
IF defined %1 (SET %~1=%src%) ELSE ECHO.%src%
)
exit /b
goto done
:done