diff options
author | Jakob Stendahl <JakobS1n@users.noreply.github.com> | 2017-10-14 23:17:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-14 23:17:09 +0200 |
commit | 8b2c937959c99ab2dfbc3eaf9dc5b9c18cf73371 (patch) | |
tree | b775b07054de58f83cd9df41bf43e61b3facfad1 /td/Assets | |
parent | 76cf99ade6530bdad81088295fb4cf73f5c5b118 (diff) | |
parent | abe835d1112e4804ce63b7d2fa85f8bd76e3c237 (diff) | |
download | TD-8b2c937959c99ab2dfbc3eaf9dc5b9c18cf73371.tar.gz TD-8b2c937959c99ab2dfbc3eaf9dc5b9c18cf73371.zip |
Merge pull request #4 from JakobS1n/GUI
Gui
Diffstat (limited to 'td/Assets')
138 files changed, 4351 insertions, 236 deletions
diff --git a/td/Assets/Fonts.meta b/td/Assets/Fonts.meta new file mode 100644 index 0000000..3ffcd9e --- /dev/null +++ b/td/Assets/Fonts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6ffa8b894699a4b62be2238b4c9c7180 +folderAsset: yes +timeCreated: 1506727606 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Fonts/Anders.ttf b/td/Assets/Fonts/Anders.ttf Binary files differnew file mode 100644 index 0000000..e0e966b --- /dev/null +++ b/td/Assets/Fonts/Anders.ttf diff --git a/td/Assets/Fonts/Anders.ttf.meta b/td/Assets/Fonts/Anders.ttf.meta new file mode 100644 index 0000000..b469692 --- /dev/null +++ b/td/Assets/Fonts/Anders.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 97652ce6089044ac3b826f360478a6ba +timeCreated: 1506727610 +licenseType: Free +TrueTypeFontImporter: + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontName: Anders + fontNames: + - Anders + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Fonts/Yikes_medium.ttf b/td/Assets/Fonts/Yikes_medium.ttf Binary files differnew file mode 100644 index 0000000..39ffa9f --- /dev/null +++ b/td/Assets/Fonts/Yikes_medium.ttf diff --git a/td/Assets/Fonts/Yikes_medium.ttf.meta b/td/Assets/Fonts/Yikes_medium.ttf.meta new file mode 100644 index 0000000..ab4537b --- /dev/null +++ b/td/Assets/Fonts/Yikes_medium.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 32d9c28ddca174f9e86208e6ee40c093 +timeCreated: 1506727616 +licenseType: Free +TrueTypeFontImporter: + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontName: Yikes + fontNames: + - Yikes + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Materials/Background.mat b/td/Assets/Materials/Background.mat Binary files differnew file mode 100644 index 0000000..b73e41d --- /dev/null +++ b/td/Assets/Materials/Background.mat diff --git a/td/Assets/Materials/Background.mat.meta b/td/Assets/Materials/Background.mat.meta new file mode 100644 index 0000000..ffd6ac0 --- /dev/null +++ b/td/Assets/Materials/Background.mat.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1cb44ffb536424e7ab24c785b7b624f0 +timeCreated: 1508014992 +licenseType: Free +NativeFormatImporter: + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Materials/Enemy Blue.mat b/td/Assets/Materials/Enemy Blue.mat Binary files differnew file mode 100644 index 0000000..2d93a92 --- /dev/null +++ b/td/Assets/Materials/Enemy Blue.mat diff --git a/td/Assets/Materials/Enemy Blue.mat.meta b/td/Assets/Materials/Enemy Blue.mat.meta new file mode 100644 index 0000000..ce1088a --- /dev/null +++ b/td/Assets/Materials/Enemy Blue.mat.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 99d8c34c82c6e4d65a56e7f1e729e4e1 +timeCreated: 1508012107 +licenseType: Free +NativeFormatImporter: + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Materials/Enemy one.mat b/td/Assets/Materials/Enemy one.mat Binary files differindex 22b9592..f1ab4ac 100644 --- a/td/Assets/Materials/Enemy one.mat +++ b/td/Assets/Materials/Enemy one.mat diff --git a/td/Assets/Materials/placementIndicatorDanger.mat b/td/Assets/Materials/placementIndicatorDanger.mat Binary files differnew file mode 100644 index 0000000..37e9e47 --- /dev/null +++ b/td/Assets/Materials/placementIndicatorDanger.mat diff --git a/td/Assets/Materials/placementIndicatorDanger.mat.meta b/td/Assets/Materials/placementIndicatorDanger.mat.meta new file mode 100644 index 0000000..ea86123 --- /dev/null +++ b/td/Assets/Materials/placementIndicatorDanger.mat.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fdaa960eb417543e29a712fa18d4a65f +timeCreated: 1507034809 +licenseType: Free +NativeFormatImporter: + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Materials/placementIndicatorSuccess.mat b/td/Assets/Materials/placementIndicatorSuccess.mat Binary files differnew file mode 100644 index 0000000..36c1413 --- /dev/null +++ b/td/Assets/Materials/placementIndicatorSuccess.mat diff --git a/td/Assets/Materials/placementIndicatorSuccess.mat.meta b/td/Assets/Materials/placementIndicatorSuccess.mat.meta new file mode 100644 index 0000000..6e21620 --- /dev/null +++ b/td/Assets/Materials/placementIndicatorSuccess.mat.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e03c0257685414ec9a62b58f6eb7dbde +timeCreated: 1507039389 +licenseType: Free +NativeFormatImporter: + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Materials/projectile.mat b/td/Assets/Materials/projectile.mat Binary files differnew file mode 100644 index 0000000..aa97624 --- /dev/null +++ b/td/Assets/Materials/projectile.mat diff --git a/td/Assets/Materials/projectile.mat.meta b/td/Assets/Materials/projectile.mat.meta new file mode 100644 index 0000000..86f15cd --- /dev/null +++ b/td/Assets/Materials/projectile.mat.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 83ba8edd0e67d40d49d0da9f29fb697b +timeCreated: 1507300359 +licenseType: Free +NativeFormatImporter: + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Plugins.meta b/td/Assets/Plugins.meta new file mode 100644 index 0000000..9f5adca --- /dev/null +++ b/td/Assets/Plugins.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fb5264dd1c52f48429aac93affb7b259 +folderAsset: yes +timeCreated: 1507403604 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Plugins/Editor.meta b/td/Assets/Plugins/Editor.meta new file mode 100644 index 0000000..a7793dd --- /dev/null +++ b/td/Assets/Plugins/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2a4d3360e5ae541efbf0c892fcfe9314 +folderAsset: yes +timeCreated: 1507403604 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Plugins/Editor/JetBrains.meta b/td/Assets/Plugins/Editor/JetBrains.meta new file mode 100644 index 0000000..01e6324 --- /dev/null +++ b/td/Assets/Plugins/Editor/JetBrains.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ee3d259c0e31346acbb8138c78ea81a9 +folderAsset: yes +timeCreated: 1507403604 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Plugins/Editor/JetBrains/Unity3DRider.cs b/td/Assets/Plugins/Editor/JetBrains/Unity3DRider.cs new file mode 100644 index 0000000..a87d402 --- /dev/null +++ b/td/Assets/Plugins/Editor/JetBrains/Unity3DRider.cs @@ -0,0 +1,1164 @@ +//------------------------------------------------------------------------------ +// <auto-generated> +// This code was generated by a tool. +// Version: 2.0.4.2575 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// </auto-generated> +//------------------------------------------------------------------------------ +using Application = UnityEngine.Application; +using Debug = UnityEngine.Debug; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Net; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text.RegularExpressions; +using System.Text; +using System.Xml.Linq; +using System; +using UnityEditor; +using UnityEngine; + +namespace Plugins.Editor.JetBrains +{ + public class RiderAssetPostprocessor : AssetPostprocessor + { + public static void OnGeneratedCSProjectFiles() + { + if (!RiderPlugin.Enabled) + return; + var currentDirectory = Directory.GetCurrentDirectory(); + var projectFiles = Directory.GetFiles(currentDirectory, "*.csproj"); + + foreach (var file in projectFiles) + { + UpgradeProjectFile(file); + } + + var slnFile = Directory.GetFiles(currentDirectory, "*.sln").First(); + RiderPlugin.Log(RiderPlugin.LoggingLevel.Verbose, string.Format("Post-processing {0}", slnFile)); + string content = File.ReadAllText(slnFile); + var lines = content.Split(new[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries); + var sb = new StringBuilder(); + foreach (var line in lines) + { + if (line.StartsWith("Project(")) + { + MatchCollection mc = Regex.Matches(line, "\"([^\"]*)\""); + //RiderPlugin.Log(RiderPlugin.LoggingLevel.Info, "mc[1]: "+mc[1].Value); + //RiderPlugin.Log(RiderPlugin.LoggingLevel.Info, "mc[2]: "+mc[2].Value); + var to = GetFileNameWithoutExtension(mc[2].Value.Substring(1, mc[2].Value.Length-1)); // remove quotes + //RiderPlugin.Log(RiderPlugin.LoggingLevel.Info, "to:" + to); + //RiderPlugin.Log(RiderPlugin.LoggingLevel.Info, line); + var newLine = line.Substring(0, mc[1].Index + 1) + to + line.Substring(mc[1].Index + mc[1].Value.Length - 1); + sb.Append(newLine); + //RiderPlugin.Log(RiderPlugin.LoggingLevel.Info, newLine); + } + else + { + sb.Append(line); + } + sb.Append(Environment.NewLine); + } + File.WriteAllText(slnFile, sb.ToString()); + } + + private static string GetFileNameWithoutExtension(string path) + { + if (string.IsNullOrEmpty(path)) + return null; + int length; + return (length = path.LastIndexOf('.')) == -1 ? path : path.Substring(0, length); + } + + private static void UpgradeProjectFile(string projectFile) + { + RiderPlugin.Log(RiderPlugin.LoggingLevel.Verbose, string.Format("Post-processing {0}", projectFile)); + var doc = XDocument.Load(projectFile); + var projectContentElement = doc.Root; + XNamespace xmlns = projectContentElement.Name.NamespaceName; // do not use var + + FixTargetFrameworkVersion(projectContentElement, xmlns); + FixSystemXml(projectContentElement, xmlns); + SetLangVersion(projectContentElement, xmlns); + // Unity_5_6_OR_NEWER switched to nunit 3.5 + // Fix helps only for Windows, on mac and linux I get https://youtrack.jetbrains.com/issue/RSRP-459932 +#if UNITY_5_6_OR_NEWER && UNITY_STANDALONE_WIN + ChangeNunitReference(new FileInfo(projectFile).DirectoryName, projectContentElement, xmlns); +#endif + +#if !UNITY_2017_1_OR_NEWER // Unity 2017.1 and later has this features by itself + SetManuallyDefinedComilingSettings(projectFile, projectContentElement, xmlns); + SetXCodeDllReference("UnityEditor.iOS.Extensions.Xcode.dll", xmlns, projectContentElement); + SetXCodeDllReference("UnityEditor.iOS.Extensions.Common.dll", xmlns, projectContentElement); +#endif + doc.Save(projectFile); + } + + private static void FixSystemXml(XElement projectContentElement, XNamespace xmlns) + { + var el = projectContentElement + .Elements(xmlns+"ItemGroup") + .Elements(xmlns+"Reference") + .FirstOrDefault(a => a.Attribute("Include").Value=="System.XML"); + if (el != null) + { + el.Attribute("Include").Value = "System.Xml"; + } + } + + private static void ChangeNunitReference(string baseDir, XElement projectContentElement, XNamespace xmlns) + { + var el = projectContentElement + .Elements(xmlns+"ItemGroup") + .Elements(xmlns+"Reference") + .FirstOrDefault(a => a.Attribute("Include").Value=="nunit.framework"); + if (el != null) + { + var hintPath = el.Elements(xmlns + "HintPath").FirstOrDefault(); + if (hintPath != null) + { + string unityAppBaseFolder = Path.GetDirectoryName(EditorApplication.applicationPath); + var path = Path.Combine(unityAppBaseFolder, "Data/Managed/nunit.framework.dll"); + if (new FileInfo(path).Exists) + hintPath.Value = path; + } + } + } + +#if !UNITY_2017_1_OR_NEWER // Unity 2017.1 and later has this features by itself + private const string UNITY_PLAYER_PROJECT_NAME = "Assembly-CSharp.csproj"; + private const string UNITY_EDITOR_PROJECT_NAME = "Assembly-CSharp-Editor.csproj"; + private const string UNITY_UNSAFE_KEYWORD = "-unsafe"; + private const string UNITY_DEFINE_KEYWORD = "-define:"; + private const string PLAYER_PROJECT_MANUAL_CONFIG_RELATIVE_FILE_PATH = "smcs.rsp"; + private static readonly string PLAYER_PROJECT_MANUAL_CONFIG_ABSOLUTE_FILE_PATH = Path.Combine(UnityEngine.Application.dataPath, PLAYER_PROJECT_MANUAL_CONFIG_RELATIVE_FILE_PATH); + private const string EDITOR_PROJECT_MANUAL_CONFIG_RELATIVE_FILE_PATH = "gmcs.rsp"; + private static readonly string EDITOR_PROJECT_MANUAL_CONFIG_ABSOLUTE_FILE_PATH = Path.Combine(UnityEngine.Application.dataPath, EDITOR_PROJECT_MANUAL_CONFIG_RELATIVE_FILE_PATH); + + private static void SetManuallyDefinedComilingSettings(string projectFile, XElement projectContentElement, XNamespace xmlns) + { + string configPath; + + if (IsPlayerProjectFile(projectFile)) + configPath = PLAYER_PROJECT_MANUAL_CONFIG_ABSOLUTE_FILE_PATH; + else if (IsEditorProjectFile(projectFile)) + configPath = EDITOR_PROJECT_MANUAL_CONFIG_ABSOLUTE_FILE_PATH; + else + configPath = null; + + if(!string.IsNullOrEmpty(configPath)) + ApplyManualCompilingSettings(configPath + , projectContentElement + , xmlns); + } + + private static void ApplyManualCompilingSettings(string configFilePath, XElement projectContentElement, XNamespace xmlns) + { + if (File.Exists(configFilePath)) + { + var configText = File.ReadAllText(configFilePath); + if (configText.Contains(UNITY_UNSAFE_KEYWORD)) + { + // Add AllowUnsafeBlocks to the .csproj. Unity doesn't generate it (although VSTU does). + // Strictly necessary to compile unsafe code + ApplyAllowUnsafeBlocks(projectContentElement, xmlns); + } + if (configText.Contains(UNITY_DEFINE_KEYWORD)) + { + // defines could be + // 1) -define:DEFINE1,DEFINE2 + // 2) -define:DEFINE1;DEFINE2 + // 3) -define:DEFINE1 -define:DEFINE2 + // 4) -define:DEFINE1,DEFINE2;DEFINE3 + // tested on "-define:DEF1;DEF2 -define:DEF3,DEF4;DEFFFF \n -define:DEF5" + // result: DEF1, DEF2, DEF3, DEF4, DEFFFF, DEF5 + + var definesList = new List<string>(); + var compileFlags = configText.Split(' ', '\n'); + foreach (var flag in compileFlags) + { + var f = flag.Trim(); + if (f.Contains(UNITY_DEFINE_KEYWORD)) + { + var defineEndPos = f.IndexOf(UNITY_DEFINE_KEYWORD) + UNITY_DEFINE_KEYWORD.Length; + var definesSubString = f.Substring(defineEndPos,f.Length - defineEndPos); + definesSubString = definesSubString.Replace(";", ","); + definesList.AddRange(definesSubString.Split(',')); + } + } + + ApplyCustomDefines(definesList.ToArray(), projectContentElement, xmlns); + } + } + } + + private static void ApplyCustomDefines(string[] customDefines, XElement projectContentElement, XNamespace xmlns) + { + var definesString = string.Join(";", customDefines); + + var DefineConstants = projectContentElement + .Elements(xmlns+"PropertyGroup") + .Elements(xmlns+"DefineConstants") + .FirstOrDefault(definesConsts=> !string.IsNullOrEmpty(definesConsts.Value)); + + if (DefineConstants != null) + { + DefineConstants.SetValue(DefineConstants.Value + ";" + definesString); + } + } + + private static void ApplyAllowUnsafeBlocks(XElement projectContentElement, XNamespace xmlns) + { + projectContentElement.AddFirst( + new XElement(xmlns + "PropertyGroup", new XElement(xmlns + "AllowUnsafeBlocks", true))); + } + + private static bool IsPlayerProjectFile(string projectFile) + { + return Path.GetFileName(projectFile) == UNITY_PLAYER_PROJECT_NAME; + } + + private static bool IsEditorProjectFile(string projectFile) + { + return Path.GetFileName(projectFile) == UNITY_EDITOR_PROJECT_NAME; + } + + private static void SetXCodeDllReference(string name, XNamespace xmlns, XElement projectContentElement) + { + string unityAppBaseFolder = Path.GetDirectoryName(EditorApplication.applicationPath); + + var xcodeDllPath = Path.Combine(unityAppBaseFolder, Path.Combine("Data/PlaybackEngines/iOSSupport", name)); + if (!File.Exists(xcodeDllPath)) + xcodeDllPath = Path.Combine(unityAppBaseFolder, Path.Combine("PlaybackEngines/iOSSupport", name)); + + if (File.Exists(xcodeDllPath)) + { + var itemGroup = new XElement(xmlns + "ItemGroup"); + var reference = new XElement(xmlns + "Reference"); + reference.Add(new XAttribute("Include", Path.GetFileNameWithoutExtension(xcodeDllPath))); + reference.Add(new XElement(xmlns + "HintPath", xcodeDllPath)); + itemGroup.Add(reference); + projectContentElement.Add(itemGroup); + } + } +#endif + // Helps resolve System.Linq under mono 4 - RIDER-573 + private static void FixTargetFrameworkVersion(XElement projectElement, XNamespace xmlns) + { + var targetFrameworkVersion = projectElement.Elements(xmlns + "PropertyGroup") + .Elements(xmlns + "TargetFrameworkVersion") + .FirstOrDefault(); // Processing csproj files, which are not Unity-generated #56 + if (targetFrameworkVersion != null) + { + targetFrameworkVersion.SetValue("v"+RiderPlugin.TargetFrameworkVersion); + } + } + + private static void SetLangVersion(XElement projectElement, XNamespace xmlns) + { + // Add LangVersion to the .csproj. Unity doesn't generate it (although VSTU does). + // Not strictly necessary, as the Unity plugin for Rider will work it out, but setting + // it makes Rider work if it's not installed. + var langVersion = projectElement.Elements(xmlns + "PropertyGroup").Elements(xmlns + "LangVersion") + .FirstOrDefault(); // Processing csproj files, which are not Unity-generated #56 + if (langVersion != null) + { + langVersion.SetValue(GetLanguageLevel()); + } + else + { + projectElement.AddFirst(new XElement(xmlns + "PropertyGroup", + new XElement(xmlns + "LangVersion", GetLanguageLevel()))); + } + } + + private static string GetLanguageLevel() + { + // https://bitbucket.org/alexzzzz/unity-c-5.0-and-6.0-integration/src + if (Directory.Exists(Path.Combine(Directory.GetCurrentDirectory(), "CSharp70Support"))) + return "7"; + if (Directory.Exists(Path.Combine(Directory.GetCurrentDirectory(), "CSharp60Support"))) + return "6"; + + // Unity 5.5 supports C# 6, but only when targeting .NET 4.6. The enum doesn't exist pre Unity 5.5 +#if !UNITY_5_6_OR_NEWER + if ((int)PlayerSettings.apiCompatibilityLevel >= 3) + #else + if ((int) PlayerSettings.GetApiCompatibilityLevel(EditorUserBuildSettings.selectedBuildTargetGroup) >= 3) +#endif + return "6"; + + return "4"; + } + } +} + +namespace Plugins.Editor.JetBrains +{ + [InitializeOnLoad] + public static class RiderPlugin + { + private static bool Initialized; + private static string SlnFile; + + public static void Log(LoggingLevel level, string initialText) + { + if (level < SelectedLoggingLevel) return; + + var text = "[Rider] [" + level + "] " + initialText; + + switch (level) + { + case LoggingLevel.Warning: + Debug.LogWarning(text); + break; + default: + Debug.Log(text); + break; + } + } + + private static string GetDefaultApp() + { + var alreadySetPath = GetExternalScriptEditor(); + if (!string.IsNullOrEmpty(alreadySetPath) && RiderPathExist(alreadySetPath)) + return alreadySetPath; + + return RiderPath; + } + + private static string[] GetAllRiderPaths() + { + switch (SystemInfoRiderPlugin.operatingSystemFamily) + { + case OperatingSystemFamily.Windows: + string[] folders = + { + @"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\JetBrains", Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), + @"Microsoft\Windows\Start Menu\Programs\JetBrains Toolbox") + }; + + var newPathLnks = folders.Select(b => new DirectoryInfo(b)).Where(a => a.Exists) + .SelectMany(c => c.GetFiles("*Rider*.lnk")).ToArray(); + if (newPathLnks.Any()) + { + var newPaths = newPathLnks + .Select(newPathLnk => new FileInfo(ShortcutResolver.Resolve(newPathLnk.FullName))) + .Where(fi => File.Exists(fi.FullName)) + .ToArray() + .OrderByDescending(fi => FileVersionInfo.GetVersionInfo(fi.FullName).ProductVersion) + .Select(a => a.FullName).ToArray(); + + return newPaths; + } + break; + + case OperatingSystemFamily.MacOSX: + // "/Applications/*Rider*.app" + //"~/Applications/JetBrains Toolbox/*Rider*.app" + string[] foldersMac = + { + "/Applications", Path.Combine(Environment.GetEnvironmentVariable("HOME"), "Applications/JetBrains Toolbox") + }; + var newPathsMac = foldersMac.Select(b => new DirectoryInfo(b)).Where(a => a.Exists) + .SelectMany(c => c.GetDirectories("*Rider*.app")) + .Select(a => a.FullName).ToArray(); + return newPathsMac; + } + return new string[0]; + } + + private static string TargetFrameworkVersionDefault + { + get + { + var defaultValue = "4.5"; + if (SystemInfoRiderPlugin.operatingSystemFamily == OperatingSystemFamily.Windows) + { + var dir = new DirectoryInfo(@"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework"); + if (dir.Exists) + { + var availableVersions = dir.GetDirectories("v*").Select(a => a.Name.Substring(1)) + .Where(v => TryCatch(v, s => { })).ToArray(); + if (availableVersions.Any() && !availableVersions.Contains(defaultValue)) + { + defaultValue = availableVersions.OrderBy(a => new Version(a)).Last(); + } + } + } + return defaultValue; + } + } + + public static string TargetFrameworkVersion + { + get + { + return EditorPrefs.GetString("Rider_TargetFrameworkVersion", + EditorPrefs.GetBool("Rider_TargetFrameworkVersion45", true) ? TargetFrameworkVersionDefault : "3.5"); + } + set + { + TryCatch(value, val => + { + EditorPrefs.SetString("Rider_TargetFrameworkVersion", val); + }); + } + } + + private static bool TryCatch(string value, Action<string> action) + { + try + { + new Version(value); // mono 2.6 doesn't support Version.TryParse + action(value); + return true; + } + catch (ArgumentException) + { + } // can't put loggin here because ot fire on every symbol + catch (FormatException) + { + } + return false; + } + + public static string RiderPath + { + get { return EditorPrefs.GetString("Rider_RiderPath", GetAllRiderPaths().FirstOrDefault()); } + set { EditorPrefs.SetString("Rider_RiderPath", value); } + } + + public enum LoggingLevel + { + Verbose = 0, + Info = 1, + Warning = 2 + } + + public static LoggingLevel SelectedLoggingLevel + { + get { return (LoggingLevel) EditorPrefs.GetInt("Rider_SelectedLoggingLevel", 1); } + set { EditorPrefs.SetInt("Rider_SelectedLoggingLevel", (int) value); } + } + + public static bool RiderInitializedOnce + { + get { return EditorPrefs.GetBool("RiderInitializedOnce", false); } + set { EditorPrefs.SetBool("RiderInitializedOnce", value); } + } + + internal static bool Enabled + { + get + { + var defaultApp = GetExternalScriptEditor(); + return !string.IsNullOrEmpty(defaultApp) && Path.GetFileName(defaultApp).ToLower().Contains("rider"); + } + } + + static RiderPlugin() + { + var riderPath = GetDefaultApp(); + if (!RiderPathExist(riderPath)) + return; + + AddRiderToRecentlyUsedScriptApp(riderPath, "RecentlyUsedScriptApp"); + if (!RiderInitializedOnce) + { + SetExternalScriptEditor(riderPath); + RiderInitializedOnce = true; + } + if (Enabled) + { + InitRiderPlugin(); + } + } + + private static void InitRiderPlugin() + { + var projectDirectory = Directory.GetParent(Application.dataPath).FullName; + + var projectName = Path.GetFileName(projectDirectory); + SlnFile = Path.Combine(projectDirectory, string.Format("{0}.sln", projectName)); + + InitializeEditorInstanceJson(projectDirectory); + + Log(LoggingLevel.Info, "Rider plugin initialized. You may change the amount of Rider Debug output via Edit -> Preferences -> Rider -> Logging Level"); + Initialized = true; + } + + private static void AddRiderToRecentlyUsedScriptApp(string userAppPath, string recentAppsKey) + { + for (int index = 0; index < 10; ++index) + { + string path = EditorPrefs.GetString(recentAppsKey + (object) index); + if (File.Exists(path) && Path.GetFileName(path).ToLower().Contains("rider")) + return; + } + EditorPrefs.SetString(recentAppsKey + 9, userAppPath); + } + + private static string GetExternalScriptEditor() + { + return EditorPrefs.GetString("kScriptsDefaultApp"); + } + + private static void SetExternalScriptEditor(string path) + { + EditorPrefs.SetString("kScriptsDefaultApp", path); + } + + private static bool RiderPathExist(string path) + { + if (string.IsNullOrEmpty(path)) + return false; + // windows or mac + var fileInfo = new FileInfo(path); + if (!fileInfo.Name.ToLower().Contains("rider")) + return false; + var directoryInfo = new DirectoryInfo(path); + return fileInfo.Exists || (SystemInfoRiderPlugin.operatingSystemFamily == OperatingSystemFamily.MacOSX && + directoryInfo.Exists); + } + + /// <summary> + /// Creates and deletes Library/EditorInstance.json containing version and process ID + /// </summary> + /// <param name="projectDirectory">Path to the project root directory</param> + private static void InitializeEditorInstanceJson(string projectDirectory) + { + // Only manage EditorInstance.json for 4.x and 5.x - it's a native feature for 2017.x +#if !UNITY_2017_1_OR_NEWER + Log(LoggingLevel.Verbose, "Writing Library/EditorInstance.json"); + + var library = Path.Combine(projectDirectory, "Library"); + var editorInstanceJsonPath = Path.Combine(library, "EditorInstance.json"); + + File.WriteAllText(editorInstanceJsonPath, string.Format(@"{{ + ""process_id"": {0}, + ""version"": ""{1}"" +}}", Process.GetCurrentProcess().Id, Application.unityVersion)); + + AppDomain.CurrentDomain.DomainUnload += (sender, args) => + { + Log(LoggingLevel.Verbose, "Deleting Library/EditorInstance.json"); + File.Delete(editorInstanceJsonPath); + }; +#endif + } + + /// <summary> + /// Asset Open Callback (from Unity) + /// </summary> + /// <remarks> + /// Called when Unity is about to open an asset. + /// </remarks> + [UnityEditor.Callbacks.OnOpenAssetAttribute()] + static bool OnOpenedAsset(int instanceID, int line) + { + if (Enabled) + { + if (!Initialized) + { + // make sure the plugin was initialized first. + // this can happen in case "Rider" was set as the default scripting app only after this plugin was imported. + InitRiderPlugin(); + RiderAssetPostprocessor.OnGeneratedCSProjectFiles(); + } + + string appPath = Path.GetDirectoryName(Application.dataPath); + + // determine asset that has been double clicked in the project view + var selected = EditorUtility.InstanceIDToObject(instanceID); + + var assetFilePath = Path.Combine(appPath, AssetDatabase.GetAssetPath(selected)); + if (!(selected.GetType().ToString() == "UnityEditor.MonoScript" || + selected.GetType().ToString() == "UnityEngine.Shader" || + (selected.GetType().ToString() == "UnityEngine.TextAsset" && +#if UNITY_5 || UNITY_5_5_OR_NEWER + EditorSettings.projectGenerationUserExtensions.Contains(Path.GetExtension(assetFilePath).Substring(1)) +#else + EditorSettings.externalVersionControl.Contains(Path.GetExtension(assetFilePath).Substring(1)) +#endif + ))) + return false; + + SyncSolution(); // added to handle opening file, which was just recently created. + if (!DetectPortAndOpenFile(line, assetFilePath, + SystemInfoRiderPlugin.operatingSystemFamily == OperatingSystemFamily.Windows)) + { + var args = string.Format("{0}{1}{0} --line {2} {0}{3}{0}", "\"", SlnFile, line, assetFilePath); + return CallRider(args); + } + return true; + } + + return false; + } + + + private static bool DetectPortAndOpenFile(int line, string filePath, bool isWindows) + { + if (SystemInfoRiderPlugin.operatingSystemFamily == OperatingSystemFamily.Windows) + { + var process = GetRiderProcess(); + if (process == null) + return false; + } + + int[] ports = Enumerable.Range(63342, 20).ToArray(); + var res = ports.Any(port => + { + var aboutUrl = string.Format("http://localhost:{0}/api/about/", port); + var aboutUri = new Uri(aboutUrl); + + using (var client = new WebClient()) + { + client.Headers.Add("origin", string.Format("http://localhost:{0}", port)); + client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; + + try + { + var responce = CallHttpApi(aboutUri, client); + if (responce.ToLower().Contains("rider")) + { + return HttpOpenFile(line, filePath, isWindows, port, client); + } + } + catch (Exception e) + { + Log(LoggingLevel.Verbose, string.Format("Exception in DetectPortAndOpenFile: {0}", e)); + } + } + return false; + }); + return res; + } + + private static bool HttpOpenFile(int line, string filePath, bool isWindows, int port, WebClient client) + { + var url = string.Format("http://localhost:{0}/api/file?file={1}{2}", port, filePath, + line < 0 + ? "&p=0" + : "&line=" + line); // &p is needed to workaround https://youtrack.jetbrains.com/issue/IDEA-172350 + if (isWindows) + url = string.Format(@"http://localhost:{0}/api/file/{1}{2}", port, filePath, line < 0 ? "" : ":" + line); + + var uri = new Uri(url); + Log(LoggingLevel.Verbose, string.Format("HttpRequestOpenFile({0})", uri.AbsoluteUri)); + + CallHttpApi(uri, client); + ActivateWindow(); + return true; + } + + private static string CallHttpApi(Uri uri, WebClient client) + { + var responseString = client.DownloadString(uri.AbsoluteUri); + Log(LoggingLevel.Verbose, string.Format("CallHttpApi {0} response: {1}", uri.AbsoluteUri, responseString)); + return responseString; + } + + private static bool CallRider(string args) + { + var defaultApp = GetDefaultApp(); + if (!RiderPathExist(defaultApp)) + { + return false; + } + + var proc = new Process(); + if (SystemInfoRiderPlugin.operatingSystemFamily == OperatingSystemFamily.MacOSX) + { + proc.StartInfo.FileName = "open"; + proc.StartInfo.Arguments = string.Format("-n {0}{1}{0} --args {2}", "\"", "/" + defaultApp, args); + Log(LoggingLevel.Verbose, string.Format("{0} {1}", proc.StartInfo.FileName, proc.StartInfo.Arguments)); + } + else + { + proc.StartInfo.FileName = defaultApp; + proc.StartInfo.Arguments = args; + Log(LoggingLevel.Verbose, string.Format("{2}{0}{2}" + " {1}", proc.StartInfo.FileName, proc.StartInfo.Arguments, "\"")); + } + + proc.StartInfo.UseShellExecute = false; + proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; + proc.StartInfo.CreateNoWindow = true; + proc.StartInfo.RedirectStandardOutput = true; + proc.Start(); + + ActivateWindow(); + return true; + } + + private static void ActivateWindow() + { + if (SystemInfoRiderPlugin.operatingSystemFamily == OperatingSystemFamily.Windows) + { + try + { + var process = GetRiderProcess(); + if (process != null) + { + // Collect top level windows + var topLevelWindows = User32Dll.GetTopLevelWindowHandles(); + // Get process main window title + var windowHandle = topLevelWindows.FirstOrDefault(hwnd => User32Dll.GetWindowProcessId(hwnd) == process.Id); + Log(LoggingLevel.Info, string.Format("ActivateWindow: {0} {1}", process.Id, windowHandle)); + if (windowHandle != IntPtr.Zero) + { + //User32Dll.ShowWindow(windowHandle, 9); //SW_RESTORE = 9 + User32Dll.SetForegroundWindow(windowHandle); + } + } + } + catch (Exception e) + { + Log(LoggingLevel.Warning, "Exception on ActivateWindow: " + e); + } + } + } + + private static Process GetRiderProcess() + { + var process = Process.GetProcesses().FirstOrDefault(p => + { + string processName; + try + { + processName = + p.ProcessName; // some processes like kaspersky antivirus throw exception on attempt to get ProcessName + } + catch (Exception) + { + return false; + } + + return !p.HasExited && processName.ToLower().Contains("rider"); + }); + return process; + } + + // The default "Open C# Project" menu item will use the external script editor to load the .sln + // file, but unless Unity knows the external script editor can properly load solutions, it will + // also launch MonoDevelop (or the OS registered app for .sln files). This menu item side steps + // that issue, and opens the solution in Rider without opening MonoDevelop as well. + // Unity 2017.1 and later recognise Rider as an app that can load solutions, so this menu isn't + // needed in newer versions. + [MenuItem("Assets/Open C# Project in Rider", false, 1000)] + static void MenuOpenProject() + { + // Force the project files to be sync + SyncSolution(); + + // Load Project + CallRider(string.Format("{0}{1}{0}", "\"", SlnFile)); + } + + [MenuItem("Assets/Open C# Project in Rider", true, 1000)] + static bool ValidateMenuOpenProject() + { + return Enabled; + } + + /// <summary> + /// Force Unity To Write Project File + /// </summary> + private static void SyncSolution() + { + System.Type T = System.Type.GetType("UnityEditor.SyncVS,UnityEditor"); + System.Reflection.MethodInfo SyncSolution = T.GetMethod("SyncSolution", + System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); + SyncSolution.Invoke(null, null); + } + + /// <summary> + /// JetBrains Rider Integration Preferences Item + /// </summary> + /// <remarks> + /// Contains all 3 toggles: Enable/Disable; Debug On/Off; Writing Launch File On/Off + /// </remarks> + [PreferenceItem("Rider")] + static void RiderPreferencesItem() + { + EditorGUILayout.BeginVertical(); + EditorGUI.BeginChangeCheck(); + + var alternatives = GetAllRiderPaths(); + if (alternatives.Any()) + { + int index = Array.IndexOf(alternatives, RiderPath); + var alts = alternatives.Select(s => s.Replace("/", ":")) + .ToArray(); // hack around https://fogbugz.unity3d.com/default.asp?940857_tirhinhe3144t4vn + RiderPath = alternatives[EditorGUILayout.Popup("Rider executable:", index == -1 ? 0 : index, alts)]; + if (EditorGUILayout.Toggle(new GUIContent("Rider is default editor"), Enabled)) + { + SetExternalScriptEditor(RiderPath); + EditorGUILayout.HelpBox("Unckecking will restore default external editor.", MessageType.None); + } + else + { + SetExternalScriptEditor(string.Empty); + EditorGUILayout.HelpBox("Checking will set Rider as default external editor", MessageType.None); + } + + } + var help = @"TargetFramework >= 4.5 is strongly recommended. + - Without 4.5: + - Rider will fail to resolve System.Linq on Mac/Linux + - Rider will fail to resolve Firebase Analytics. + - With 4.5 Rider may show ambiguous references in UniRx. +All those problems will go away after Unity upgrades to mono4."; + + TargetFrameworkVersion = + EditorGUILayout.TextField( + new GUIContent("TargetFrameworkVersion", + help), TargetFrameworkVersion); + EditorGUILayout.HelpBox(help, MessageType.None); + + EditorGUI.EndChangeCheck(); + + EditorGUI.BeginChangeCheck(); + + var loggingMsg = + @"Sets the amount of Rider Debug output. If you are about to report an issue, please select Verbose logging level and attach Unity console output to the issue."; + SelectedLoggingLevel = (LoggingLevel) EditorGUILayout.EnumPopup(new GUIContent("Logging Level", loggingMsg), SelectedLoggingLevel); + EditorGUILayout.HelpBox(loggingMsg, MessageType.None); + + EditorGUI.EndChangeCheck(); + + var url = "https://github.com/JetBrains/resharper-unity"; + LinkButton(url, url); + +/* if (GUILayout.Button("reset RiderInitializedOnce = false")) + { + RiderInitializedOnce = false; + }*/ + + EditorGUILayout.EndVertical(); + } + + private static void LinkButton(string caption, string url) + { + var style = GUI.skin.label; + style.richText = true; + caption = string.Format("<color=#0000FF>{0}</color>", caption); + + bool bClicked = GUILayout.Button(caption, style); + + var rect = GUILayoutUtility.GetLastRect(); + rect.width = style.CalcSize(new GUIContent(caption)).x; + EditorGUIUtility.AddCursorRect(rect, MouseCursor.Link); + + if (bClicked) + Application.OpenURL(url); + } + + #region SystemInfoRiderPlugin + static class SystemInfoRiderPlugin + { + public static OperatingSystemFamily operatingSystemFamily + { + get + { +#if UNITY_5_5_OR_NEWER +return SystemInfo.operatingSystemFamily; +#else + if (SystemInfo.operatingSystem.StartsWith("Mac", StringComparison.InvariantCultureIgnoreCase)) + { + return OperatingSystemFamily.MacOSX; + } + if (SystemInfo.operatingSystem.StartsWith("Win", StringComparison.InvariantCultureIgnoreCase)) + { + return OperatingSystemFamily.Windows; + } + if (SystemInfo.operatingSystem.StartsWith("Lin", StringComparison.InvariantCultureIgnoreCase)) + { + return OperatingSystemFamily.Linux; + } + return OperatingSystemFamily.Other; +#endif + } + } + } +#if !UNITY_5_5_OR_NEWER + enum OperatingSystemFamily + { + Other, + MacOSX, + Windows, + Linux, + } +#endif + #endregion + + static class User32Dll + { + + /// <summary> + /// Gets the ID of the process that owns the window. + /// Note that creating a <see cref="Process"/> wrapper for that is very expensive because it causes an enumeration of all the system processes to happen. + /// </summary> + public static int GetWindowProcessId(IntPtr hwnd) + { + uint dwProcessId; + GetWindowThreadProcessId(hwnd, out dwProcessId); + return unchecked((int) dwProcessId); + } + + /// <summary> + /// Lists the handles of all the top-level windows currently available in the system. + /// </summary> + public static List<IntPtr> GetTopLevelWindowHandles() + { + var retval = new List<IntPtr>(); + EnumWindowsProc callback = (hwnd, param) => + { + retval.Add(hwnd); + return 1; + }; + EnumWindows(Marshal.GetFunctionPointerForDelegate(callback), IntPtr.Zero); + GC.KeepAlive(callback); + return retval; + } + + public delegate Int32 EnumWindowsProc(IntPtr hwnd, IntPtr lParam); + + [DllImport("user32.dll", CharSet = CharSet.Unicode, PreserveSig = true, SetLastError = true, + ExactSpelling = true)] + public static extern Int32 EnumWindows(IntPtr lpEnumFunc, IntPtr lParam); + + [DllImport("user32.dll", SetLastError = true)] + static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId); + + [DllImport("user32.dll", CharSet = CharSet.Unicode, PreserveSig = true, SetLastError = true, + ExactSpelling = true)] + public static extern Int32 SetForegroundWindow(IntPtr hWnd); + + [DllImport("user32.dll", CharSet = CharSet.Unicode, PreserveSig = true, SetLastError = true, + ExactSpelling = true)] + public static extern UInt32 ShowWindow(IntPtr hWnd, Int32 nCmdShow); + } + + static class ShortcutResolver + { + #region Signitures imported from http://pinvoke.net + + [DllImport("shfolder.dll", CharSet = CharSet.Auto)] + internal static extern int SHGetFolderPath(IntPtr hwndOwner, int nFolder, IntPtr hToken, int dwFlags, StringBuilder lpszPath); + + [Flags()] + enum SLGP_FLAGS + { + /// <summary>Retrieves the standard short (8.3 format) file name</summary> + SLGP_SHORTPATH = 0x1, + + /// <summary>Retrieves the Universal Naming Convention (UNC) path name of the file</summary> + SLGP_UNCPRIORITY = 0x2, + + /// <summary>Retrieves the raw path name. A raw path is something that might not exist and may include environment variables that need to be expanded</summary> + SLGP_RAWPATH = 0x4 + } + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] + struct WIN32_FIND_DATAW + { + public uint dwFileAttributes; + public long ftCreationTime; + public long ftLastAccessTime; + public long ftLastWriteTime; + public uint nFileSizeHigh; + public uint nFileSizeLow; + public uint dwReserved0; + public uint dwReserved1; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] public string cFileName; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)] public string cAlternateFileName; + } + + [Flags()] + enum SLR_FLAGS + { + /// <summary> + /// Do not display a dialog box if the link cannot be resolved. When SLR_NO_UI is set, + /// the high-order word of fFlags can be set to a time-out value that specifies the + /// maximum amount of time to be spent resolving the link. The function returns if the + /// link cannot be resolved within the time-out duration. If the high-order word is set + /// to zero, the time-out duration will be set to the default value of 3,000 milliseconds + /// (3 seconds). To specify a value, set the high word of fFlags to the desired time-out + /// duration, in milliseconds. + /// </summary> + SLR_NO_UI = 0x1, + + /// <summary>Obsolete and no longer used</summary> + SLR_ANY_MATCH = 0x2, + + /// <summary>If the link object has changed, update its path and list of identifiers. + /// If SLR_UPDATE is set, you do not need to call IPersistFile::IsDirty to determine + /// whether or not the link object has changed.</summary> + SLR_UPDATE = 0x4, + + /// <summary>Do not update the link information</summary> + SLR_NOUPDATE = 0x8, + + /// <summary>Do not execute the search heuristics</summary> + SLR_NOSEARCH = 0x10, + + /// <summary>Do not use distributed link tracking</summary> + SLR_NOTRACK = 0x20, + + /// <summary>Disable distributed link tracking. By default, distributed link tracking tracks + /// removable media across multiple devices based on the volume name. It also uses the + /// Universal Naming Convention (UNC) path to track remote file systems whose drive letter + /// has changed. Setting SLR_NOLINKINFO disables both types of tracking.</summary> + SLR_NOLINKINFO = 0x40, + + /// <summary>Call the Microsoft Windows Installer</summary> + SLR_INVOKE_MSI = 0x80 + } + + + /// <summary>The IShellLink interface allows Shell links to be created, modified, and resolved</summary> + [ComImport(), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("000214F9-0000-0000-C000-000000000046")] + interface IShellLinkW + { + /// <summary>Retrieves the path and file name of a Shell link object</summary> + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void GetPath([Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszFile, int cchMaxPath, out WIN32_FIND_DATAW pfd, SLGP_FLAGS fFlags); + + /// <summary>Retrieves the list of item identifiers for a Shell link object</summary> + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void GetIDList(out IntPtr ppidl); + + /// <summary>Sets the pointer to an item identifier list (PIDL) for a Shell link object.</summary> + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void SetIDList(IntPtr pidl); + + /// <summary>Retrieves the description string for a Shell link object</summary> + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void GetDescription([Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszName, int cchMaxName); + + /// <summary>Sets the description for a Shell link object. The description can be any application-defined string</summary> + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void SetDescription([MarshalAs(UnmanagedType.LPWStr)] string pszName); + + /// <summary>Retrieves the name of the working directory for a Shell link object</summary> + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void GetWorkingDirectory([Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszDir, int cchMaxPath); + + /// <summary>Sets the name of the working directory for a Shell link object</summary> + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void SetWorkingDirectory([MarshalAs(UnmanagedType.LPWStr)] string pszDir); + + /// <summary>Retrieves the command-line arguments associated with a Shell link object</summary> + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void GetArguments([Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszArgs, int cchMaxPath); + + /// <summary>Sets the command-line arguments for a Shell link object</summary> + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void SetArguments([MarshalAs(UnmanagedType.LPWStr)] string pszArgs); + + /// <summary>Retrieves the hot key for a Shell link object</summary> + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void GetHotkey(out short pwHotkey); + + /// <summary>Sets a hot key for a Shell link object</summary> + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void SetHotkey(short wHotkey); + + /// <summary>Retrieves the show command for a Shell link object</summary> + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void GetShowCmd(out int piShowCmd); + + /// <summary>Sets the show command for a Shell link object. The show command sets the initial show state of the window.</summary> + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void SetShowCmd(int iShowCmd); + + /// <summary>Retrieves the location (path and index) of the icon for a Shell link object</summary> + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void GetIconLocation([Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszIconPath, int cchIconPath, out int piIcon); + + /// <summary>Sets the location (path and index) of the icon for a Shell link object</summary> + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void SetIconLocation([MarshalAs(UnmanagedType.LPWStr)] string pszIconPath, int iIcon); + + /// <summary>Sets the relative path to the Shell link object</summary> + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void SetRelativePath([MarshalAs(UnmanagedType.LPWStr)] string pszPathRel, int dwReserved); + + /// <summary>Attempts to find the target of a Shell link, even if it has been moved or renamed</summary> + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void Resolve(IntPtr hwnd, SLR_FLAGS fFlags); + + /// <summary>Sets the path and file name of a Shell link object</summary> + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void SetPath([MarshalAs(UnmanagedType.LPWStr)] string pszFile); + } + + [ComImport, Guid("0000010c-0000-0000-c000-000000000046"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] + public interface IPersist + { + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void GetClassID(out Guid pClassID); + } + + + [ComImport, Guid("0000010b-0000-0000-C000-000000000046"), + InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] + public interface IPersistFile : IPersist + { + [MethodImpl(MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + new void GetClassID(out Guid pClassID); + + [MethodImpl(MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + int IsDirty(); + + [MethodImpl(MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void Load([In, MarshalAs(UnmanagedType.LPWStr)] string pszFileName, uint dwMode); + + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void Save([In, MarshalAs(UnmanagedType.LPWStr)] string pszFileName, [In, MarshalAs(UnmanagedType.Bool)] bool fRemember); + + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void SaveCompleted([In, MarshalAs(UnmanagedType.LPWStr)] string pszFileName); + + [MethodImpl (MethodImplOptions.InternalCall | MethodImplOptions.PreserveSig, MethodCodeType = MethodCodeType.Runtime)] + void GetCurFile([In, MarshalAs(UnmanagedType.LPWStr)] string ppszFileName); + } + + const uint STGM_READ = 0; + const int MAX_PATH = 260; + + // CLSID_ShellLink from ShlGuid.h + [ + ComImport(), + Guid("00021401-0000-0000-C000-000000000046") + ] + public class ShellLink + { + } + + #endregion + + public static string Resolve(string filename) + { + ShellLink link = new ShellLink(); + ((IPersistFile) link).Load(filename, STGM_READ); + // If I can get hold of the hwnd call resolve first. This handles moved and renamed files. + // ((IShellLinkW)link).Resolve(hwnd, 0) + StringBuilder sb = new StringBuilder(MAX_PATH); + WIN32_FIND_DATAW data = new WIN32_FIND_DATAW(); + ((IShellLinkW) link).GetPath(sb, sb.Capacity, out data, 0); + return sb.ToString(); + } + } + } +} + +// Developed using JetBrains Rider =) diff --git a/td/Assets/Scripts/PinchZoom.cs.meta b/td/Assets/Plugins/Editor/JetBrains/Unity3DRider.cs.meta index 6303bbc..519e0e0 100644 --- a/td/Assets/Scripts/PinchZoom.cs.meta +++ b/td/Assets/Plugins/Editor/JetBrains/Unity3DRider.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: 3770bdc9b6c954c1782333bdf04c01c6 -timeCreated: 1506636352 +guid: aa3e49e597a704f07b686414e3192b11 +timeCreated: 1507403604 licenseType: Free MonoImporter: serializedVersion: 2 diff --git a/td/Assets/Prefabs/Path straigth.prefab b/td/Assets/Prefabs/Castle.prefab Binary files differindex 758af59..3da320a 100644 --- a/td/Assets/Prefabs/Path straigth.prefab +++ b/td/Assets/Prefabs/Castle.prefab diff --git a/td/Assets/Prefabs/Castle.prefab.meta b/td/Assets/Prefabs/Castle.prefab.meta new file mode 100644 index 0000000..612183d --- /dev/null +++ b/td/Assets/Prefabs/Castle.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a94082cb0c354452eb9646dcb2c8d658 +timeCreated: 1507302352 +licenseType: Free +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Prefabs/Enemies.meta b/td/Assets/Prefabs/Enemies.meta new file mode 100644 index 0000000..1ce4814 --- /dev/null +++ b/td/Assets/Prefabs/Enemies.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8ff814333a59b4fd7a4b225615761cc5 +folderAsset: yes +timeCreated: 1506804364 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Prefabs/Enemies/Blue.prefab b/td/Assets/Prefabs/Enemies/Blue.prefab Binary files differnew file mode 100644 index 0000000..f98795d --- /dev/null +++ b/td/Assets/Prefabs/Enemies/Blue.prefab diff --git a/td/Assets/Prefabs/Enemies/Blue.prefab.meta b/td/Assets/Prefabs/Enemies/Blue.prefab.meta new file mode 100644 index 0000000..7de1795 --- /dev/null +++ b/td/Assets/Prefabs/Enemies/Blue.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c83bd045238b34dd3a99670646bfdabe +timeCreated: 1508012120 +licenseType: Free +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Prefabs/Enemy.prefab b/td/Assets/Prefabs/Enemies/Enemy.prefab Binary files differindex e2f8a96..38900d3 100644 --- a/td/Assets/Prefabs/Enemy.prefab +++ b/td/Assets/Prefabs/Enemies/Enemy.prefab diff --git a/td/Assets/Prefabs/Enemy.prefab.meta b/td/Assets/Prefabs/Enemies/Enemy.prefab.meta index f39477f..f39477f 100644 --- a/td/Assets/Prefabs/Enemy.prefab.meta +++ b/td/Assets/Prefabs/Enemies/Enemy.prefab.meta diff --git a/td/Assets/Prefabs/Towers.meta b/td/Assets/Prefabs/Towers.meta new file mode 100644 index 0000000..84da145 --- /dev/null +++ b/td/Assets/Prefabs/Towers.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: bcbc671350f2542efb1691d76fa90f9e +folderAsset: yes +timeCreated: 1507213929 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Prefabs/Towers/Guy One.prefab b/td/Assets/Prefabs/Towers/Guy One.prefab Binary files differnew file mode 100644 index 0000000..9736f41 --- /dev/null +++ b/td/Assets/Prefabs/Towers/Guy One.prefab diff --git a/td/Assets/Prefabs/Towers/Guy One.prefab.meta b/td/Assets/Prefabs/Towers/Guy One.prefab.meta new file mode 100644 index 0000000..2747a06 --- /dev/null +++ b/td/Assets/Prefabs/Towers/Guy One.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b3217bd5a74a9409e85e183b0e707047 +timeCreated: 1507213924 +licenseType: Free +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Prefabs/Towers/projectiles.meta b/td/Assets/Prefabs/Towers/projectiles.meta new file mode 100644 index 0000000..b66e7d3 --- /dev/null +++ b/td/Assets/Prefabs/Towers/projectiles.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1fd8e4afa918142cf86708ca153cfa3c +folderAsset: yes +timeCreated: 1507240769 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Prefabs/Towers/projectiles/bullet.prefab b/td/Assets/Prefabs/Towers/projectiles/bullet.prefab Binary files differnew file mode 100644 index 0000000..75a20be --- /dev/null +++ b/td/Assets/Prefabs/Towers/projectiles/bullet.prefab diff --git a/td/Assets/Prefabs/Towers/projectiles/bullet.prefab.meta b/td/Assets/Prefabs/Towers/projectiles/bullet.prefab.meta new file mode 100644 index 0000000..80854b9 --- /dev/null +++ b/td/Assets/Prefabs/Towers/projectiles/bullet.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: cc0aabf9df00e4ec0a1bde5c8f2cb499 +timeCreated: 1507300388 +licenseType: Free +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Prefabs/UI.meta b/td/Assets/Prefabs/UI.meta new file mode 100644 index 0000000..7f426e9 --- /dev/null +++ b/td/Assets/Prefabs/UI.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 85c08193c8cb54ff38ada8765b211fa2 +folderAsset: yes +timeCreated: 1506727362 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Prefabs/UI/msgBoxYesNo.prefab b/td/Assets/Prefabs/UI/msgBoxYesNo.prefab Binary files differnew file mode 100644 index 0000000..d5b775a --- /dev/null +++ b/td/Assets/Prefabs/UI/msgBoxYesNo.prefab diff --git a/td/Assets/Prefabs/UI/msgBoxYesNo.prefab.meta b/td/Assets/Prefabs/UI/msgBoxYesNo.prefab.meta new file mode 100644 index 0000000..3c4996f --- /dev/null +++ b/td/Assets/Prefabs/UI/msgBoxYesNo.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 21dda97ff00d54fca8607f4d476e82e3 +timeCreated: 1506877151 +licenseType: Free +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Prefabs/level design.meta b/td/Assets/Prefabs/level design.meta new file mode 100644 index 0000000..5fa139f --- /dev/null +++ b/td/Assets/Prefabs/level design.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f4efb8722711a4322b5c809507092aa6 +folderAsset: yes +timeCreated: 1507240816 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Prefabs/Grass-dirt.prefab b/td/Assets/Prefabs/level design/Grass-dirt.prefab Binary files differindex 5952387..dd9cf57 100644 --- a/td/Assets/Prefabs/Grass-dirt.prefab +++ b/td/Assets/Prefabs/level design/Grass-dirt.prefab diff --git a/td/Assets/Prefabs/Grass-dirt.prefab.meta b/td/Assets/Prefabs/level design/Grass-dirt.prefab.meta index 0c2256d..0c2256d 100644 --- a/td/Assets/Prefabs/Grass-dirt.prefab.meta +++ b/td/Assets/Prefabs/level design/Grass-dirt.prefab.meta diff --git a/td/Assets/Prefabs/level design/Path straigth.prefab b/td/Assets/Prefabs/level design/Path straigth.prefab Binary files differnew file mode 100644 index 0000000..78ad75f --- /dev/null +++ b/td/Assets/Prefabs/level design/Path straigth.prefab diff --git a/td/Assets/Prefabs/Path straigth.prefab.meta b/td/Assets/Prefabs/level design/Path straigth.prefab.meta index 875d25e..875d25e 100644 --- a/td/Assets/Prefabs/Path straigth.prefab.meta +++ b/td/Assets/Prefabs/level design/Path straigth.prefab.meta diff --git a/td/Assets/Prefabs/Path turn.prefab b/td/Assets/Prefabs/level design/Path turn.prefab Binary files differindex 62e392e..28d95c1 100644 --- a/td/Assets/Prefabs/Path turn.prefab +++ b/td/Assets/Prefabs/level design/Path turn.prefab diff --git a/td/Assets/Prefabs/Path turn.prefab.meta b/td/Assets/Prefabs/level design/Path turn.prefab.meta index ea595d4..ea595d4 100644 --- a/td/Assets/Prefabs/Path turn.prefab.meta +++ b/td/Assets/Prefabs/level design/Path turn.prefab.meta diff --git a/td/Assets/Prefabs/grassPart.prefab b/td/Assets/Prefabs/level design/grassPart.prefab Binary files differindex b525984..442bbc5 100644 --- a/td/Assets/Prefabs/grassPart.prefab +++ b/td/Assets/Prefabs/level design/grassPart.prefab diff --git a/td/Assets/Prefabs/grassPart.prefab.meta b/td/Assets/Prefabs/level design/grassPart.prefab.meta index 0c263b8..0c263b8 100644 --- a/td/Assets/Prefabs/grassPart.prefab.meta +++ b/td/Assets/Prefabs/level design/grassPart.prefab.meta diff --git a/td/Assets/Scenes/Level 1.unity b/td/Assets/Scenes/Level 1.unity Binary files differindex d48cc6e..23478b5 100644 --- a/td/Assets/Scenes/Level 1.unity +++ b/td/Assets/Scenes/Level 1.unity diff --git a/td/Assets/Scripts/Enemy.cs b/td/Assets/Scripts/Enemy.cs index 7273370..4d15b64 100644 --- a/td/Assets/Scripts/Enemy.cs +++ b/td/Assets/Scripts/Enemy.cs @@ -1,38 +1,39 @@ -using System.Collections; -using System.Collections.Generic; +using System.Collections.Generic; using UnityEngine; public class Enemy : MonoBehaviour { + /* This is a general class that contains an enemy, + * Currently it follows the pathway, and dies when reacing the end */ - public float speed; - public float initialHp; - public Transform pathWay; + [Header("Attributes")] + public float Speed; // Speed multiplier + public int InitialHp; // HealthPoints + public int Damage; + public List<Vector3> Waypoints; // Pathway waypoints, should be set by the spawner + + [Header("Scripting vars")] + public Player Player; // Reference to the player object, should be set when instantiating - List<Vector3> waypoints = new List<Vector3>(); - Vector3 waypointPos; - int waypointNum = -1; // Using minus one so that first addition returns 0, first element in array - - void Start () { - foreach (Transform child in pathWay) { - waypoints.Add (child.position); - } - } + private Vector3 _waypointPos; // Current waypoint position + private int _waypointNum = -1; // Using minus one so that first addition returns 0, first element in array void Update () { - updateWaypoint (); + if (Player.GameIsPaused()) { return; } // This ensures that the game stays paused + + if ( (transform.position == _waypointPos && _waypointNum + 1 < Waypoints.Count) || _waypointNum == -1) { + _waypointNum++; + _waypointPos = new Vector3 (Waypoints [_waypointNum].x, 0.483f, Waypoints [_waypointNum].z); + } - float transformStep = speed * Time.deltaTime; - transform.position = Vector3.MoveTowards (transform.position, waypointPos, transformStep); + float transformStep = Speed * Time.deltaTime; + transform.position = Vector3.MoveTowards (transform.position, _waypointPos, transformStep); - if (waypointNum == waypoints.Count - 1) { + // Selfdestruct if object reached the end + if (_waypointNum + 1 >= Waypoints.Count) { + WaveSpawner.EnemiesAlive--; + Player.DecreaseHealth (Damage); Destroy (gameObject); - } - } - - void updateWaypoint() { - if ( (transform.position == waypointPos && waypointNum < waypoints.Count - 1) || waypointNum == -1) { - waypointNum++; - waypointPos = new Vector3 (waypoints [waypointNum].x, 0.604f, waypoints [waypointNum].z); + return; } } diff --git a/td/Assets/Scripts/EnemySpawner.cs b/td/Assets/Scripts/EnemySpawner.cs deleted file mode 100644 index eb0dd43..0000000 --- a/td/Assets/Scripts/EnemySpawner.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class EnemySpawner : MonoBehaviour { - - public Enemy enemyPrefab; - public Transform pathWay; - public Transform gameWorld; - - int wave; - int next = 1; - int n = 0; - - void Update () { - n++; - - if (n == next) { - n = 0; - next = (int)Random.Range (50, 400); - - Enemy newEnemy = Instantiate (enemyPrefab, new Vector3(0, 0, 0), Quaternion.identity, gameWorld); - newEnemy.GetComponent <Enemy> ().pathWay = pathWay; - newEnemy.GetComponent <Enemy> ().speed = Random.Range (0.3f, 1.2f); - } - } -} diff --git a/td/Assets/Scripts/PinchZoom.cs b/td/Assets/Scripts/PinchZoom.cs deleted file mode 100644 index b3e6d22..0000000 --- a/td/Assets/Scripts/PinchZoom.cs +++ /dev/null @@ -1,144 +0,0 @@ -using UnityEngine; -using System.Collections; - -public class PinchZoom : MonoBehaviour -{ - /* Dette vil bare funke for et ortografisk kamera! */ - - private static readonly float PanSpeed = 20f; - private static readonly float ZoomSpeedTouch = 0.1f; - private static readonly float ZoomSpeedMouse = .5f; - - public static readonly float[] BoundsX = new float[]{-10f, 5f}; - public static readonly float[] BoundsZ = new float[]{-18f, -4f}; - public static readonly float[] ZoomBounds = new float[]{10f, 85f}; - - private Camera cam; - - private bool panActive; - private Vector3 lastPanPosition; - private int panFingerId; // Touch mode only - - private bool zoomActive; - private Vector2[] lastZoomPositions; // Touch mode only - - void Awake() { - cam = GetComponent<Camera>(); - - #if UNITY_ANDROID || UNITY_IOS - cam.fieldOfView = 60f; - #endif - } - - void Update() { - // If there's an open menu, or the clicker is being pressed, ignore the touch. - /* - if (GameManager.Instance.MenuManager.HasOpenMenu || GameManager.Instance.BitSpawnManager.IsSpawningBits) { - return; - }*/ - - if (Input.touchSupported && Application.platform != RuntimePlatform.WebGLPlayer) { - HandleTouch(); - } else { - HandleMouse(); - } - } - - void HandleTouch() { - switch(Input.touchCount) { - - case 1: // Panning - zoomActive = false; - - // If the touch began, capture its position and its finger ID. - // Otherwise, if the finger ID of the touch doesn't match, skip it. - Touch touch = Input.GetTouch(0); - if (touch.phase == TouchPhase.Began) { - lastPanPosition = touch.position; - panFingerId = touch.fingerId; - panActive = true; - } else if (touch.fingerId == panFingerId && touch.phase == TouchPhase.Moved) { - PanCamera(touch.position); - } - break; - - case 2: // Zooming - panActive = false; - - Vector2[] newPositions = new Vector2[]{Input.GetTouch(0).position, Input.GetTouch(1).position}; - if (!zoomActive) { - lastZoomPositions = newPositions; - zoomActive = true; - } else { - // Zoom based on the distance between the new positions compared to the - // distance between the previous positions. - float newDistance = Vector2.Distance(newPositions[0], newPositions[1]); - float oldDistance = Vector2.Distance(lastZoomPositions[0], lastZoomPositions[1]); - float offset = newDistance - oldDistance; - - ZoomCamera(offset, ZoomSpeedTouch); - - lastZoomPositions = newPositions; - } - break; - - default: - panActive = false; - zoomActive = false; - break; - } - } - - void HandleMouse() { - // On mouse down, capture it's position. - // On mouse up, disable panning. - // If there is no mouse being pressed, do nothing. - if (Input.GetMouseButtonDown(0)) { - panActive = true; - lastPanPosition = Input.mousePosition; - } else if (Input.GetMouseButtonUp(0)) { - panActive = false; - } else if (Input.GetMouseButton(0)) { - PanCamera(Input.mousePosition); - } - - // Check for scrolling to zoom the camera - float scroll = Input.GetAxis("Mouse ScrollWheel"); - zoomActive = true; - ZoomCamera(scroll, ZoomSpeedMouse); - zoomActive = false; - } - - void PanCamera(Vector3 newPanPosition) { - if (!panActive) { - return; - } - - // Translate the camera position based on the new input position - Vector3 offset = cam.ScreenToViewportPoint(lastPanPosition - newPanPosition); - Vector3 move = new Vector3(offset.x * PanSpeed, 0, offset.y * PanSpeed); - transform.Translate(move, Space.World); - ClampToBounds(); - - lastPanPosition = newPanPosition; - } - - void ZoomCamera(float offset, float speed) { - if (!zoomActive || offset == 0) { - return; - } - - cam.fieldOfView = Mathf.Clamp(cam.fieldOfView - (offset * speed), ZoomBounds[0], ZoomBounds[1]); - } - - void ClampToBounds() { - Vector3 pos = transform.position; - pos.x = Mathf.Clamp(transform.position.x, BoundsX[0], BoundsX[1]); - pos.z = Mathf.Clamp(transform.position.z, BoundsZ[0], BoundsZ[1]); - - transform.position = pos; - } - - - -}
\ No newline at end of file diff --git a/td/Assets/Scripts/Projectile.cs b/td/Assets/Scripts/Projectile.cs new file mode 100644 index 0000000..3b02763 --- /dev/null +++ b/td/Assets/Scripts/Projectile.cs @@ -0,0 +1,43 @@ +using UnityEngine; + +public class Projectile : MonoBehaviour { + + public float Speed = 70f; + public int PointsPerHit; + [Header("Scripting vars")] + public Player Player; // Reference to the player object, should be set when instantiating + private Transform _target; + + public void Seek(Transform target) { + _target = target; + } + + + void Update () { + + if (_target == null) { + Destroy (gameObject); + return; + } + + Vector3 direction = _target.position - transform.position; + float distanceThisFrame = Speed * Time.deltaTime; + + if (direction.magnitude <= distanceThisFrame) { + HitTarget (); + return; + } + + transform.Translate (direction.normalized * distanceThisFrame, Space.World); + + + } + + void HitTarget() { + WaveSpawner.EnemiesAlive--; + Player.ScoreAdd (PointsPerHit); + Destroy (_target.gameObject); + Destroy (gameObject); + } + +} diff --git a/td/Assets/Scripts/EnemySpawner.cs.meta b/td/Assets/Scripts/Projectile.cs.meta index 3fe504e..a95b993 100644 --- a/td/Assets/Scripts/EnemySpawner.cs.meta +++ b/td/Assets/Scripts/Projectile.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: 3e57c25f0405b40cab5c30b2c92671ae -timeCreated: 1506633566 +guid: 4a1928566183240ea8566b659c4b3d5f +timeCreated: 1507300755 licenseType: Free MonoImporter: serializedVersion: 2 diff --git a/td/Assets/Scripts/cameraHandler.cs b/td/Assets/Scripts/cameraHandler.cs index a4aa660..7c2f75f 100644 --- a/td/Assets/Scripts/cameraHandler.cs +++ b/td/Assets/Scripts/cameraHandler.cs @@ -1,8 +1,7 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; +using UnityEngine; -public class cameraHandler : MonoBehaviour { +public class CameraHandler : MonoBehaviour { + // TODO Fiks panning, ser idiotisk ut nå så jeg har satt panSpeed til 0. (I editoren) public float PanSpeed = 20f; public float ZoomSpeedTouch = 0.1f; @@ -12,21 +11,24 @@ public class cameraHandler : MonoBehaviour { public static readonly float[] BoundsY = new float[]{-5f, 10f}; public static readonly float[] BoundsZ = new float[]{-8f, 8f}; public static readonly float[] ZoomBounds = new float[]{1f, 5f}; + [Header("Scripting vars")] + public Player Player; // Reference to the player object, should be set in designer - private Camera cam; + private Camera _cam; - private bool panActive; - private Vector3 lastPanPosition; - private int panFingerId; // Touch mode only + private bool _panActive; + private Vector3 _lastPanPosition; + private int _panFingerId; // Touch mode only - private bool zoomActive; - private Vector2[] lastZoomPositions; // Touch mode only + private bool _zoomActive; + private Vector2[] _lastZoomPositions; // Touch mode only void Awake() { - cam = GetComponent<Camera>(); + _cam = GetComponent<Camera>(); } void Update() { + if (Player.GameIsPaused()) { return; } // If there's an open menu, or the clicker is being pressed, ignore the touch. /* if (GameManager.Instance.MenuManager.HasOpenMenu || GameManager.Instance.BitSpawnManager.IsSpawningBits) { @@ -36,52 +38,52 @@ public class cameraHandler : MonoBehaviour { if (Input.touchSupported && Application.platform != RuntimePlatform.WebGLPlayer) { HandleTouch(); } else { - //HandleMouse(); + HandleMouse(); } - HandleTouch (); + //HandleTouch (); } void HandleTouch() { switch(Input.touchCount) { case 1: // Panning - zoomActive = false; + _zoomActive = false; // If the touch began, capture its position and its finger ID. // Otherwise, if the finger ID of the touch doesn't match, skip it. Touch touch = Input.GetTouch(0); if (touch.phase == TouchPhase.Began) { - lastPanPosition = touch.position; - panFingerId = touch.fingerId; - panActive = true; - } else if (touch.fingerId == panFingerId && touch.phase == TouchPhase.Moved) { + _lastPanPosition = touch.position; + _panFingerId = touch.fingerId; + _panActive = true; + } else if (touch.fingerId == _panFingerId && touch.phase == TouchPhase.Moved) { PanCamera(touch.position); } break; case 2: // Zooming - panActive = false; + _panActive = false; Vector2[] newPositions = new Vector2[]{Input.GetTouch(0).position, Input.GetTouch(1).position}; - if (!zoomActive) { - lastZoomPositions = newPositions; - zoomActive = true; + if (!_zoomActive) { + _lastZoomPositions = newPositions; + _zoomActive = true; } else { // Zoom based on the distance between the new positions compared to the // distance between the previous positions. float newDistance = Vector2.Distance(newPositions[0], newPositions[1]); - float oldDistance = Vector2.Distance(lastZoomPositions[0], lastZoomPositions[1]); + float oldDistance = Vector2.Distance(_lastZoomPositions[0], _lastZoomPositions[1]); float offset = newDistance - oldDistance; ZoomCamera(offset, ZoomSpeedTouch); - lastZoomPositions = newPositions; + _lastZoomPositions = newPositions; } break; default: - panActive = false; - zoomActive = false; + _panActive = false; + _zoomActive = false; break; } } @@ -91,41 +93,41 @@ public class cameraHandler : MonoBehaviour { // On mouse up, disable panning. // If there is no mouse being pressed, do nothing. if (Input.GetMouseButtonDown(0)) { - panActive = true; - lastPanPosition = Input.mousePosition; + _panActive = true; + _lastPanPosition = Input.mousePosition; } else if (Input.GetMouseButtonUp(0)) { - panActive = false; + _panActive = false; } else if (Input.GetMouseButton(0)) { PanCamera(Input.mousePosition); } // Check for scrolling to zoom the camera float scroll = Input.GetAxis("Mouse ScrollWheel"); - zoomActive = true; + _zoomActive = true; ZoomCamera(scroll, ZoomSpeedMouse); - zoomActive = false; + _zoomActive = false; } void ZoomCamera(float offset, float speed) { - if (!zoomActive || offset == 0) { + if (!_zoomActive || offset == 0) { return; } - cam.orthographicSize = Mathf.Clamp(cam.orthographicSize - (offset * speed), ZoomBounds[0], ZoomBounds[1]); + _cam.orthographicSize = Mathf.Clamp(_cam.orthographicSize - (offset * speed), ZoomBounds[0], ZoomBounds[1]); } void PanCamera(Vector3 newPanPosition) { - if (!panActive) { + if (!_panActive) { return; } // Translate the camera position based on the new input position - Vector3 offset = cam.ScreenToViewportPoint(lastPanPosition - newPanPosition); + Vector3 offset = _cam.ScreenToViewportPoint(_lastPanPosition - newPanPosition); Vector3 move = new Vector3(offset.x * PanSpeed, offset.y * PanSpeed, 0f); transform.Translate(move, Space.World); ClampToBounds(); - lastPanPosition = newPanPosition; + _lastPanPosition = newPanPosition; } void ClampToBounds() { diff --git a/td/Assets/Scripts/castle.cs b/td/Assets/Scripts/castle.cs new file mode 100644 index 0000000..5c8835c --- /dev/null +++ b/td/Assets/Scripts/castle.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Castle : MonoBehaviour { + + private void Update () { + //CheckThing(); + } + + private void CheckThing() { + GameObject[] enemies = GameObject.FindGameObjectsWithTag ("enemy"); + + foreach (var enemy in enemies) { + var distanceToEnemy = Vector3.Distance (transform.position, enemy.transform.position); + if (distanceToEnemy <= 0) { + Debug.Log("INTRUDER!"); + } + } + } + + +} diff --git a/td/Assets/Scripts/castle.cs.meta b/td/Assets/Scripts/castle.cs.meta new file mode 100644 index 0000000..246ac0b --- /dev/null +++ b/td/Assets/Scripts/castle.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c6004dcebebd0498389086d43a3bd6fa +timeCreated: 1507302323 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Scripts/developerMode.cs b/td/Assets/Scripts/developerMode.cs new file mode 100644 index 0000000..a71d4c7 --- /dev/null +++ b/td/Assets/Scripts/developerMode.cs @@ -0,0 +1,76 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine.UI; +using UnityEngine; + +public class DeveloperMode : MonoBehaviour { + + public string Output = ""; + public string Stack = ""; + public bool CheatsAllowed; + + GameObject _pnlCanvas; + GameObject _pnlCheats; + Button _btnToggleCheats; + Text _lblConsoleLog; + + bool _developerModeActive; + bool _cheatMenuOpen; + + void Start () { + /* Panels */ + _pnlCanvas = this.gameObject.transform.GetChild (0).gameObject; + _pnlCheats = _pnlCanvas.transform.Find ("cheatMenu").gameObject; + /* Buttons */ + /* Button handlers */ + /* Lablels */ + _lblConsoleLog = _pnlCanvas.transform.Find ("consoleLog").gameObject.GetComponent <Text>(); + /* Do setup */ + _lblConsoleLog.text = ""; + + if (CheatsAllowed) { + _btnToggleCheats = _pnlCanvas.transform.Find ("toggleCheats").gameObject.GetComponent <Button> (); + if (_btnToggleCheats != null) { _btnToggleCheats.onClick.AddListener (btnToggleCheatsHandler); } + _cheatMenuOpen = false; + } else { + _pnlCanvas.transform.Find ("toggleCheats").gameObject.SetActive (false); + } + _pnlCheats.SetActive (false); + } + + void Update () { + + if (PlayerPrefs.HasKey ("developerMode")) { + if (PlayerPrefs.GetInt ("developerMode") == 1) { _developerModeActive = true; } + else { _developerModeActive = false; } + } + + if (_developerModeActive) { + this.gameObject.transform.GetChild (0).gameObject.SetActive (true); + } else { + this.gameObject.transform.GetChild (0).gameObject.SetActive (false); + } + } + + void btnToggleCheatsHandler() { + /* Handler for btnToggleCheats */ + if (CheatsAllowed) { + _cheatMenuOpen = !_cheatMenuOpen; + _pnlCheats.SetActive (_cheatMenuOpen); + } + } + + #region GetDebugLog + void OnEnable() { + Application.logMessageReceived += HandleLog; + } + void OnDisable() { + Application.logMessageReceived -= HandleLog; + } + public void HandleLog(string logString, string stackTrace, LogType type) { + string backLog = _lblConsoleLog.text; + _lblConsoleLog.text = logString + "\n" + backLog; + } + #endregion + +} diff --git a/td/Assets/Scripts/developerMode.cs.meta b/td/Assets/Scripts/developerMode.cs.meta new file mode 100644 index 0000000..7b3be6c --- /dev/null +++ b/td/Assets/Scripts/developerMode.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 71d5bbff4cf5e434da6945e5ea1006af +timeCreated: 1506884902 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Scripts/enableChild.cs b/td/Assets/Scripts/enableChild.cs new file mode 100644 index 0000000..cba9375 --- /dev/null +++ b/td/Assets/Scripts/enableChild.cs @@ -0,0 +1,12 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class EnableChild : MonoBehaviour { + /* Denne klassen gjør ikke annet enn å aktivere det første childobjektet, + * nyttig om man vil skjule objekter når man designer, + * slik at man slipper å drive å skru objektene av og på mellom hver test manuelt */ + void Start () { + this.gameObject.transform.GetChild (0).gameObject.SetActive (true); + } +}
\ No newline at end of file diff --git a/td/Assets/Scripts/enableChild.cs.meta b/td/Assets/Scripts/enableChild.cs.meta new file mode 100644 index 0000000..ab87395 --- /dev/null +++ b/td/Assets/Scripts/enableChild.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c726586371a844ca1adc60878d0dadf1 +timeCreated: 1506778993 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Scripts/gameStats.cs b/td/Assets/Scripts/gameStats.cs new file mode 100644 index 0000000..731c276 --- /dev/null +++ b/td/Assets/Scripts/gameStats.cs @@ -0,0 +1,60 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine.UI; +using UnityEngine; + +public class GameStats : MonoBehaviour { + + public Player Player; + private GameObject _canvas; + private Text _txtMoney; + private Text _txtScore; + private Text _txtHp; + private Slider _sldHp; + private int _displayedScore; + private int _displayedMoney; + private int _displayedHealth; + + private void Start() { + _canvas = transform.GetChild (0).gameObject; + _txtMoney = _canvas.transform.Find ("playerMoney").gameObject.GetComponent <Text>(); + _txtScore = _canvas.transform.Find ("playerScore").gameObject.GetComponent <Text>(); + _sldHp = _canvas.transform.Find("playerHealth").gameObject.GetComponent<Slider>(); + } + + private void Update () { + + if (Player.Money () != _displayedMoney) { + _displayedMoney = Player.Money (); + UpdateMoney (_displayedMoney); + } + + if (Player.Score () != _displayedScore) { + _displayedScore = Player.Score (); + UpdateScore (_displayedScore); + } + + if (Mathf.RoundToInt(Player.HealthAsPercentage()) != Mathf.RoundToInt(_displayedHealth)) { + _displayedHealth = Player.HealthAsPercentage(); + UpdateHealth (_displayedHealth); + + if (_displayedHealth <= 10) { + _txtScore.color = Color.red; + } + } + + } + + private void UpdateScore(int newScore) { + _txtScore.text = ("Score: " + newScore.ToString ()); + } + + private void UpdateMoney(int newMoney) { + _txtMoney.text = ("Money: " + newMoney.ToString () + "$"); + } + + private void UpdateHealth(int newHp) { + _sldHp.value = newHp; + } + +} diff --git a/td/Assets/Scripts/gameStats.cs.meta b/td/Assets/Scripts/gameStats.cs.meta new file mode 100644 index 0000000..cd4989c --- /dev/null +++ b/td/Assets/Scripts/gameStats.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 48789fb36d2d543209c2f6540f1442d9 +timeCreated: 1507127936 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Scripts/mainGUI.cs b/td/Assets/Scripts/mainGUI.cs new file mode 100644 index 0000000..26ec78b --- /dev/null +++ b/td/Assets/Scripts/mainGUI.cs @@ -0,0 +1,187 @@ +using System; +using UnityEngine.UI; +using UnityEngine.SceneManagement; +using UnityEngine; + +public class MainGui : MonoBehaviour { + [Header("Scripting vars")] + public Player Player; // Reference to the player object, should be set in designer + + private GameObject _pnlMenu; + private GameObject _pnlSidebar; + private GameObject _pnlSettings; + private GameObject _pnlGameOver; + private RectTransform _pnlSidebarTransform; + private Button _btnToggleSidebar; + private Button _btnPauseGame; + private Button _btnResumeGame; + private Button _btnExitGame; + private Button _btnSettings; + private Button _btnSettingsDiscard; + private Button _btnSettingsSave; + private Button _btnGoRetry; + private Button _btnGoMenu; + private Text _txtGoScore; + private Text _txtGoHighScore; + private Text _txtGoNewHighScore; + + private bool _sidebarExpanded; + private readonly float[] _sidebarStates = new float[2] {0f, -202.4f}; // The x position of the sidebar expanded or collapsed + + private bool _menuActive; + + private void Awake() { + /* Panels */ + _pnlMenu = transform.Find ("menu").gameObject; + _pnlSidebar = transform.Find ("sidebarWrapper").gameObject; + _pnlSettings = transform.Find ("settings").gameObject; + _pnlGameOver = transform.Find("GameOver").gameObject; + _pnlSidebarTransform = _pnlSidebar.GetComponent <RectTransform> (); + + /* Buttons */ + _btnToggleSidebar = _pnlSidebar.transform.Find("toggleSidebar").gameObject.GetComponent <Button> (); + _btnPauseGame = _pnlSidebar.transform.Find ("pauseGame").gameObject.GetComponent <Button> (); + _btnResumeGame = _pnlMenu.transform.Find ("resumeGame").gameObject.GetComponent <Button> (); + _btnExitGame = _pnlMenu.transform.Find ("exitGame").gameObject.GetComponent <Button> (); + _btnSettings = _pnlMenu.transform.Find ("settings").gameObject.GetComponent <Button> (); + _btnSettingsDiscard = _pnlSettings.transform.Find ("discardChanges").gameObject.GetComponent <Button> (); + _btnSettingsSave = _pnlSettings.transform.Find ("saveChanges").gameObject.GetComponent <Button> (); + _btnGoMenu = _pnlGameOver.transform.Find ("GameOver").transform.Find("menu").gameObject.GetComponent <Button> (); + _btnGoRetry = _pnlGameOver.transform.Find ("GameOver").transform.Find("restart").gameObject.GetComponent <Button> (); + if (_btnToggleSidebar != null) { _btnToggleSidebar.onClick.AddListener (toggleSidebarHandler); } + if (_btnPauseGame != null) { _btnPauseGame.onClick.AddListener (pauseGameHandler); } + if (_btnResumeGame != null) { _btnResumeGame.onClick.AddListener (btnResumeGameHandler); } + if (_btnExitGame != null) { _btnExitGame.onClick.AddListener (btnExitGameHandler); } + if (_btnSettings != null) { _btnSettings.onClick.AddListener (btnSettingsHandler); } + if (_btnSettingsDiscard != null) { _btnSettingsDiscard.onClick.AddListener (btnSettingsDiscardHandler); } + if (_btnSettingsSave != null) { _btnSettingsSave.onClick.AddListener (btnSettingsSaveHandler); } + if (_btnGoMenu != null) { _btnGoMenu.onClick.AddListener (btnGoMenuHandler); } + if (_btnGoRetry != null) { _btnGoRetry.onClick.AddListener (btnGoRetryHandler); } + + /* Text */ + _txtGoScore = _pnlGameOver.transform.Find ("GameOver").transform.Find("score").gameObject.GetComponent<Text>(); + _txtGoHighScore = _pnlGameOver.transform.Find ("GameOver").transform.Find("highScore").gameObject.GetComponent<Text>(); + _txtGoNewHighScore = _pnlGameOver.transform.Find ("GameOver").transform.Find("newHighscore").gameObject.GetComponent<Text>(); + + /* Set up initial states */ + UpdateSidebarPosandBtn (); + _pnlMenu.SetActive (false); + _pnlSettings.SetActive (false); + _pnlGameOver.SetActive(false); + } + + private void toggleSidebarHandler() { + /* handler for btnToggleSidebar */ + _sidebarExpanded = !_sidebarExpanded; + UpdateSidebarPosandBtn (); + } + + private void pauseGameHandler() { + /* handler for btnPauseGame */ + _menuActive = true; + _pnlMenu.SetActive (_menuActive); + Time.timeScale = 0.0F; + _btnToggleSidebar.interactable = false; + _btnPauseGame.interactable = false; + Player.PauseGame(); + } + + private void btnResumeGameHandler() { + /* handler for btnResumeGame */ + _menuActive = false; + _pnlMenu.SetActive (_menuActive); + Time.timeScale = 1.0F; + _btnToggleSidebar.interactable = true; + _btnPauseGame.interactable = true; + Player.ResumeGame(); + } + + private void btnExitGameHandler() { + /* handler for btnExitGame */ + Application.Quit (); + } + + private void btnSettingsHandler() { + /* handler for btnSettings */ + _pnlMenu.SetActive (false); + _pnlSettings.SetActive (true); + + if (PlayerPrefs.HasKey ("developerMode")) { + _pnlSettings.transform.Find ("developerEnabled").gameObject.GetComponent <Toggle> ().isOn = IntToBool(PlayerPrefs.GetInt ("developerMode")); + } + } + + private void btnSettingsSaveHandler() { + /* handler for btnSaveSettings */ + _pnlMenu.SetActive (true); + _pnlSettings.SetActive (false); + + PlayerPrefs.SetInt ("developerMode", Convert.ToInt32(_pnlSettings.transform.Find ("developerEnabled").gameObject.GetComponent <Toggle>().isOn)); + } + + private void btnSettingsDiscardHandler() { + /* handler for btnSettingsDiscard */ + _pnlMenu.SetActive (true); + _pnlSettings.SetActive (false); + } + + private void UpdateSidebarPosandBtn() { + /* update state of sidebar based on the expanded var */ + if (_sidebarExpanded) { + _pnlSidebarTransform.localPosition = new Vector3 (_sidebarStates [1], 0f, 0f); + _btnToggleSidebar.transform.GetComponent <RectTransform> ().localScale = new Vector3 (-1, 1, 1); + } else { + _pnlSidebarTransform.localPosition = new Vector3 (_sidebarStates [0], 0f, 0f); + _btnToggleSidebar.transform.GetComponent <RectTransform> ().localScale = new Vector3 (1, 1, 1); + } + } + + private void btnGoMenuHandler() { + /* Handler for btnGoMenu */ + } + + private void btnGoRetryHandler() { + /* Handler for btnGoRetry */ + SceneManager.LoadScene(SceneManager.GetActiveScene().name); + Time.timeScale = 1.0F; + } + + private bool IntToBool(int input) { + /* Converts int to boolean */ + if (input >= 1) { + return true; + } else { + return false; + } + } + + public void GameOverScreen(int score) { + /* Show game over screen */ + bool newHighscore = false; + int highScore = 0; + + if (PlayerPrefs.HasKey("highscore")) { + highScore = PlayerPrefs.GetInt("highscore"); + if (score > highScore) { + newHighscore = true; + } + } + + if (_sidebarExpanded) { toggleSidebarHandler(); } + + /* Pause game */ + Player.PauseGame(); + /* Activate panel */ + _pnlGameOver.SetActive(true); + /* Set text, score */ + _txtGoScore.text = "Score: " + score.ToString(); + /* set text, highscore */ + _txtGoHighScore.text = "Highscore: " + highScore.ToString(); + /* set newHicgscore */ + _txtGoNewHighScore.gameObject.SetActive(newHighscore); + /* Disable other onScreenButtons */ + _btnToggleSidebar.interactable = false; + _btnPauseGame.interactable = false; + } + +} diff --git a/td/Assets/Scripts/mainGUI.cs.meta b/td/Assets/Scripts/mainGUI.cs.meta new file mode 100644 index 0000000..bbfc14a --- /dev/null +++ b/td/Assets/Scripts/mainGUI.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6953b687c28724842b2c9d48f701cf75 +timeCreated: 1506770005 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Scripts/player.cs b/td/Assets/Scripts/player.cs new file mode 100644 index 0000000..cb55357 --- /dev/null +++ b/td/Assets/Scripts/player.cs @@ -0,0 +1,85 @@ +using UnityEngine; + +public class Player : MonoBehaviour { + + public int InitialHealth; + public int StartingMoney; + public MainGui MainGui; + + private int _gameState; + private GameObject[] _towers; + private int _playerMoney; + private int _playerScore; + private int _playerHealth; + + void Awake() { + /* This method initializes the player class */ + _playerMoney = StartingMoney; + _playerHealth = InitialHealth; + InvokeRepeating ("GameStateWatcher", 0f, 0.5f); + _gameState = 1; + } + + #region stats + public int Score() { + return _playerScore; + } + + public void ScoreAdd(int points) { + _playerScore += points; + } + + public int Money() { + return _playerMoney; + } + + public void MoneyAdd(int sum) { + _playerMoney += sum; + } + + public void MoneySubtract(int sum) { + _playerMoney -= sum; + } + + public int Health() { + return _playerHealth; + } + + public int HealthAsPercentage() + { + return Mathf.RoundToInt((InitialHealth * _playerHealth) / 100.0f); // Basic percentage calc... + } + + public void DecreaseHealth(int hp) { + _playerHealth -= hp; + } + #endregion + + public void SpawnTower(GameObject towerType) { + GameObject tower = Instantiate (towerType, new Vector3 (0, 0, 0), Quaternion.identity, transform.Find ("towers").transform); + Tower script = tower.GetComponent <Tower>(); + script.Player = this; + } + + public void GameStateWatcher() { + if (_playerHealth <= 0) { + MainGui.GameOverScreen(_playerScore); + } + } + + public bool GameIsPaused() { + if (_gameState == 0) { return true; } + return false; + } + + public void PauseGame() { + Time.timeScale = 0.0F; + _gameState = 0; + } + + public void ResumeGame() { + Time.timeScale = 1.0F; + _gameState = 1; + } + +} diff --git a/td/Assets/Scripts/player.cs.meta b/td/Assets/Scripts/player.cs.meta new file mode 100644 index 0000000..c57a461 --- /dev/null +++ b/td/Assets/Scripts/player.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b033e147f0b23409bb5c7a98a7208d6b +timeCreated: 1507125120 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Scripts/tower.cs b/td/Assets/Scripts/tower.cs new file mode 100644 index 0000000..004605b --- /dev/null +++ b/td/Assets/Scripts/tower.cs @@ -0,0 +1,145 @@ +using UnityEngine; + +public class Tower : MonoBehaviour { + + [Header("Attributes")] + public int TowerPrice; // The price of the tower, set this in the desiger (tower prefab) + public float FireRate; // How long the turret should use to reload, Set in designer (tower prefab) + public float TurnSpeed; // How fast the turret should rotate. Set in designer (tower prefab) + [Range(0, 10)] + public float TowerRange; // How large the range of the tower is. this is the diameter. Set in designer (tower prefab) + public GameObject ProjectilePrefab; + public Transform FirePoint; + [Header("Materials")] + public Material MaterialDanger; // The material used when tower can't be placed, set in the designer (tower prefab) + public Material MaterialSuccess; // The material used when the tower can be placed, or is selected, set in the designer (tower prefab) + [Header("Scripting vars")] + public Player Player; // Reference to the player object, should be set when instantiating + + private GameObject _placementIndicator; // The placement indicator + private Renderer _placementIndicatorRenderer; // The renderer of the placement indicator + private Plane _groundPlane; // Plane used for raycasting when placing tower + private float _groundYpoint = 0.525f; // What Y-position the Tower should be placed on, this should be constant in every use-case. + private bool _towerPlaced; // Bool used to descide what to do this frame + private bool _colliding; // Set if the tower collides with any GameObject, used when placing, to see where it can be placed + + private Transform _target; + private float _fireCountdown; + + void Start () { + _placementIndicator = transform.GetChild (0).gameObject; + _placementIndicatorRenderer = _placementIndicator.GetComponent<Renderer> (); + _placementIndicator.transform.localScale = new Vector3 (TowerRange*7, 0.00000001f, TowerRange*7); + + _groundPlane = new Plane (Vector3.up, new Vector3(0f, _groundYpoint, 0f)); + } + + void Update () { + + #region placeTower + if (!_towerPlaced) { + if (Input.touchCount == 1 || Input.GetMouseButton (0)) { + + /* Activate indicator if not already */ + if (!_placementIndicator.activeSelf) { _placementIndicator.SetActive (true); } + /* Change indicator-color based on placement */ + if (!_colliding) { _placementIndicatorRenderer.sharedMaterial = MaterialDanger; } + else { _placementIndicatorRenderer.sharedMaterial = MaterialSuccess; } + /* Calculate new position */ + Ray touchRay = Camera.main.ScreenPointToRay (Input.mousePosition); + float rayDistance; + if (_groundPlane.Raycast (touchRay, out rayDistance)) { + transform.position = touchRay.GetPoint (rayDistance); + } + + } else { + + /* User let go of the screen, decide if tower can be placed */ + if (!_colliding) { Destroy (gameObject); } // Skal kollidere for å være på et godkjent område + else { + _towerPlaced = true; + Player.MoneySubtract (TowerPrice); + _placementIndicator.SetActive (false); + _placementIndicatorRenderer.sharedMaterial = MaterialSuccess; + InvokeRepeating ("UpdateTarget", 0f, 0.5f); // This starts the + gameObject.GetComponent <BoxCollider>().enabled = false; + } + + } + + return; + } + #endregion + + // Stop rest of update if no target is aquired + if (_target == null) { + return; + } + // Target lockon + Vector3 direction = _target.position - transform.position; + Quaternion lookRotation = Quaternion.LookRotation (direction); + Vector3 rotation = Quaternion.Lerp (transform.rotation, lookRotation, Time.deltaTime * TurnSpeed).eulerAngles; + transform.rotation = Quaternion.Euler (0f, rotation.y, 0f); + + if (_fireCountdown <= 0f) { + // FAIAAAAA + Shoot(); + _fireCountdown = 1f / FireRate; + } + + _fireCountdown -= Time.deltaTime; + + } + + void Shoot() { + GameObject projectileGo = (GameObject) Instantiate (ProjectilePrefab, FirePoint.position, FirePoint.rotation); + Projectile projectile = projectileGo.GetComponent <Projectile>(); + if (projectile != null) { + projectile.Player = Player; + projectile.Seek (_target); + } + } + + void UpdateTarget() { + /* Method that updates the currentTarget. + * The target will be set to the nearest in range */ + GameObject[] enemies = GameObject.FindGameObjectsWithTag ("enemy"); + float shortestDistance = Mathf.Infinity; + GameObject nearestEnemy = null; + + foreach (var enemy in enemies) { + float distanceToEnemy = Vector3.Distance (transform.position, enemy.transform.position); + if (distanceToEnemy < shortestDistance) { + shortestDistance = distanceToEnemy; + nearestEnemy = enemy; + } + } + + if (nearestEnemy != null && shortestDistance <= TowerRange) { + _target = nearestEnemy.transform; + } else { + _target = null; + } + } + + void OnTriggerEnter(Collider other) { + _colliding = true; + } + + void OnTriggerStay(Collider other) { + _colliding = true; + } + + void OnTriggerExit(Collider other) { + _colliding = false; + } + + void OnDrawGizmosSelected() { + /* Show gizmos in designer */ + Gizmos.color = Color.red; + Gizmos.DrawWireSphere (transform.position, TowerRange); + } + +} + + diff --git a/td/Assets/Scripts/tower.cs.meta b/td/Assets/Scripts/tower.cs.meta new file mode 100644 index 0000000..c31ac8e --- /dev/null +++ b/td/Assets/Scripts/tower.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 39d4d93c762d74a628b6292b97f1483f +timeCreated: 1506962845 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Scripts/waveSpawner.cs b/td/Assets/Scripts/waveSpawner.cs new file mode 100644 index 0000000..3a6d7d4 --- /dev/null +++ b/td/Assets/Scripts/waveSpawner.cs @@ -0,0 +1,125 @@ +using System.Collections; +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +public class WaveSpawner : MonoBehaviour { + + [Header("Attributes")] + public float TimeBetweenWaves; + public float SpawnRate; + + [Header("Objects")] + public Transform SpawnPoint; + public Transform PathWay; + public Text WaveCountdownText; + + [Header("Every possible enemy")] + public EnemyType[] Enemies; + + [Header("Scripting vars")] + public Player Player; // Reference to the player object, should be set in designer + + private Transform _parentObject; + private List<Vector3> _waypoints = new List<Vector3>(); + + public static int EnemiesAlive = 0; + private float _countdown = 2f; + private int _waveIndex = 0; + + void Awake() { + foreach (Transform child in PathWay) { + _waypoints.Add (child.position); + } + } + + void Start() { + _parentObject = transform.Find ("enemies").gameObject.GetComponent <Transform> (); + } + + void Update () { + if (EnemiesAlive > 0) { + return; + } + + if (_countdown <= 0f) { + StartCoroutine(SpawnWave()); + _countdown = TimeBetweenWaves; + return; + } + + _countdown -= Time.deltaTime; + _countdown = Mathf.Clamp(_countdown, 0f, Mathf.Infinity); + //waveCountdownText.text = string.Format("{0:00.00}", countdown); + } + + private int WaveEnemyCount(int waveNum) { + // 10.64 * e^0,57x + float pow = (float) Math.Pow( Math.E, 0.57f * waveNum); + return (int) Math.Floor(10.64f * pow); + } + + private float EnemyAmountThing(int currentEnemy, int maxTypes) { + // TODO Change the for loop into a faster method + float rest = 1; + + for (int i=1; i <= maxTypes; i++) { + if (i != maxTypes) { rest = rest / 2; } + if (i == currentEnemy + 1) { return rest; } + } + + return 0; + } + + IEnumerator SpawnWave () { + int enemiesToSpawn = WaveEnemyCount(_waveIndex); + EnemiesAlive = enemiesToSpawn; + List<WaveElement> wave = new List<WaveElement>(); + + for (int i = 0; i < Enemies.Length; i++) { + EnemyType enemy = Enemies[i]; + + float amount = enemiesToSpawn * EnemyAmountThing(i, Enemies.Length); + if (amount >= 1) { + wave.Add(new WaveElement {Prefab = enemy.Enemy, Amount = (int)Math.Floor(amount)} ); + } + + } + + foreach (var enemyType in wave) { + for (int i = 0; i < enemyType.Amount; i++) { + SpawnEnemy(enemyType.Prefab); + yield return new WaitForSeconds(1f / SpawnRate); + } + yield return new WaitForSeconds(1f / 100f); + } + + SpawnRate = SpawnRate * 2; + _waveIndex++; + } + + void SpawnEnemy (GameObject enemyPrefab) { + GameObject newEnemy = Instantiate (enemyPrefab, new Vector3(0, 0, 0), Quaternion.identity, _parentObject); + Enemy script = newEnemy.GetComponent <Enemy> (); + Transform transform = newEnemy.GetComponent <Transform>(); + + script.Waypoints = _waypoints; + script.Player = Player; + transform.position = new Vector3 (0.93f, 0.483f, 0f); + } + + [System.Serializable] + public class EnemyType { + public string Name; + public GameObject Enemy; + [Range(0, 1)] + public float Percentage; + } + + public class WaveElement { + public GameObject Prefab { get; set; } + public int Amount { get; set; } + } + +}
\ No newline at end of file diff --git a/td/Assets/Scripts/waveSpawner.cs.meta b/td/Assets/Scripts/waveSpawner.cs.meta new file mode 100644 index 0000000..1f1e3cb --- /dev/null +++ b/td/Assets/Scripts/waveSpawner.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9ea53d824cbfc4eb8a4eb4ee6a247bc7 +timeCreated: 1507241433 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures.meta b/td/Assets/Textures.meta new file mode 100644 index 0000000..b7dfc46 --- /dev/null +++ b/td/Assets/Textures.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4d9051e7a3e8748a99119b1147c55b11 +folderAsset: yes +timeCreated: 1506726226 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/Background.png b/td/Assets/Textures/Background.png Binary files differnew file mode 100644 index 0000000..0d86779 --- /dev/null +++ b/td/Assets/Textures/Background.png diff --git a/td/Assets/Textures/Background.png.meta b/td/Assets/Textures/Background.png.meta new file mode 100644 index 0000000..da0adad --- /dev/null +++ b/td/Assets/Textures/Background.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: f16fe7293d9c640d79fcb2877789f26b +timeCreated: 1508014924 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons.meta b/td/Assets/Textures/ColorfulButtons.meta new file mode 100644 index 0000000..7a58b20 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f847f28f493c04649bb5b888e181d2ef +folderAsset: yes +timeCreated: 1506727805 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Close.png b/td/Assets/Textures/ColorfulButtons/Close.png Binary files differnew file mode 100644 index 0000000..f098c7b --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Close.png diff --git a/td/Assets/Textures/ColorfulButtons/Close.png.meta b/td/Assets/Textures/ColorfulButtons/Close.png.meta new file mode 100644 index 0000000..d16dcf9 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Close.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 055d5058ff6230d4d88e3044a207f815 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Colorful Buttons.cdr b/td/Assets/Textures/ColorfulButtons/Colorful Buttons.cdr Binary files differnew file mode 100644 index 0000000..607697c --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Colorful Buttons.cdr diff --git a/td/Assets/Textures/ColorfulButtons/Colorful Buttons.cdr.meta b/td/Assets/Textures/ColorfulButtons/Colorful Buttons.cdr.meta new file mode 100644 index 0000000..819c886 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Colorful Buttons.cdr.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: bfd6e9986216a5c47833c80b1b0d8c42 +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Credits.txt b/td/Assets/Textures/ColorfulButtons/Credits.txt new file mode 100644 index 0000000..9dd1ee4 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Credits.txt @@ -0,0 +1 @@ +Music icon made by Freepik from www.flaticon.com
\ No newline at end of file diff --git a/td/Assets/Textures/ColorfulButtons/Credits.txt.meta b/td/Assets/Textures/ColorfulButtons/Credits.txt.meta new file mode 100644 index 0000000..b1eb7d8 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Credits.txt.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 4eac82759f3d2c840ac256db53fc34ef +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Divide.png b/td/Assets/Textures/ColorfulButtons/Divide.png Binary files differnew file mode 100644 index 0000000..98710a6 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Divide.png diff --git a/td/Assets/Textures/ColorfulButtons/Divide.png.meta b/td/Assets/Textures/ColorfulButtons/Divide.png.meta new file mode 100644 index 0000000..7005030 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Divide.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: a0f7bb6ac43ad9445874389e5b24b80a +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Facebook.png b/td/Assets/Textures/ColorfulButtons/Facebook.png Binary files differnew file mode 100644 index 0000000..09d530f --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Facebook.png diff --git a/td/Assets/Textures/ColorfulButtons/Facebook.png.meta b/td/Assets/Textures/ColorfulButtons/Facebook.png.meta new file mode 100644 index 0000000..8391343 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Facebook.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 61ece5dea88efa2478bc946cb63f0e57 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/ForwardLeft.png b/td/Assets/Textures/ColorfulButtons/ForwardLeft.png Binary files differnew file mode 100644 index 0000000..104a930 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/ForwardLeft.png diff --git a/td/Assets/Textures/ColorfulButtons/ForwardLeft.png.meta b/td/Assets/Textures/ColorfulButtons/ForwardLeft.png.meta new file mode 100644 index 0000000..0c6da42 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/ForwardLeft.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 7c8b9f24690098d4c937a4d8a0b9f4ac +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/ForwardRight.png b/td/Assets/Textures/ColorfulButtons/ForwardRight.png Binary files differnew file mode 100644 index 0000000..d73bb76 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/ForwardRight.png diff --git a/td/Assets/Textures/ColorfulButtons/ForwardRight.png.meta b/td/Assets/Textures/ColorfulButtons/ForwardRight.png.meta new file mode 100644 index 0000000..19706df --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/ForwardRight.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 39f1f08d1c8393841aca09fc8b0d3abb +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/GamePad.png b/td/Assets/Textures/ColorfulButtons/GamePad.png Binary files differnew file mode 100644 index 0000000..7ea6ba4 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/GamePad.png diff --git a/td/Assets/Textures/ColorfulButtons/GamePad.png.meta b/td/Assets/Textures/ColorfulButtons/GamePad.png.meta new file mode 100644 index 0000000..e516020 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/GamePad.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 3e90f3a89ba6b4b46bcfa784319cb451 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Google.png b/td/Assets/Textures/ColorfulButtons/Google.png Binary files differnew file mode 100644 index 0000000..499461a --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Google.png diff --git a/td/Assets/Textures/ColorfulButtons/Google.png.meta b/td/Assets/Textures/ColorfulButtons/Google.png.meta new file mode 100644 index 0000000..7664e3d --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Google.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: deb8b63bc1576db4cb31fad6bd1bc2c6 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Heart.png b/td/Assets/Textures/ColorfulButtons/Heart.png Binary files differnew file mode 100644 index 0000000..5b250e6 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Heart.png diff --git a/td/Assets/Textures/ColorfulButtons/Heart.png.meta b/td/Assets/Textures/ColorfulButtons/Heart.png.meta new file mode 100644 index 0000000..7504d86 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Heart.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 976cc2e03e4d9394592903c03525c6b1 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Home.png b/td/Assets/Textures/ColorfulButtons/Home.png Binary files differnew file mode 100644 index 0000000..deb4ea3 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Home.png diff --git a/td/Assets/Textures/ColorfulButtons/Home.png.meta b/td/Assets/Textures/ColorfulButtons/Home.png.meta new file mode 100644 index 0000000..f0f4c8c --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Home.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 1e4b8e6fd1bd5404ba17585f62e571c3 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Instagram.png b/td/Assets/Textures/ColorfulButtons/Instagram.png Binary files differnew file mode 100644 index 0000000..46f625b --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Instagram.png diff --git a/td/Assets/Textures/ColorfulButtons/Instagram.png.meta b/td/Assets/Textures/ColorfulButtons/Instagram.png.meta new file mode 100644 index 0000000..081fe76 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Instagram.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: e71cad56ad735314382d56a45ab59e88 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Left.png b/td/Assets/Textures/ColorfulButtons/Left.png Binary files differnew file mode 100644 index 0000000..f761950 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Left.png diff --git a/td/Assets/Textures/ColorfulButtons/Left.png.meta b/td/Assets/Textures/ColorfulButtons/Left.png.meta new file mode 100644 index 0000000..2e13027 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Left.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 822655e6b73830b4d823770a979f3bb5 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Menu.png b/td/Assets/Textures/ColorfulButtons/Menu.png Binary files differnew file mode 100644 index 0000000..e843f82 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Menu.png diff --git a/td/Assets/Textures/ColorfulButtons/Menu.png.meta b/td/Assets/Textures/ColorfulButtons/Menu.png.meta new file mode 100644 index 0000000..b66bc0d --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Menu.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: ffb63111dcc1a1b4c9c1bb12e3c90bef +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Message.png b/td/Assets/Textures/ColorfulButtons/Message.png Binary files differnew file mode 100644 index 0000000..53fa412 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Message.png diff --git a/td/Assets/Textures/ColorfulButtons/Message.png.meta b/td/Assets/Textures/ColorfulButtons/Message.png.meta new file mode 100644 index 0000000..3cefddc --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Message.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 28865891e0825764bb7ab8623b8cf0c4 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Minus.png b/td/Assets/Textures/ColorfulButtons/Minus.png Binary files differnew file mode 100644 index 0000000..3f9a6dd --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Minus.png diff --git a/td/Assets/Textures/ColorfulButtons/Minus.png.meta b/td/Assets/Textures/ColorfulButtons/Minus.png.meta new file mode 100644 index 0000000..ca58b98 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Minus.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 93b3d004e1ed7884b9bd712e5a6f9ceb +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Music.png b/td/Assets/Textures/ColorfulButtons/Music.png Binary files differnew file mode 100644 index 0000000..da48ff0 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Music.png diff --git a/td/Assets/Textures/ColorfulButtons/Music.png.meta b/td/Assets/Textures/ColorfulButtons/Music.png.meta new file mode 100644 index 0000000..ee20901 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Music.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 11d39cec7ab25b94f9556b780f7321ee +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Pause.png b/td/Assets/Textures/ColorfulButtons/Pause.png Binary files differnew file mode 100644 index 0000000..e5fb7e5 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Pause.png diff --git a/td/Assets/Textures/ColorfulButtons/Pause.png.meta b/td/Assets/Textures/ColorfulButtons/Pause.png.meta new file mode 100644 index 0000000..9cb17dd --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Pause.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: d97994fc05d31fd449a0b49d2efaa673 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Play.png b/td/Assets/Textures/ColorfulButtons/Play.png Binary files differnew file mode 100644 index 0000000..8142af5 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Play.png diff --git a/td/Assets/Textures/ColorfulButtons/Play.png.meta b/td/Assets/Textures/ColorfulButtons/Play.png.meta new file mode 100644 index 0000000..d5bab47 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Play.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 157e83f568eca524aa8432e7996a683b +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Plus.png b/td/Assets/Textures/ColorfulButtons/Plus.png Binary files differnew file mode 100644 index 0000000..a253080 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Plus.png diff --git a/td/Assets/Textures/ColorfulButtons/Plus.png.meta b/td/Assets/Textures/ColorfulButtons/Plus.png.meta new file mode 100644 index 0000000..97ce9ad --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Plus.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 07be1bf83b93e8042a91bf63f56ba047 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/PowerUp.png b/td/Assets/Textures/ColorfulButtons/PowerUp.png Binary files differnew file mode 100644 index 0000000..c48f040 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/PowerUp.png diff --git a/td/Assets/Textures/ColorfulButtons/PowerUp.png.meta b/td/Assets/Textures/ColorfulButtons/PowerUp.png.meta new file mode 100644 index 0000000..d0bf51b --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/PowerUp.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: efbf1c0c1cd620e4fa0904e56057e21c +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Question.png b/td/Assets/Textures/ColorfulButtons/Question.png Binary files differnew file mode 100644 index 0000000..3a66a35 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Question.png diff --git a/td/Assets/Textures/ColorfulButtons/Question.png.meta b/td/Assets/Textures/ColorfulButtons/Question.png.meta new file mode 100644 index 0000000..007a0a1 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Question.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 3f181d0b5ff4ffd4ab171357be626f5e +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Retry.png b/td/Assets/Textures/ColorfulButtons/Retry.png Binary files differnew file mode 100644 index 0000000..e7c3d56 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Retry.png diff --git a/td/Assets/Textures/ColorfulButtons/Retry.png.meta b/td/Assets/Textures/ColorfulButtons/Retry.png.meta new file mode 100644 index 0000000..1a6a4c8 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Retry.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: feff2c38632b01640b8c4291403a8cde +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Right.png b/td/Assets/Textures/ColorfulButtons/Right.png Binary files differnew file mode 100644 index 0000000..44af1f1 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Right.png diff --git a/td/Assets/Textures/ColorfulButtons/Right.png.meta b/td/Assets/Textures/ColorfulButtons/Right.png.meta new file mode 100644 index 0000000..0560a4f --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Right.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 3e43c73fd8ac9fe4698150e74f61f816 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Settings.png b/td/Assets/Textures/ColorfulButtons/Settings.png Binary files differnew file mode 100644 index 0000000..dfce4a5 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Settings.png diff --git a/td/Assets/Textures/ColorfulButtons/Settings.png.meta b/td/Assets/Textures/ColorfulButtons/Settings.png.meta new file mode 100644 index 0000000..4055208 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Settings.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 14a48232720b008449c9d4ed3f0a26e8 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Share.png b/td/Assets/Textures/ColorfulButtons/Share.png Binary files differnew file mode 100644 index 0000000..4883687 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Share.png diff --git a/td/Assets/Textures/ColorfulButtons/Share.png.meta b/td/Assets/Textures/ColorfulButtons/Share.png.meta new file mode 100644 index 0000000..a860d8a --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Share.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 4638b3125c90bf14ba97afe4b2c6b047 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Shop.png b/td/Assets/Textures/ColorfulButtons/Shop.png Binary files differnew file mode 100644 index 0000000..1f3a644 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Shop.png diff --git a/td/Assets/Textures/ColorfulButtons/Shop.png.meta b/td/Assets/Textures/ColorfulButtons/Shop.png.meta new file mode 100644 index 0000000..ddcaf13 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Shop.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 286bb98c3ea19574f88d3f3aa497c8e6 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/SoundOff.png b/td/Assets/Textures/ColorfulButtons/SoundOff.png Binary files differnew file mode 100644 index 0000000..21599ca --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/SoundOff.png diff --git a/td/Assets/Textures/ColorfulButtons/SoundOff.png.meta b/td/Assets/Textures/ColorfulButtons/SoundOff.png.meta new file mode 100644 index 0000000..17712e7 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/SoundOff.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 93112396d229e7b4b8e905b395efd4f0 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/SoundOn.png b/td/Assets/Textures/ColorfulButtons/SoundOn.png Binary files differnew file mode 100644 index 0000000..f6034c1 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/SoundOn.png diff --git a/td/Assets/Textures/ColorfulButtons/SoundOn.png.meta b/td/Assets/Textures/ColorfulButtons/SoundOn.png.meta new file mode 100644 index 0000000..3367743 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/SoundOn.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 667be6da6ce013a4a86ca7276d9950cf +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Trash.png b/td/Assets/Textures/ColorfulButtons/Trash.png Binary files differnew file mode 100644 index 0000000..47f7bbc --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Trash.png diff --git a/td/Assets/Textures/ColorfulButtons/Trash.png.meta b/td/Assets/Textures/ColorfulButtons/Trash.png.meta new file mode 100644 index 0000000..8877a46 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Trash.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: e80e8e1ba68b64a4f9da7aebb4092391 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/ColorfulButtons/Trophy.png b/td/Assets/Textures/ColorfulButtons/Trophy.png Binary files differnew file mode 100644 index 0000000..b0181bf --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Trophy.png diff --git a/td/Assets/Textures/ColorfulButtons/Trophy.png.meta b/td/Assets/Textures/ColorfulButtons/Trophy.png.meta new file mode 100644 index 0000000..e4eaac8 --- /dev/null +++ b/td/Assets/Textures/ColorfulButtons/Trophy.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: f7f8d7ac04e6e59428eb846b5ff4fe6b +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/PSD-Files.meta b/td/Assets/Textures/PSD-Files.meta new file mode 100644 index 0000000..2fc69c0 --- /dev/null +++ b/td/Assets/Textures/PSD-Files.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b38456286d8f54e808877f4b9e2a6767 +folderAsset: yes +timeCreated: 1508014921 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Textures/PSD-Files/Background b/td/Assets/Textures/PSD-Files/Background Binary files differnew file mode 100644 index 0000000..1e1f7aa --- /dev/null +++ b/td/Assets/Textures/PSD-Files/Background diff --git a/td/Assets/Textures/PSD-Files/Background.meta b/td/Assets/Textures/PSD-Files/Background.meta new file mode 100644 index 0000000..32b2e3c --- /dev/null +++ b/td/Assets/Textures/PSD-Files/Background.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 147482996860d4625a92d663aca187d5 +timeCreated: 1508014890 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: |