Kaynağa Gözat

Buildproduct tweaks.

Mark Sibly 9 yıl önce
ebeveyn
işleme
2ceed441e0

+ 43 - 23
src/ted2/buildactions.monkey2

@@ -223,7 +223,6 @@ Class BuildActions
 	Field _androidTarget:CheckButton
 	Field _iosTarget:CheckButton
 	
-	Field _appFile:String
 	
 	Method BuildDoc:Monkey2Document()
 		
@@ -269,8 +268,6 @@ Class BuildActions
 	
 		ClearErrors()
 		
-		_appFile=""
-
 		_console.Clear()
 		
 		MainWindow.ShowBuildConsole( False )
@@ -301,7 +298,7 @@ Class BuildActions
 			
 			If stdout.StartsWith( "Application built:" )
 
-				_appFile=stdout.Slice( stdout.Find( ":" )+1 ).Trim()
+'				_appFile=stdout.Slice( stdout.Find( ":" )+1 ).Trim()
 			Else
 			
 				Local i:=stdout.Find( "] : Error : " )
@@ -336,35 +333,55 @@ Class BuildActions
 		
 		Return _console.ExitCode=0
 	End
+
+	Method BuildModules:Bool( clean:Bool,target:String )
 	
-	Method BuildModules:Bool( clean:Bool )
-	
-		Local target:=""
-		
-		Select TextDialog.Run( "Build Modules","Select target...",New String[]( "Desktop","Emscripten","Android","Cancel" ),0,3 )
-		Case 0 target="desktop"
-		Case 1 target="emscripten"
-		Case 2 target="android"
-		Default Return False
-		End
-	
-		Local n:=clean ? "Rebuilding" Else "Updating"
+		Local msg:=(clean ? "Rebuilding " Else "Updating ")+target
 		
 		For Local config:=0 Until 2
 		
-			Local t:=(config ? "debug" Else "release")
+			Local cfg:=(config ? "debug" Else "release")
 			
 			Local cmd:=_mx2cc+" makemods -target="+target
 			If clean cmd+=" -clean"
-			cmd+=" -config="+t
+			cmd+=" -config="+cfg
 			
-			If Not BuildMx2( cmd,n+" "+target+" "+t+" modules..." ) Return False
-
+			If Not BuildMx2( cmd,msg+" "+cfg+" modules..." ) Return False
 		Next
 		
 		Return True
 	End
 	
+	Method BuildModules:Bool( clean:Bool )
+	
+		Local target:=""
+		
+		Local result:=False
+		
+'		Select TextDialog.Run( "Build Modules","Select target...",New String[]( "Desktop","Emscripten","Android","iOS","All!","Cancel" ),0,5 )
+		Select TextDialog.Run( "Build Modules","Select target...",New String[]( "Desktop","Emscripten","Android","iOS","Cancel" ),0,4 )
+		Case 0 target="desktop"
+			result=BuildModules( clean,"desktop" )
+		Case 1 target="emscripten"
+			result=BuildModules( clean,"emscripten" )
+		Case 2 target="android"
+			result=BuildModules( clean,"android" )
+		Case 3 target="ios"
+			result=BuildModules( clean,"ios" )
+		Case 4
+			Return False
+'			result=BuildModules( clean,"desktop" ) And BuildModules( clean,"emscripten" ) And BuildModules( clean,"android" ) And BuildModules( clean,"ios" )
+		End
+		
+		If result
+			_console.Write( "~nBuild modules completed successfully!~n" )
+		Else
+			_console.Write( "~nBuild modules failed.~n" )
+		Endif
+		
+		Return result
+	End
+	
 	Method MakeDocs:Bool()
 	
 		Return BuildMx2( _mx2cc+" makedocs","Rebuilding documentation..." )
@@ -396,11 +413,14 @@ Class BuildActions
 		
 		If Not BuildMx2( cmd,msg ) Return False
 		
-		If Not run Or Not _appFile Return True
+		If Not run Return True
+		
+		Local exeFile:=product.GetExecutable()
+		If Not exeFile Return True
 		
 		Select target
 		Case "desktop"
-			_debugView.DebugApp( _appFile,config )
+			_debugView.DebugApp( exeFile,config )
 
 		Case "emscripten"	'cheese it for now...
 
@@ -413,7 +433,7 @@ Class BuildActions
 #else if __HOSTOS__="macos"
 			mserver="open ~q"+RealPath( "devtools/MonkeyXFree86c/bin/mserver_macos.app" )+"~q --args"
 #endif
-			_console.Run( mserver+" ~q"+_appFile+"~q" )
+			_console.Run( mserver+" ~q"+exeFile+"~q" )
 		End
 		
 		Return True

+ 99 - 28
src/ted2/buildproduct.monkey2

@@ -3,6 +3,11 @@ Namespace ted2
 
 Class BuildProduct
 
+	Property AppName:String()
+	
+		Return _appName
+	End
+
 	Property ProductDir:String()
 
 		Return _productDir
@@ -13,6 +18,11 @@ Class BuildProduct
 		Return OnGetMx2ccOpts()
 	End
 	
+	Method GetExecutable:String()
+	
+		Return OnGetExecutable()
+	End
+	
 	Function GetBuildProduct:BuildProduct( srcPath:String,target:String,edit:Bool )
 	
 		Local product:BuildProduct
@@ -68,17 +78,22 @@ Class BuildProduct
 	
 		_srcPath=srcPath
 		_target=target
+		_appName=StripDir( StripExt( srcPath ) ).Capitalize()
 		_productsDir=StripExt( _srcPath )+".products/"
-		_productDir=_productsDir+_target.Capitalize()+"/"
-
-'		AddVar( "Product Location",StripExt( srcPath )+".products/"+_target.Capitalize()+"/","directory" )
+		_productDir=_productsDir+(target="ios" ? "iOS" Else target.Capitalize())+"/"
+		
+		AddVar( "Application Name",_appName )
+	End
+	
+	Method OnCreateProduct() Virtual
 	End
 	
 	Method OnGetMx2ccOpts:String() Virtual
 		Return ""
 	End
 	
-	Method OnCreateProduct() Virtual
+	Method OnGetExecutable:String() Virtual
+		Return ""
 	End
 	
 	Method AddExts( exts:String[] )
@@ -163,6 +178,7 @@ Class BuildProduct
 
 	Field _srcPath:String
 	Field _target:String
+	Field _appName:String
 	Field _productDir:String
 	Field _productsDir:String
 	Field _exts:=New StringMap<Bool>
@@ -256,6 +272,8 @@ Class BuildProduct
 			Local id:=pvar.name.ToUpper().Replace( " ","_" )
 			_vars[id]=pvar.value
 		Next
+		
+		_appName=GetVar( "APPLICATION_NAME" )
 	End
 	
 	Method SaveVars()
@@ -288,7 +306,6 @@ Class DesktopProduct Extends BuildProduct
 	Method New( srcPath:String,target:String )
 		Super.New( srcPath,target )
 		
-		AddVar( "Application Name","Monkey 2 Game" )
 		AddVar( "Application Type","gui","options:gui|console" )
 	End
 	
@@ -296,19 +313,15 @@ Class DesktopProduct Extends BuildProduct
 
 	Method OnCreateProduct() Override
 	
-		Local appName:=GetVar( "APPLICATION_NAME" )
-		Local appType:=GetVar( "APPLICATION_TYPE" )
-		
 		CreateDir( ProductDir+"assets" )
 	End
 	
 	Method OnGetMx2ccOpts:String() Override
 
-		Local appName:=GetVar( "APPLICATION_NAME" )
 		Local appType:=GetVar( "APPLICATION_TYPE" )
 		
 		Local opts:=""
-		opts+=" ~q-product="+ProductDir+appName+"~q"
+		opts+=" ~q-product="+ProductDir+AppName+"~q"
 		opts+=" -apptype="+appType
 		
 		Return opts
@@ -322,11 +335,28 @@ Class WindowsProduct Extends DesktopProduct
 		Super.New( srcPath,"windows" )
 	End
 
+	Method OnGetMx2ccOpts:String() Override
+
+		Local appType:=GetVar( "APPLICATION_TYPE" )
+		
+		Local opts:=""
+		opts+=" ~q-product="+ProductDir+AppName+"~q"
+		opts+=" -apptype="+appType
+		
+		Return opts
+	End
+	
+	Method OnGetExecutable:String() Override
+
+		Return ProductDir+AppName+".exe"
+	End
+
 End
 
 Class MacosProduct Extends DesktopProduct
 
 	Method New( srcPath:String )
+
 		Super.New( srcPath,"macos" )
 	End
 	
@@ -341,8 +371,7 @@ Class MacosProduct Extends DesktopProduct
 			Return
 		Endif
 
-		Local appName:=GetVar( "APPLICATION_NAME" )
-		Local appDir:=ProductDir+appName+".app/"
+		Local appDir:=ProductDir+AppName+".app/"
 
 		CreateDir( appDir )
 		CreateDir( appDir+"Contents" )
@@ -355,9 +384,9 @@ Class MacosProduct Extends DesktopProduct
 		plist+="<plist version=~q1.0~q>~n"
 		plist+="<dict>~n"
 		plist+="~t<key>CFBundleExecutable</key>~n"
-		plist+="~t<string>"+appName+"</string>~n"
+		plist+="~t<string>"+AppName+"</string>~n"
 		plist+="~t<key>CFBundleIconFile</key>~n"
-		plist+="~t<string>"+appName+"</string>~n"
+		plist+="~t<string>"+AppName+"</string>~n"
 		plist+="~t<key>CFBundlePackageType</key>~n"
 		plist+="~t<string>APPL</string>~n"
 		plist+="</dict>~n"
@@ -365,6 +394,15 @@ Class MacosProduct Extends DesktopProduct
 					
 		SaveString( plist,appDir+"Contents/Info.plist" )
 	End
+	
+	Method OnGetExecutable:String() Override
+
+		Local appType:=GetVar( "APPLICATION_TYPE" )
+		
+		If appType<>"gui" Return ProductDir+AppName
+
+		Return ProductDir+AppName+".app/Contents/MacOS/"+AppName
+	End
 
 End
 
@@ -373,33 +411,54 @@ Class LinuxProduct Extends DesktopProduct
 	Method New( srcPath:String )
 		Super.New( srcPath,"linux" )
 	End
+
+	Protected
+	
+	Method OnGetExecutable:String() Override
+
+		Return ProductDir+AppName
+	End
+	
 End
 
 Class EmscriptenProduct Extends BuildProduct
 
 	Method New( srcPath:String )
 		Super.New( srcPath,"emscripten" )
+		
+		AddExts( New String[]( ".html" ) )
 
-		AddVar( "Application Name","Monkey 2 Game" )
 	End
 	
 	Protected
 	
 	Method OnCreateProduct() Override
 
-		Local appName:=GetVar( "APPLICATION_NAME" )
+		CopyTemplate( "products/emscripten",StripSlashes( ProductDir ) )
+		
+		CreateDir( ProductDir+"assets" )
+		
+		If AppName<>"Monkey2Game"
+		
+			CopyFile( ProductDir+"Monkey2Game.html",ProductDir+AppName+".html" )
+		
+			DeleteFile( ProductDir+"Monkey2Game.html" )
+		Endif
 	End
 	
 	Method OnGetMx2ccOpts:String() Override
 
-		Local appName:=GetVar( "APPLICATION_NAME" )
-	
 		Local opts:=""
-		opts+=" ~q-product="+ProductDir+appName+"~q"
+		opts+=" ~q-product="+ProductDir+AppName+".js~q"
 		
 		Return opts
 	End
 
+	Method OnGetExecutable:String() Override
+
+		Return ProductDir+AppName+".html"
+	
+	End
 End
 
 Class AndroidProduct Extends BuildProduct
@@ -409,25 +468,21 @@ Class AndroidProduct Extends BuildProduct
 		
 		AddExts( New String[]( ".xml",".java",".gradle" ) )
 		
-		AddVar( "Application Name","Monkey 2 Game" )
 		AddVar( "Package Name","com.monkey2.monkey2game" )
 		AddVar( "Activity Name","Monkey2Game" )
-		AddVar( "Screen Orientation","landscape","options:landscape|portrait|user" )
 	End
 
 	Protected
 	
 	Method OnCreateProduct() Override
 
-		Local appName:=GetVar( "APPLICATION_NAME" )
 		Local packageName:=GetVar( "PACKAGE_NAME" )
 		Local activityName:=GetVar( "ACTIVITY_NAME" )
-		Local screenOrientation:=GetVar( "SCREEN_ORIENTATION" )
 		
 		Local mainDir:=ProductDir+"app/src/main/"
 		Local packageDir:=mainDir+"java/"+packageName.Replace( ".","/" )+"/"
 		
-		CopyTemplate( "android/Monkey2Game",StripSlashes( ProductDir ) )
+		CopyTemplate( "products/android/Monkey2Game",StripSlashes( ProductDir ) )
 
 		CreateDir( packageDir )
 		CopyFile( mainDir+"Monkey2Game.java",packageDir+activityName+".java" )
@@ -438,8 +493,8 @@ Class AndroidProduct Extends BuildProduct
 	Method OnGetMx2ccOpts:String() Override
 
 		Local opts:=""
-		opts+=" -assets=~q"+ProductDir+"app/src/main/assets/~q"
-		opts+=" -dlls=~q"+ProductDir+"app/src/main/jniLibs/~q"
+		opts+=" ~q-assets="+ProductDir+"app/src/main/assets/~q"
+		opts+=" ~q-dlls="+ProductDir+"app/src/main/jniLibs/~q"
 		
 		Return opts
 	End
@@ -451,9 +506,25 @@ Class IosProduct Extends BuildProduct
 	Method New( srcPath:String )
 		Super.New( srcPath,"ios" )
 		
-		AddVar( "Application Name","Monkey 2 Game" )
+		AddExts( New String[]( ".pbxproj" ) )
+	End
+	
+	Method OnCreateProduct() Override
+
+		CopyTemplate( "products/ios",StripSlashes( ProductDir ) )
+		
+		If AppName<>"Monkey2Game"
+			libc.rename( ProductDir+"Monkey2Game.xcodeproj",ProductDir+AppName+".xcodeproj" )
+		Endif
+	End
+	
+	Method OnGetMx2ccOpts:String() Override
+	
+		Local opts:=""
+		opts+=" ~q-product="+ProductDir+"~q"
 		
-		AddVar( "Screen Orientation","landscape","options:landscape|portrait|user" )
+		Return opts
 	End
+	
 
 End

+ 7 - 3
src/ted2/debugview.monkey2

@@ -246,10 +246,10 @@ Class DebugView Extends DockingView
 								label+="="+value
 								scope=True
 							Else
-								label+="={null}"
+								label+="=Null"
 							Endif
-						endif
-					Endif
+						Endif
+					Endif					
 				Endif
 			Endif
 			
@@ -310,6 +310,8 @@ Class DebugView Extends DockingView
 		Next
 		
 		node.RemoveChildren( lines.Length )
+		
+		RequestRender()
 	End
 	
 	Method UpdateTree()
@@ -396,6 +398,8 @@ Class DebugView Extends DockingView
 		If func func.RemoveChildren( varIndex )
 		
 		root.RemoveChildren( funcIndex )
+		
+		RequestRender()
 	End
 	
 	Method DebugBegin()