using System; using System.Runtime.CompilerServices; using BansheeEngine; namespace BansheeEditor { /// /// Contains a list of valid platforms that can be built for. /// public enum PlatformType // Note: Must match C++ enum PlatformType { Windows, Count // Keep at end } /// /// Contains build data for a specific platform. /// public abstract class PlatformInfo : ScriptObject { /// /// Creates a new platform info. For internal runtime use only. /// protected PlatformInfo() { } /// /// Returns the platform that this object contains data for. /// public PlatformType Type { get { return Internal_GetType(mCachedPtr); } } /// /// A set of semicolon separated defines to use when compiling scripts for this platform. /// public string Defines { get { return Internal_GetDefines(mCachedPtr); } set { Internal_SetDefines(mCachedPtr, value); } } [MethodImpl(MethodImplOptions.InternalCall)] private static extern PlatformType Internal_GetType(IntPtr thisPtr); [MethodImpl(MethodImplOptions.InternalCall)] private static extern string Internal_GetDefines(IntPtr thisPtr); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_SetDefines(IntPtr thisPtr, string value); } /// /// Supported icon sizes for Windows platform. /// public enum WinIconSizes { Icon16 = 16, Icon32 = 32, Icon48 = 48, Icon64 = 64, Icon96 = 96, Icon128 = 128, Icon196 = 196, Icon256 = 256 } /// /// Platform data specific to Windows. /// public class WinPlatformInfo : PlatformInfo { /// /// Determines should the executable be 32 or 64-bit. /// public bool Is32Bit { get { return Internal_GetIs32Bit(mCachedPtr); } set { Internal_SetIs32Bit(mCachedPtr, value); } } /// /// Returns a texture of a specific icon size that will be added to the executable. /// /// Type of icon to retrieve the texture for. /// Texture for the specified icon size. public Texture2D GetIcon(WinIconSizes size) { return Internal_GetIcon(mCachedPtr, (int)size); } /// /// Sets a texture of a specific icon size that will be added to the executable. /// /// Type of icon to set the texture for. /// Texture for the specified icon size. public void SetIcon(WinIconSizes size, Texture2D texture) { IntPtr texturePtr = IntPtr.Zero; if (texture != null) texturePtr = texture.GetCachedPtr(); Internal_SetIcon(mCachedPtr, (int)size, texturePtr); } [MethodImpl(MethodImplOptions.InternalCall)] private static extern bool Internal_GetIs32Bit(IntPtr thisPtr); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_SetIs32Bit(IntPtr thisPtr, bool value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern Texture2D Internal_GetIcon(IntPtr thisPtr, int size); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_SetIcon(IntPtr thisPtr, int size, IntPtr texturePtr); } /// /// Handles building of the game executable and packaging of all necessary resources, making the game be ready to ran /// as a standalone product. /// public static class BuildManager { /// /// Returns a list of all available platforms that can be built for. /// public static PlatformType[] AvailablePlatforms { get { return Internal_GetAvailablePlatforms(); } } /// /// Returns the currently active platform. /// public static PlatformType ActivePlatform { get { return Internal_GetActivePlatform(); } set { Internal_SetActivePlatform(value); } } /// /// Returns the data about the currently active platform. /// public static PlatformInfo ActivePlatformInfo { get { return Internal_GetActivePlatformInfo(); } } /// /// Builds the executable and packages the game. /// public static void Build() { // TODO } /// /// Returns a list of .NET framework managed assemblies to be included for the specified platform. /// /// Platform type to retrieve the list of assemblies for. /// A list of .NET framework managed assemblies that will be included with the build. internal static string[] GetFrameworkAssemblies(PlatformType type) { return Internal_GetFrameworkAssemblies(type); } /// /// Returns the location of the executable for the provided platform. /// /// Platform type to retrieve the executable location for. /// Path to the executable in the editor install folder. internal static string GetMainExecutable(PlatformType type) { return Internal_GetMainExecutable(type); } /// /// Returns a list of semicolon separated defines that will be used when compiling scripts for the specified /// platform. /// /// Platfrom type to retrieve the defines for. /// Semicolor separated defines that will be passed along to the script compiler. internal static string GetDefines(PlatformType type) { return Internal_GetDefines(type); } /// /// Returns an object containing all platform specific build data. /// /// Platform type to retrieve the data for. /// An object containing all platform specific build data internal static PlatformInfo GetPlatformInfo(PlatformType type) { return Internal_GetPlatformInfo(type); } [MethodImpl(MethodImplOptions.InternalCall)] private static extern PlatformType[] Internal_GetAvailablePlatforms(); [MethodImpl(MethodImplOptions.InternalCall)] private static extern PlatformType Internal_GetActivePlatform(); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_SetActivePlatform(PlatformType value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern PlatformInfo Internal_GetActivePlatformInfo(); [MethodImpl(MethodImplOptions.InternalCall)] private static extern PlatformInfo Internal_GetPlatformInfo(PlatformType type); [MethodImpl(MethodImplOptions.InternalCall)] private static extern string[] Internal_GetFrameworkAssemblies(PlatformType type); [MethodImpl(MethodImplOptions.InternalCall)] private static extern string Internal_GetMainExecutable(PlatformType type); [MethodImpl(MethodImplOptions.InternalCall)] private static extern string Internal_GetDefines(PlatformType type); } }