diff options
author | Jakob Stendahl <jakob.stendahl@outlook.com> | 2017-10-07 22:57:48 +0200 |
---|---|---|
committer | Jakob Stendahl <jakob.stendahl@outlook.com> | 2017-10-07 22:57:48 +0200 |
commit | 09c0b2eed74a77010ba686061b147c9cace88ed6 (patch) | |
tree | 9b5c013fc7a679ccca3e2074773d29d7f1674bbc | |
parent | 69a6cc2555d8dfc8314a08e6cef6b67fa1177bf0 (diff) | |
download | TD-09c0b2eed74a77010ba686061b147c9cace88ed6.tar.gz TD-09c0b2eed74a77010ba686061b147c9cace88ed6.zip |
Trur æ la te VCS, ikke meninga, men æ trur itj de e nå problem egt
31 files changed, 2793 insertions, 292 deletions
diff --git a/td/.idea/.idea.td/.idea/contentModel.xml b/td/.idea/.idea.td/.idea/contentModel.xml new file mode 100644 index 0000000..4379302 --- /dev/null +++ b/td/.idea/.idea.td/.idea/contentModel.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="RiderRiderContentModelStore"> + <excludedPaths> + <Path>Temp</Path> + <Path>Library</Path> + </excludedPaths> + </component> +</project>
\ No newline at end of file diff --git a/td/.idea/.idea.td/.idea/modules.xml b/td/.idea/.idea.td/.idea/modules.xml new file mode 100644 index 0000000..471a22f --- /dev/null +++ b/td/.idea/.idea.td/.idea/modules.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/.idea/.idea.td/riderModule.iml" filepath="$PROJECT_DIR$/.idea/.idea.td/riderModule.iml" /> + </modules> + </component> +</project>
\ No newline at end of file diff --git a/td/.idea/.idea.td/.idea/vcs.xml b/td/.idea/.idea.td/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/td/.idea/.idea.td/.idea/vcs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="$PROJECT_DIR$/.." vcs="Git" /> + </component> +</project>
\ No newline at end of file diff --git a/td/.idea/.idea.td/.idea/workspace.xml b/td/.idea/.idea.td/.idea/workspace.xml new file mode 100644 index 0000000..ad4a00d --- /dev/null +++ b/td/.idea/.idea.td/.idea/workspace.xml @@ -0,0 +1,1141 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ChangeListManager"> + <list default="true" id="60ebe84b-2a99-4077-bdde-5542cfeedadb" name="Default" comment=""> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Assets/Materials/projectile.mat" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Assets/Prefabs/Castle.prefab" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Assets/Prefabs/Towers/projectiles/bullet.prefab" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/.idea.td/.idea/contentModel.xml" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/.idea.td/.idea/modules.xml" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/.idea.td/.idea/vcs.xml" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/.idea.td/.idea/workspace.xml" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/.idea.td/riderModule.iml" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Assets/Materials/projectile.mat.meta" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Assets/Plugins.meta" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Assets/Plugins/Editor.meta" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Assets/Plugins/Editor/JetBrains.meta" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Assets/Plugins/Editor/JetBrains/Unity3DRider.cs" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Assets/Plugins/Editor/JetBrains/Unity3DRider.cs.meta" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Assets/Prefabs/Castle.prefab.meta" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Assets/Prefabs/Towers/projectiles.meta" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Assets/Prefabs/Towers/projectiles/bullet.prefab.meta" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Assets/Scripts/Projectile.cs" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Assets/Scripts/Projectile.cs.meta" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Assets/Scripts/castle.cs" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Assets/Scripts/castle.cs.meta" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Assets/Scripts/Enemy.cs" afterPath="$PROJECT_DIR$/Assets/Scripts/Enemy.cs" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Assets/Scripts/EnemySpawner.cs" afterPath="$PROJECT_DIR$/Assets/Scripts/EnemySpawner.cs" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Assets/Scripts/cameraHandler.cs" afterPath="$PROJECT_DIR$/Assets/Scripts/cameraHandler.cs" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Assets/Scripts/developerMode.cs" afterPath="$PROJECT_DIR$/Assets/Scripts/developerMode.cs" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Assets/Scripts/enableChild.cs" afterPath="$PROJECT_DIR$/Assets/Scripts/enableChild.cs" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Assets/Scripts/gameStats.cs" afterPath="$PROJECT_DIR$/Assets/Scripts/gameStats.cs" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Assets/Scripts/mainGUI.cs" afterPath="$PROJECT_DIR$/Assets/Scripts/mainGUI.cs" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Assets/Scripts/player.cs" afterPath="$PROJECT_DIR$/Assets/Scripts/player.cs" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Assets/Scripts/tower.cs" afterPath="$PROJECT_DIR$/Assets/Scripts/tower.cs" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Assets/Scripts/waveSpawner.cs" afterPath="$PROJECT_DIR$/Assets/Scripts/waveSpawner.cs" /> + </list> + <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> + <option name="TRACKING_ENABLED" value="true" /> + <option name="SHOW_DIALOG" value="false" /> + <option name="HIGHLIGHT_CONFLICTS" value="true" /> + <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> + <option name="LAST_RESOLUTION" value="IGNORE" /> + </component> + <component name="DatabaseView"> + <option name="SHOW_INTERMEDIATE" value="true" /> + <option name="GROUP_SCHEMA" value="true" /> + <option name="GROUP_CONTENTS" value="false" /> + <option name="SORT_POSITIONED" value="false" /> + <option name="SHOW_TABLE_DETAILS" value="true" /> + <option name="SHOW_EMPTY_GROUPS" value="false" /> + <option name="AUTO_SCROLL_FROM_SOURCE" value="false" /> + </component> + <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" /> + <component name="FavoritesManager"> + <favorites_list name="td" /> + </component> + <component name="FileColors"> + <fileColor scope="Non-Project Files (Material Default)" color="2E3C43" /> + <fileColor scope="Non-Project Files (Material Darker)" color="323232" /> + <fileColor scope="Non-Project Files (Material Lighter)" color="eae8e8" /> + <fileColor scope="Non-Project Files (Material Palenight)" color="2f2e43" /> + </component> + <component name="FileEditorManager"> + <leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> + <file leaf-file-name="cameraHandler.cs" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/Assets/Scripts/cameraHandler.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="63"> + <caret line="3" column="7" lean-forward="false" selection-start-line="3" selection-start-column="7" selection-end-line="3" selection-end-column="7" /> + <folding> + <marker date="1507408937000" expanded="true" signature="63:3908" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="750:787" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="804:1177" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="889:1017" ph="/* if (GameManager.Instance.MenuManager.HasOpenMenu || GameManager.Instance.BitSpawnManager.IsSpawningBits) { ... */" /> + <marker date="1507408937000" expanded="true" signature="1102:1125" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1199:2467" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1228:2464" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1280:1413" ph="/* If the touch began, capture its position and its finger ID. ... */" /> + <marker date="1507408937000" expanded="true" signature="1490:1593" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1670:1707" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1884:1953" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1965:2085" ph="/* Zoom based on the distance between the new positions compared to the ... */" /> + <marker date="1507408937000" expanded="true" signature="2489:3051" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="2493:2621" ph="/* On mouse down, capture it's position. ... */" /> + <marker date="1507408937000" expanded="true" signature="2657:2727" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="2764:2792" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="2827:2867" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3097:3265" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3134:3150" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3307:3674" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3328:3344" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3698:3905" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="EnemySpawner.cs" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/Assets/Scripts/EnemySpawner.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="105"> + <caret line="7" column="54" lean-forward="false" selection-start-line="7" selection-start-column="54" selection-end-line="7" selection-end-column="54" /> + <folding> + <marker date="1507409550000" expanded="false" signature="6:78" ph="..." /> + <marker date="1507409550000" expanded="true" signature="122:1313" ph="{...}" /> + <marker date="1507409550000" expanded="true" signature="125:263" ph="/* This is a class that spawns an enemy with a random interval ... */" /> + <marker date="1507409550000" expanded="true" signature="629:714" ph="{...}" /> + <marker date="1507409550000" expanded="true" signature="670:711" ph="{...}" /> + <marker date="1507409550000" expanded="true" signature="730:819" ph="{...}" /> + <marker date="1507409550000" expanded="true" signature="837:1311" ph="{...}" /> + <marker date="1507409550000" expanded="true" signature="867:1307" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="Unity3DRider.cs" pinned="false" current-in-tab="true"> + <entry file="file://$PROJECT_DIR$/Assets/Plugins/Editor/JetBrains/Unity3DRider.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="16464"> + <caret line="798" column="25" lean-forward="false" selection-start-line="798" selection-start-column="25" selection-end-line="798" selection-end-column="25" /> + <folding> + <marker date="1507402189000" expanded="true" signature="0:383" ph="/* ------------------------------------------------------------------------------ ... */" /> + <marker date="1507402189000" expanded="false" signature="390:784" ph="..." /> + <marker date="1507402189000" expanded="true" signature="820:12342" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="882:12340" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="937:2557" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="1170:1220" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="1621:2502" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="1670:2394" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="1759:1914" ph="/* RiderPlugin.Log(RiderPlugin.LoggingLevel.Info, "mc[1]: "+mc[1].Value); ... */" /> + <marker date="1507402189000" expanded="true" signature="2038:2165" ph="/* RiderPlugin.Log(RiderPlugin.LoggingLevel.Info, "to:" + to); ... */" /> + <marker date="1507402189000" expanded="true" signature="2407:2454" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="2625:2802" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="2866:4045" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="3327:3479" ph="/* Unity_5_6_OR_NEWER switched to nunit 3.5 ... */" /> + <marker date="1507402189000" expanded="true" signature="4137:4426" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="4350:4420" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="4538:5164" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="4756:5158" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="4867:5150" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="6201:6657" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="6784:8315" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="6829:8309" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="6951:7189" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="6972:7115" ph="/* Add AllowUnsafeBlocks to the .csproj. Unity doesn't generate it (although VSTU does). ... */" /> + <marker date="1507402189000" expanded="true" signature="7244:8301" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="7265:7602" ph="/* defines could be ... */" /> + <marker date="1507402189000" expanded="true" signature="7754:8207" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="7849:8195" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="8433:8855" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="8754:8849" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="8953:9100" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="9165:9250" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="9315:9400" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="9511:10296" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="9907:10290" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="10454:10830" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="10727:10824" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="10913:11616" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="10926:11153" ph="/* Add LangVersion to the .csproj. Unity doesn't generate it (although VSTU does). ... */" /> + <marker date="1507402189000" expanded="true" signature="11378:11444" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="11455:11610" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="11662:12336" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="12378:45986" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="12435:45984" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="12579:12884" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="12715:12878" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="12927:13132" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="13180:14825" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="13245:14791" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="13337:13601" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="13794:14211" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="14283:14372" ph="/* "/Applications/*Rider*.app" ... */" /> + <marker date="1507402189000" expanded="true" signature="14415:14548" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="14882:15616" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="14898:15610" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="15030:15573" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="15187:15563" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="15439:15551" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="15665:16033" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="15681:15878" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="15888:16027" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="15927:16017" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="16104:16430" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="16120:16253" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="16285:16301" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="16388:16404" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="16466:16641" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="16671:16736" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="16789:16967" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="17012:17163" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="17197:17397" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="17213:17391" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="17423:17796" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="17631:17728" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="17747:17790" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="17839:18319" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="18418:18734" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="18471:18667" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="18787:18857" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="18919:18988" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="19041:19473" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="19479:19683" ph="/// Creates and deletes Library/EditorInstance.json containing version and process ID ... " /> + <marker date="1507402189000" expanded="true" signature="19761:20497" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="20347:20483" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="20503:20666" ph="/// Asset Open Callback (from Unity) ... " /> + <marker date="1507402189000" expanded="true" signature="20773:22413" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="20798:22386" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="20832:21120" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="20853:21018" ph="/* make sure the plugin was initialized first. ... */" /> + <marker date="1507402189000" expanded="true" signature="22197:22357" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="22504:23642" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="22598:22708" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="22802:23616" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="22977:23586" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="23182:23422" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="23306:23410" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="23452:23576" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="23751:24334" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="24400:24622" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="24670:25708" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="24755:24793" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="24913:25190" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="25201:25433" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="25750:26705" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="25844:26699" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="25864:26569" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="25948:26559" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="26388:26547" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="26597:26691" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="26751:27209" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="26820:27179" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="26868:27028" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="27054:27098" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="27215:27731" ph="/* The default "Open C## Project" menu item will use the external script editor to load the .sln ... */" /> + <marker date="1507402189000" expanded="true" signature="27828:27989" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="28094:28128" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="28134:28208" ph="/// Force Unity To Write Project File ... " /> + <marker date="1507402189000" expanded="true" signature="28247:28541" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="28547:28758" ph="/// JetBrains Rider Integration Preferences Item ... " /> + <marker date="1507402189000" expanded="true" signature="28827:31080" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="28984:29784" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="29415:29586" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="29599:29775" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="30913:31036" ph="/* if (GUILayout.Button("reset RiderInitializedOnce = false")) ... */" /> + <marker date="1507402189000" expanded="true" signature="31144:31575" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="31581:32574" ph="SystemInfoRiderPlugin" /> + <marker date="1507402189000" expanded="true" signature="31649:32430" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="31719:32424" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="31739:32416" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="32606:34420" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="32620:32873" ph="/// Gets the ID of the process that owns the window. ... " /> + <marker date="1507402189000" expanded="true" signature="32929:33073" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="33081:33207" ph="/// Lists the handles of all the top-level windows currently available in the system. ... " /> + <marker date="1507402189000" expanded="true" signature="33267:33583" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="33368:33436" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="33665:33788" ph="[...]" /> + <marker date="1507402189000" expanded="true" signature="34018:34141" ph="[...]" /> + <marker date="1507402189000" expanded="true" signature="34216:34339" ph="[...]" /> + <marker date="1507402189000" expanded="true" signature="34459:45980" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="34472:45446" ph="Signitures imported from http://pinvoke.net" /> + <marker date="1507402189000" expanded="true" signature="34754:35213" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="35312:35794" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="35832:37706" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="35849:36497" ph="/// Do not display a dialog box if the link cannot be resolved. When SLR_NO_UI is set, ... " /> + <marker date="1507402189000" expanded="true" signature="36621:36865" ph="///If the link object has changed, update its path and list of identifiers. ... " /> + <marker date="1507402189000" expanded="true" signature="37191:37568" ph="///Disable distributed link tracking. By default, distributed link tracking tracks ... " /> + <marker date="1507402189000" expanded="true" signature="37966:43436" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="43586:43773" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="43782:43899" ph="[...]" /> + <marker date="1507402189000" expanded="true" signature="43946:45186" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="45300:45383" ph="[...]" /> + <marker date="1507402189000" expanded="true" signature="45412:45428" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="45499:45974" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="45615:45756" ph="/* If I can get hold of the hwnd call resolve first. This handles moved and renamed files. ... */" /> + </folding> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="Projectile.cs" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/Assets/Scripts/Projectile.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="0"> + <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <folding> + <marker date="1507408922000" expanded="true" signature="60:822" ph="{...}" /> + <marker date="1507408922000" expanded="true" signature="311:335" ph="{...}" /> + <marker date="1507408922000" expanded="true" signature="356:705" ph="{...}" /> + <marker date="1507408922000" expanded="true" signature="382:423" ph="{...}" /> + <marker date="1507408922000" expanded="true" signature="587:620" ph="{...}" /> + <marker date="1507408922000" expanded="true" signature="725:819" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="tower.cs" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/Assets/Scripts/tower.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="0"> + <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <folding> + <marker date="1507408926000" expanded="true" signature="55:5166" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="1732:2053" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="2071:3868" ph="{...}" /> + <marker date="1507408926000" expanded="false" signature="2076:3319" ph="placeTower" /> + <marker date="1507408926000" expanded="true" signature="2116:3306" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="2176:2780" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="2447:2522" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="2708:2774" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="2958:3284" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="3393:3409" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="3759:3826" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="3884:4162" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4093:4159" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4185:4819" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4189:4285" ph="/* Method that updates the currentTarget. ... */" /> + <marker date="1507408926000" expanded="true" signature="4467:4680" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4604:4676" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4744:4786" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4858:4883" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4921:4946" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4984:5010" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="5041:5163" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="Enemy.cs" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/Assets/Scripts/Enemy.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="0"> + <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <folding> + <marker date="1507408930000" expanded="true" signature="6:52" ph="..." /> + <marker date="1507408930000" expanded="true" signature="89:1288" ph="{...}" /> + <marker date="1507408930000" expanded="true" signature="92:214" ph="/* This is a general class that contains an enemy, ... */" /> + <marker date="1507408930000" expanded="true" signature="745:1283" ph="{...}" /> + <marker date="1507408930000" expanded="true" signature="852:972" ph="{...}" /> + <marker date="1507408930000" expanded="true" signature="1204:1280" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + </file> + </leaf> + </component> + <component name="Git.Settings"> + <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." /> + </component> + <component name="HighlightingSettingsPerFile"> + <setting file="file://$PROJECT_DIR$/Assets/Scripts/castle.cs" root0="FORCE_HIGHLIGHTING" /> + <setting file="file://$PROJECT_DIR$/Assets/Scripts/tower.cs" root0="FORCE_HIGHLIGHTING" /> + <setting file="file://$PROJECT_DIR$/Assets/Scripts/player.cs" root0="FORCE_HIGHLIGHTING" /> + <setting file="file://$PROJECT_DIR$/Assets/Scripts/EnemySpawner.cs" root0="FORCE_HIGHLIGHTING" /> + <setting file="file://$PROJECT_DIR$/Assets/Scripts/Enemy.cs" root0="FORCE_HIGHLIGHTING" /> + <setting file="file://$PROJECT_DIR$/Assets/Scripts/Projectile.cs" root0="FORCE_HIGHLIGHTING" /> + <setting file="file://$PROJECT_DIR$/Assets/Scripts/cameraHandler.cs" root0="FORCE_HIGHLIGHTING" /> + <setting file="file://$PROJECT_DIR$/Assets/Plugins/Editor/JetBrains/Unity3DRider.cs" root0="FORCE_HIGHLIGHTING" /> + </component> + <component name="IdeDocumentHistory"> + <option name="CHANGED_PATHS"> + <list> + <option value="$PROJECT_DIR$/Assets/Scripts/castle.cs" /> + <option value="$PROJECT_DIR$/Assets/Scripts/projectile.cs" /> + <option value="$PROJECT_DIR$/Assets/Scripts/player.cs" /> + <option value="$PROJECT_DIR$/Assets/Scripts/Projectile.cs" /> + <option value="$PROJECT_DIR$/Assets/Scripts/tower.cs" /> + <option value="$PROJECT_DIR$/Assets/Scripts/Enemy.cs" /> + <option value="$PROJECT_DIR$/Assets/Scripts/cameraHandler.cs" /> + <option value="$PROJECT_DIR$/Assets/Scripts/EnemySpawner.cs" /> + </list> + </option> + </component> + <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" /> + <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" /> + <component name="JsGulpfileManager"> + <detection-done>true</detection-done> + <sorting>DEFINITION_ORDER</sorting> + </component> + <component name="ProjectFrameBounds"> + <option name="width" value="1680" /> + <option name="height" value="1050" /> + </component> + <component name="ProjectLevelVcsManager" settingsEditedManually="true" /> + <component name="ProjectView"> + <navigator currentView="SolutionExplorer" proportions="" version="1"> + <flattenPackages /> + <showMembers /> + <showModules /> + <showLibraryContents /> + <hideEmptyPackages /> + <abbreviatePackageNames /> + <autoscrollToSource /> + <autoscrollFromSource /> + <sortByType /> + <manualOrder /> + <foldersAlwaysOnTop value="true" /> + </navigator> + <panes> + <pane id="SolutionExplorer"> + <subPane> + <PATH> + <PATH_ELEMENT> + <option name="myItemId" /> + <option name="myItemType" value="com.jetbrains.rider.projectView.solutionExplorer.SolutionExplorerViewPane$ProjectViewPaneTreeStructure$createRoot$1" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="td (2 projects)" /> + <option name="myItemType" value="com.jetbrains.rider.projectView.solutionExplorer.SolutionExplorerNodeRider" /> + </PATH_ELEMENT> + </PATH> + <PATH> + <PATH_ELEMENT> + <option name="myItemId" /> + <option name="myItemType" value="com.jetbrains.rider.projectView.solutionExplorer.SolutionExplorerViewPane$ProjectViewPaneTreeStructure$createRoot$1" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="td (2 projects)" /> + <option name="myItemType" value="com.jetbrains.rider.projectView.solutionExplorer.SolutionExplorerNodeRider" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="Assembly-CSharp" /> + <option name="myItemType" value="com.jetbrains.rider.projectView.solutionExplorer.SolutionExplorerNodeRider" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="Assets" /> + <option name="myItemType" value="com.jetbrains.rider.projectView.solutionExplorer.SolutionExplorerNodeRider" /> + </PATH_ELEMENT> + </PATH> + <PATH> + <PATH_ELEMENT> + <option name="myItemId" /> + <option name="myItemType" value="com.jetbrains.rider.projectView.solutionExplorer.SolutionExplorerViewPane$ProjectViewPaneTreeStructure$createRoot$1" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="td (2 projects)" /> + <option name="myItemType" value="com.jetbrains.rider.projectView.solutionExplorer.SolutionExplorerNodeRider" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="Assembly-CSharp" /> + <option name="myItemType" value="com.jetbrains.rider.projectView.solutionExplorer.SolutionExplorerNodeRider" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="Assets" /> + <option name="myItemType" value="com.jetbrains.rider.projectView.solutionExplorer.SolutionExplorerNodeRider" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="Scripts" /> + <option name="myItemType" value="com.jetbrains.rider.projectView.solutionExplorer.SolutionExplorerNodeRider" /> + </PATH_ELEMENT> + </PATH> + <PATH> + <PATH_ELEMENT> + <option name="myItemId" /> + <option name="myItemType" value="com.jetbrains.rider.projectView.solutionExplorer.SolutionExplorerViewPane$ProjectViewPaneTreeStructure$createRoot$1" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="td (2 projects)" /> + <option name="myItemType" value="com.jetbrains.rider.projectView.solutionExplorer.SolutionExplorerNodeRider" /> + </PATH_ELEMENT> + <PATH_ELEMENT> + <option name="myItemId" value="Assembly-CSharp" /> + <option name="myItemType" value="com.jetbrains.rider.projectView.solutionExplorer.SolutionExplorerNodeRider" /> + </PATH_ELEMENT> + </PATH> + </subPane> + <option name="show-file-system" value="false" /> + <option name="show-all-items" value="false" /> + </pane> + <pane id="Scratches" /> + </panes> + </component> + <component name="PropertiesComponent"> + <property name="WebServerToolWindowFactoryState" value="false" /> + <property name="settings.editor.selected.configurable" value="preferences.toDoOptions" /> + <property name="FullScreen" value="true" /> + <property name="nodejs_interpreter_path" value="/opt/local/bin/node" /> + <property name="node.js.path.for.package.stylelint" value="project" /> + <property name="node.js.detected.package.stylelint" value="true" /> + <property name="node.js.selected.package.stylelint" value="" /> + <property name="settings.editor.splitter.proportion" value="0.25636008" /> + </component> + <component name="RunDashboard"> + <option name="ruleStates"> + <list> + <RuleState> + <option name="name" value="ConfigurationTypeDashboardGroupingRule" /> + </RuleState> + <RuleState> + <option name="name" value="StatusDashboardGroupingRule" /> + </RuleState> + </list> + </option> + </component> + <component name="RunManager" selected="Unity Debug.Attach to Unity Editor"> + <configuration default="true" type="DotNetProject" factoryName=".NET Project"> + <option name="PROJECT_PATH" value="" /> + <option name="PROJECT_KIND" value="None" /> + <option name="PROJECT_TFM" value="" /> + <option name="EXE_PATH" value="" /> + <option name="PROGRAM_PARAMETERS" value="" /> + <option name="WORKING_DIRECTORY" value="" /> + <option name="USE_MONO" value="0" /> + <option name="USE_EXTERNAL_CONSOLE" value="0" /> + <envs /> + <method /> + </configuration> + <configuration default="true" type="JavaScriptTestRunnerJest" factoryName="Jest"> + <node-interpreter value="project" /> + <working-dir value="" /> + <envs /> + <scope-kind value="ALL" /> + <method /> + </configuration> + <configuration default="true" type="JavaScriptTestRunnerProtractor" factoryName="Protractor"> + <config-file value="" /> + <node-interpreter value="project" /> + <envs /> + <method /> + </configuration> + <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug"> + <method /> + </configuration> + <configuration default="true" type="NodeJSConfigurationType" factoryName="Node.js" path-to-node="project" working-dir=""> + <method /> + </configuration> + <configuration default="true" type="UNITY_DEBUG_RUN_CONFIGURATION" factoryName="Unity Debug"> + <method /> + </configuration> + <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js"> + <node-interpreter>project</node-interpreter> + <node-options /> + <gulpfile /> + <tasks /> + <arguments /> + <envs /> + <method /> + </configuration> + <configuration default="true" type="js.build_tools.npm" factoryName="npm"> + <command value="run" /> + <scripts /> + <node-interpreter value="project" /> + <envs /> + <method /> + </configuration> + <configuration default="true" type="mocha-javascript-test-runner" factoryName="Mocha"> + <node-interpreter>project</node-interpreter> + <node-options /> + <working-directory /> + <pass-parent-env>true</pass-parent-env> + <envs /> + <ui /> + <extra-mocha-options /> + <test-kind>DIRECTORY</test-kind> + <test-directory /> + <recursive>false</recursive> + <method /> + </configuration> + <configuration default="false" name="Attach to Unity Editor" type="UNITY_DEBUG_RUN_CONFIGURATION" factoryName="Unity Debug"> + <method /> + </configuration> + <list size="1"> + <item index="0" class="java.lang.String" itemvalue="Unity Debug.Attach to Unity Editor" /> + </list> + </component> + <component name="ShelveChangesManager" show_recycled="false"> + <option name="remove_strategy" value="false" /> + </component> + <component name="SvnConfiguration"> + <configuration /> + </component> + <component name="TaskManager"> + <task active="true" id="Default" summary="Default task"> + <changelist id="60ebe84b-2a99-4077-bdde-5542cfeedadb" name="Default" comment="" /> + <created>1507402155822</created> + <option name="number" value="Default" /> + <option name="presentableId" value="Default" /> + <updated>1507402155822</updated> + <workItem from="1507402158809" duration="486000" /> + <workItem from="1507403001494" duration="87000" /> + <workItem from="1507403169280" duration="124000" /> + <workItem from="1507403314681" duration="1504000" /> + <workItem from="1507405035318" duration="1885000" /> + </task> + <servers /> + </component> + <component name="TimeTrackingManager"> + <option name="totallyTimeSpent" value="4086000" /> + </component> + <component name="TodoView"> + <todo-panel id="selected-file"> + <is-autoscroll-to-source value="true" /> + </todo-panel> + <todo-panel id="all"> + <are-packages-shown value="true" /> + <is-autoscroll-to-source value="true" /> + </todo-panel> + </component> + <component name="ToolWindowManager"> + <frame x="0" y="0" width="1680" height="1050" extended-state="0" /> + <layout> + <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32857144" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> + <window_info id="Errors In Solution" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> + <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32844242" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" /> + <window_info id="Unit Tests" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32959184" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" /> + <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> + <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33673468" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" /> + <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32959184" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" /> + <window_info id="NuGet" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32857144" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" /> + <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.17338218" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" /> + <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> + <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> + <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> + <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> + <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" /> + <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> + <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> + <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> + <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> + <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> + <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> + </layout> + </component> + <component name="TypeScriptGeneratedFilesManager"> + <option name="processedProjectFiles" value="true" /> + </component> + <component name="VcsContentAnnotationSettings"> + <option name="myLimit" value="2678400000" /> + </component> + <component name="XDebuggerManager"> + <breakpoint-manager /> + <watches-manager /> + </component> + <component name="editorHistoryManager"> + <entry file="file://$PROJECT_DIR$/Assets/Scripts/cameraHandler.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="1560"> + <caret line="106" column="27" lean-forward="false" selection-start-line="106" selection-start-column="27" selection-end-line="106" selection-end-column="27" /> + <folding> + <marker date="1507408937000" expanded="true" signature="63:3908" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="750:787" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="804:1177" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="889:1017" ph="/* if (GameManager.Instance.MenuManager.HasOpenMenu || GameManager.Instance.BitSpawnManager.IsSpawningBits) { ... */" /> + <marker date="1507408937000" expanded="true" signature="1102:1125" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1199:2467" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1228:2464" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1280:1413" ph="/* If the touch began, capture its position and its finger ID. ... */" /> + <marker date="1507408937000" expanded="true" signature="1490:1593" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1670:1707" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1884:1953" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1965:2085" ph="/* Zoom based on the distance between the new positions compared to the ... */" /> + <marker date="1507408937000" expanded="true" signature="2489:3051" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="2493:2621" ph="/* On mouse down, capture it's position. ... */" /> + <marker date="1507408937000" expanded="true" signature="2657:2727" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="2764:2792" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="2827:2867" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3097:3265" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3134:3150" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3307:3674" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3328:3344" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3698:3905" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/Assets/Scripts/Projectile.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="255"> + <caret line="17" column="0" lean-forward="false" selection-start-line="17" selection-start-column="0" selection-end-line="17" selection-end-column="0" /> + <folding> + <marker date="1507408922000" expanded="true" signature="60:822" ph="{...}" /> + <marker date="1507408922000" expanded="true" signature="311:335" ph="{...}" /> + <marker date="1507408922000" expanded="true" signature="356:705" ph="{...}" /> + <marker date="1507408922000" expanded="true" signature="382:423" ph="{...}" /> + <marker date="1507408922000" expanded="true" signature="587:620" ph="{...}" /> + <marker date="1507408922000" expanded="true" signature="725:819" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/Assets/Scripts/Enemy.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="30"> + <caret line="2" column="17" lean-forward="false" selection-start-line="2" selection-start-column="17" selection-end-line="2" selection-end-column="17" /> + <folding> + <marker date="1507408930000" expanded="true" signature="6:52" ph="..." /> + <marker date="1507408930000" expanded="true" signature="89:1288" ph="{...}" /> + <marker date="1507408930000" expanded="true" signature="92:214" ph="/* This is a general class that contains an enemy, ... */" /> + <marker date="1507408930000" expanded="true" signature="745:1283" ph="{...}" /> + <marker date="1507408930000" expanded="true" signature="852:972" ph="{...}" /> + <marker date="1507408930000" expanded="true" signature="1204:1280" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/Assets/Scripts/tower.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="1560"> + <caret line="106" column="47" lean-forward="false" selection-start-line="106" selection-start-column="47" selection-end-line="106" selection-end-column="47" /> + <folding> + <marker date="1507408926000" expanded="true" signature="55:5166" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="1732:2053" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="2071:3868" ph="{...}" /> + <marker date="1507408926000" expanded="false" signature="2076:3319" ph="placeTower" /> + <marker date="1507408926000" expanded="true" signature="2116:3306" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="2176:2780" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="2447:2522" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="2708:2774" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="2958:3284" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="3393:3409" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="3759:3826" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="3884:4162" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4093:4159" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4185:4819" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4189:4285" ph="/* Method that updates the currentTarget. ... */" /> + <marker date="1507408926000" expanded="true" signature="4467:4680" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4604:4676" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4744:4786" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4858:4883" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4921:4946" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4984:5010" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="5041:5163" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/Assets/Scripts/cameraHandler.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="0"> + <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <folding> + <marker date="1507408937000" expanded="true" signature="63:3908" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="750:787" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="804:1177" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="889:1017" ph="/* if (GameManager.Instance.MenuManager.HasOpenMenu || GameManager.Instance.BitSpawnManager.IsSpawningBits) { ... */" /> + <marker date="1507408937000" expanded="true" signature="1102:1125" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1199:2467" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1228:2464" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1280:1413" ph="/* If the touch began, capture its position and its finger ID. ... */" /> + <marker date="1507408937000" expanded="true" signature="1490:1593" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1670:1707" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1884:1953" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1965:2085" ph="/* Zoom based on the distance between the new positions compared to the ... */" /> + <marker date="1507408937000" expanded="true" signature="2489:3051" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="2493:2621" ph="/* On mouse down, capture it's position. ... */" /> + <marker date="1507408937000" expanded="true" signature="2657:2727" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="2764:2792" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="2827:2867" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3097:3265" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3134:3150" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3307:3674" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3328:3344" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3698:3905" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/Assets/Scripts/cameraHandler.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="0"> + <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <folding> + <marker date="1507408937000" expanded="true" signature="63:3908" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="750:787" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="804:1177" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="889:1017" ph="/* if (GameManager.Instance.MenuManager.HasOpenMenu || GameManager.Instance.BitSpawnManager.IsSpawningBits) { ... */" /> + <marker date="1507408937000" expanded="true" signature="1102:1125" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1199:2467" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1228:2464" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1280:1413" ph="/* If the touch began, capture its position and its finger ID. ... */" /> + <marker date="1507408937000" expanded="true" signature="1490:1593" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1670:1707" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1884:1953" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1965:2085" ph="/* Zoom based on the distance between the new positions compared to the ... */" /> + <marker date="1507408937000" expanded="true" signature="2489:3051" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="2493:2621" ph="/* On mouse down, capture it's position. ... */" /> + <marker date="1507408937000" expanded="true" signature="2657:2727" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="2764:2792" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="2827:2867" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3097:3265" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3134:3150" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3307:3674" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3328:3344" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3698:3905" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/Assets/Scripts/cameraHandler.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="0"> + <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <folding> + <marker date="1507408937000" expanded="true" signature="63:3908" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="750:787" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="804:1177" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="889:1017" ph="/* if (GameManager.Instance.MenuManager.HasOpenMenu || GameManager.Instance.BitSpawnManager.IsSpawningBits) { ... */" /> + <marker date="1507408937000" expanded="true" signature="1102:1125" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1199:2467" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1228:2464" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1280:1413" ph="/* If the touch began, capture its position and its finger ID. ... */" /> + <marker date="1507408937000" expanded="true" signature="1490:1593" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1670:1707" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1884:1953" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1965:2085" ph="/* Zoom based on the distance between the new positions compared to the ... */" /> + <marker date="1507408937000" expanded="true" signature="2489:3051" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="2493:2621" ph="/* On mouse down, capture it's position. ... */" /> + <marker date="1507408937000" expanded="true" signature="2657:2727" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="2764:2792" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="2827:2867" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3097:3265" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3134:3150" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3307:3674" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3328:3344" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3698:3905" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/Assets/Scripts/castle.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="115"> + <caret line="7" column="10" lean-forward="false" selection-start-line="7" selection-start-column="10" selection-end-line="7" selection-end-column="10" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/Assets/Scripts/player.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="378"> + <caret line="18" column="5" lean-forward="true" selection-start-line="18" selection-start-column="5" selection-end-line="18" selection-end-column="5" /> + <folding> + <marker date="1507408904000" expanded="true" signature="6:78" ph="..." /> + <marker date="1507408904000" expanded="true" signature="116:1189" ph="{...}" /> + <marker date="1507408904000" expanded="true" signature="314:444" ph="{...}" /> + <marker date="1507408904000" expanded="true" signature="447:936" ph="stats" /> + <marker date="1507408904000" expanded="true" signature="484:520" ph="{...}" /> + <marker date="1507408904000" expanded="true" signature="559:598" ph="{...}" /> + <marker date="1507408904000" expanded="true" signature="623:659" ph="{...}" /> + <marker date="1507408904000" expanded="true" signature="695:731" ph="{...}" /> + <marker date="1507408904000" expanded="true" signature="772:808" ph="{...}" /> + <marker date="1507408904000" expanded="true" signature="831:859" ph="{...}" /> + <marker date="1507408904000" expanded="true" signature="897:924" ph="{...}" /> + <marker date="1507408904000" expanded="true" signature="984:1186" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/Assets/Scripts/tower.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="0"> + <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <folding> + <marker date="1507408926000" expanded="true" signature="55:5166" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="1732:2053" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="2071:3868" ph="{...}" /> + <marker date="1507408926000" expanded="false" signature="2076:3319" ph="placeTower" /> + <marker date="1507408926000" expanded="true" signature="2116:3306" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="2176:2780" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="2447:2522" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="2708:2774" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="2958:3284" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="3393:3409" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="3759:3826" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="3884:4162" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4093:4159" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4185:4819" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4189:4285" ph="/* Method that updates the currentTarget. ... */" /> + <marker date="1507408926000" expanded="true" signature="4467:4680" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4604:4676" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4744:4786" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4858:4883" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4921:4946" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="4984:5010" ph="{...}" /> + <marker date="1507408926000" expanded="true" signature="5041:5163" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/Assets/Scripts/Enemy.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="0"> + <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <folding> + <marker date="1507408930000" expanded="true" signature="6:52" ph="..." /> + <marker date="1507408930000" expanded="true" signature="89:1288" ph="{...}" /> + <marker date="1507408930000" expanded="true" signature="92:214" ph="/* This is a general class that contains an enemy, ... */" /> + <marker date="1507408930000" expanded="true" signature="745:1283" ph="{...}" /> + <marker date="1507408930000" expanded="true" signature="852:972" ph="{...}" /> + <marker date="1507408930000" expanded="true" signature="1204:1280" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/Assets/Scripts/Projectile.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="0"> + <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <folding> + <marker date="1507408922000" expanded="true" signature="60:822" ph="{...}" /> + <marker date="1507408922000" expanded="true" signature="311:335" ph="{...}" /> + <marker date="1507408922000" expanded="true" signature="356:705" ph="{...}" /> + <marker date="1507408922000" expanded="true" signature="382:423" ph="{...}" /> + <marker date="1507408922000" expanded="true" signature="587:620" ph="{...}" /> + <marker date="1507408922000" expanded="true" signature="725:819" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/Assets/Scripts/cameraHandler.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="63"> + <caret line="3" column="7" lean-forward="false" selection-start-line="3" selection-start-column="7" selection-end-line="3" selection-end-column="7" /> + <folding> + <marker date="1507408937000" expanded="true" signature="63:3908" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="750:787" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="804:1177" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="889:1017" ph="/* if (GameManager.Instance.MenuManager.HasOpenMenu || GameManager.Instance.BitSpawnManager.IsSpawningBits) { ... */" /> + <marker date="1507408937000" expanded="true" signature="1102:1125" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1199:2467" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1228:2464" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1280:1413" ph="/* If the touch began, capture its position and its finger ID. ... */" /> + <marker date="1507408937000" expanded="true" signature="1490:1593" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1670:1707" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1884:1953" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="1965:2085" ph="/* Zoom based on the distance between the new positions compared to the ... */" /> + <marker date="1507408937000" expanded="true" signature="2489:3051" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="2493:2621" ph="/* On mouse down, capture it's position. ... */" /> + <marker date="1507408937000" expanded="true" signature="2657:2727" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="2764:2792" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="2827:2867" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3097:3265" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3134:3150" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3307:3674" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3328:3344" ph="{...}" /> + <marker date="1507408937000" expanded="true" signature="3698:3905" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/Assets/Scripts/EnemySpawner.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="105"> + <caret line="7" column="54" lean-forward="false" selection-start-line="7" selection-start-column="54" selection-end-line="7" selection-end-column="54" /> + <folding> + <marker date="1507409550000" expanded="false" signature="6:78" ph="..." /> + <marker date="1507409550000" expanded="true" signature="122:1313" ph="{...}" /> + <marker date="1507409550000" expanded="true" signature="125:263" ph="/* This is a class that spawns an enemy with a random interval ... */" /> + <marker date="1507409550000" expanded="true" signature="629:714" ph="{...}" /> + <marker date="1507409550000" expanded="true" signature="670:711" ph="{...}" /> + <marker date="1507409550000" expanded="true" signature="730:819" ph="{...}" /> + <marker date="1507409550000" expanded="true" signature="837:1311" ph="{...}" /> + <marker date="1507409550000" expanded="true" signature="867:1307" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/Assets/Plugins/Editor/JetBrains/Unity3DRider.cs"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="16464"> + <caret line="798" column="25" lean-forward="false" selection-start-line="798" selection-start-column="25" selection-end-line="798" selection-end-column="25" /> + <folding> + <marker date="1507402189000" expanded="true" signature="0:383" ph="/* ------------------------------------------------------------------------------ ... */" /> + <marker date="1507402189000" expanded="false" signature="390:784" ph="..." /> + <marker date="1507402189000" expanded="true" signature="820:12342" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="882:12340" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="937:2557" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="1170:1220" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="1621:2502" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="1670:2394" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="1759:1914" ph="/* RiderPlugin.Log(RiderPlugin.LoggingLevel.Info, "mc[1]: "+mc[1].Value); ... */" /> + <marker date="1507402189000" expanded="true" signature="2038:2165" ph="/* RiderPlugin.Log(RiderPlugin.LoggingLevel.Info, "to:" + to); ... */" /> + <marker date="1507402189000" expanded="true" signature="2407:2454" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="2625:2802" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="2866:4045" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="3327:3479" ph="/* Unity_5_6_OR_NEWER switched to nunit 3.5 ... */" /> + <marker date="1507402189000" expanded="true" signature="4137:4426" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="4350:4420" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="4538:5164" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="4756:5158" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="4867:5150" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="6201:6657" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="6784:8315" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="6829:8309" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="6951:7189" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="6972:7115" ph="/* Add AllowUnsafeBlocks to the .csproj. Unity doesn't generate it (although VSTU does). ... */" /> + <marker date="1507402189000" expanded="true" signature="7244:8301" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="7265:7602" ph="/* defines could be ... */" /> + <marker date="1507402189000" expanded="true" signature="7754:8207" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="7849:8195" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="8433:8855" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="8754:8849" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="8953:9100" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="9165:9250" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="9315:9400" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="9511:10296" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="9907:10290" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="10454:10830" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="10727:10824" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="10913:11616" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="10926:11153" ph="/* Add LangVersion to the .csproj. Unity doesn't generate it (although VSTU does). ... */" /> + <marker date="1507402189000" expanded="true" signature="11378:11444" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="11455:11610" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="11662:12336" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="12378:45986" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="12435:45984" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="12579:12884" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="12715:12878" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="12927:13132" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="13180:14825" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="13245:14791" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="13337:13601" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="13794:14211" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="14283:14372" ph="/* "/Applications/*Rider*.app" ... */" /> + <marker date="1507402189000" expanded="true" signature="14415:14548" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="14882:15616" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="14898:15610" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="15030:15573" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="15187:15563" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="15439:15551" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="15665:16033" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="15681:15878" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="15888:16027" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="15927:16017" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="16104:16430" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="16120:16253" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="16285:16301" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="16388:16404" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="16466:16641" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="16671:16736" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="16789:16967" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="17012:17163" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="17197:17397" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="17213:17391" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="17423:17796" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="17631:17728" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="17747:17790" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="17839:18319" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="18418:18734" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="18471:18667" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="18787:18857" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="18919:18988" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="19041:19473" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="19479:19683" ph="/// Creates and deletes Library/EditorInstance.json containing version and process ID ... " /> + <marker date="1507402189000" expanded="true" signature="19761:20497" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="20347:20483" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="20503:20666" ph="/// Asset Open Callback (from Unity) ... " /> + <marker date="1507402189000" expanded="true" signature="20773:22413" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="20798:22386" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="20832:21120" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="20853:21018" ph="/* make sure the plugin was initialized first. ... */" /> + <marker date="1507402189000" expanded="true" signature="22197:22357" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="22504:23642" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="22598:22708" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="22802:23616" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="22977:23586" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="23182:23422" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="23306:23410" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="23452:23576" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="23751:24334" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="24400:24622" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="24670:25708" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="24755:24793" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="24913:25190" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="25201:25433" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="25750:26705" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="25844:26699" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="25864:26569" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="25948:26559" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="26388:26547" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="26597:26691" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="26751:27209" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="26820:27179" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="26868:27028" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="27054:27098" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="27215:27731" ph="/* The default "Open C## Project" menu item will use the external script editor to load the .sln ... */" /> + <marker date="1507402189000" expanded="true" signature="27828:27989" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="28094:28128" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="28134:28208" ph="/// Force Unity To Write Project File ... " /> + <marker date="1507402189000" expanded="true" signature="28247:28541" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="28547:28758" ph="/// JetBrains Rider Integration Preferences Item ... " /> + <marker date="1507402189000" expanded="true" signature="28827:31080" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="28984:29784" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="29415:29586" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="29599:29775" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="30913:31036" ph="/* if (GUILayout.Button("reset RiderInitializedOnce = false")) ... */" /> + <marker date="1507402189000" expanded="true" signature="31144:31575" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="31581:32574" ph="SystemInfoRiderPlugin" /> + <marker date="1507402189000" expanded="true" signature="31649:32430" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="31719:32424" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="31739:32416" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="32606:34420" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="32620:32873" ph="/// Gets the ID of the process that owns the window. ... " /> + <marker date="1507402189000" expanded="true" signature="32929:33073" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="33081:33207" ph="/// Lists the handles of all the top-level windows currently available in the system. ... " /> + <marker date="1507402189000" expanded="true" signature="33267:33583" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="33368:33436" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="33665:33788" ph="[...]" /> + <marker date="1507402189000" expanded="true" signature="34018:34141" ph="[...]" /> + <marker date="1507402189000" expanded="true" signature="34216:34339" ph="[...]" /> + <marker date="1507402189000" expanded="true" signature="34459:45980" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="34472:45446" ph="Signitures imported from http://pinvoke.net" /> + <marker date="1507402189000" expanded="true" signature="34754:35213" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="35312:35794" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="35832:37706" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="35849:36497" ph="/// Do not display a dialog box if the link cannot be resolved. When SLR_NO_UI is set, ... " /> + <marker date="1507402189000" expanded="true" signature="36621:36865" ph="///If the link object has changed, update its path and list of identifiers. ... " /> + <marker date="1507402189000" expanded="true" signature="37191:37568" ph="///Disable distributed link tracking. By default, distributed link tracking tracks ... " /> + <marker date="1507402189000" expanded="true" signature="37966:43436" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="43586:43773" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="43782:43899" ph="[...]" /> + <marker date="1507402189000" expanded="true" signature="43946:45186" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="45300:45383" ph="[...]" /> + <marker date="1507402189000" expanded="true" signature="45412:45428" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="45499:45974" ph="{...}" /> + <marker date="1507402189000" expanded="true" signature="45615:45756" ph="/* If I can get hold of the hwnd call resolve first. This handles moved and renamed files. ... */" /> + </folding> + </state> + </provider> + </entry> + </component> + <component name="masterDetails"> + <states> + <state key="ScopeChooserConfigurable.UI"> + <settings> + <splitter-proportions> + <option name="proportions"> + <list> + <option value="0.2" /> + </list> + </option> + </splitter-proportions> + </settings> + </state> + </states> + </component> +</project>
\ No newline at end of file diff --git a/td/.idea/.idea.td/riderModule.iml b/td/.idea/.idea.td/riderModule.iml new file mode 100644 index 0000000..ce4aad6 --- /dev/null +++ b/td/.idea/.idea.td/riderModule.iml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module type="RIDER_MODULE" version="4"> + <component name="NewModuleRootManager"> + <content url="file://$MODULE_DIR$/../.."> + <sourceFolder url="file://$MODULE_DIR$/../.." isTestSource="false" /> + <excludeFolder url="file://$MODULE_DIR$/../../Library" /> + <excludeFolder url="file://$MODULE_DIR$/../../Temp" /> + <excludeFolder url="file://$MODULE_DIR$/../../Temp/bin" /> + <excludeFolder url="file://$MODULE_DIR$/../../obj" /> + <excludeFolder url="file://$MODULE_DIR$/../../packages" /> + </content> + <orderEntry type="sourceFolder" forTests="false" /> + </component> +</module>
\ No newline at end of file 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/Plugins/Editor/JetBrains/Unity3DRider.cs.meta b/td/Assets/Plugins/Editor/JetBrains/Unity3DRider.cs.meta new file mode 100644 index 0000000..519e0e0 --- /dev/null +++ b/td/Assets/Plugins/Editor/JetBrains/Unity3DRider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: aa3e49e597a704f07b686414e3192b11 +timeCreated: 1507403604 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Prefabs/Castle.prefab b/td/Assets/Prefabs/Castle.prefab Binary files differnew file mode 100644 index 0000000..3da320a --- /dev/null +++ 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/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..9d02c80 --- /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/Scripts/Enemy.cs b/td/Assets/Scripts/Enemy.cs index 4542902..3074003 100644 --- a/td/Assets/Scripts/Enemy.cs +++ b/td/Assets/Scripts/Enemy.cs @@ -1,5 +1,4 @@ -using System.Collections; -using System.Collections.Generic; +using System.Collections.Generic; using UnityEngine; public class Enemy : MonoBehaviour { @@ -7,28 +6,28 @@ public class Enemy : MonoBehaviour { * Currently it follows the pathway, and dies when reacing the end */ [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 + 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 + public Player Player; // Reference to the player object, should be set when instantiating - Vector3 waypointPos; // Current waypoint position - int waypointNum = -1; // Using minus one so that first addition returns 0, first element in array + 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 () { - if ( (transform.position == waypointPos && waypointNum + 1 < waypoints.Count) || waypointNum == -1) { - waypointNum++; - waypointPos = new Vector3 (waypoints [waypointNum].x, 0.483f, waypoints [waypointNum].z); + 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); // Selfdestruct if object reached the end - if (waypointNum + 1 >= waypoints.Count) { - player.decreaseHealth (damage); + if (_waypointNum + 1 >= Waypoints.Count) { + Player.DecreaseHealth (Damage); Destroy (gameObject); return; } diff --git a/td/Assets/Scripts/EnemySpawner.cs b/td/Assets/Scripts/EnemySpawner.cs index ee0d3d6..7ee8680 100644 --- a/td/Assets/Scripts/EnemySpawner.cs +++ b/td/Assets/Scripts/EnemySpawner.cs @@ -6,42 +6,41 @@ public class EnemySpawner : MonoBehaviour { /* This is a class that spawns an enemy with a random interval * it is not very good, but is what it needs to be for testing purposes */ // TODO Add wave system with increasing difficulty - - public Enemy enemyPrefab; - public Transform pathWay; + public Enemy EnemyPrefab; + public Transform PathWay; [Header("Scripting vars")] - public player player; // Reference to the player object, should be set when instantiating + public Player Player; // Reference to the player object, should be set when instantiating - private Transform parentObject; + private Transform _parentObject; - List<Vector3> waypoints = new List<Vector3>(); - int next = 1; - int n = 0; + List<Vector3> _waypoints = new List<Vector3>(); + int _next = 1; + int _n = 0; void Awake() { - foreach (Transform child in pathWay) { - waypoints.Add (child.position); + foreach (Transform child in PathWay) { + _waypoints.Add (child.position); } } void Start() { - parentObject = transform.Find ("enemies").gameObject.GetComponent <Transform> (); + _parentObject = transform.Find ("enemies").gameObject.GetComponent <Transform> (); } void Update () { - n++; + _n++; - if (n == next) { - n = 0; - next = (int)Random.Range (50, 400); + if (_n == _next) { + _n = 0; + _next = (int)Random.Range (50, 400); - Enemy newEnemy = Instantiate (enemyPrefab, new Vector3(0, 0, 0), Quaternion.identity, parentObject); + Enemy 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.speed = Random.Range (0.3f, 1.2f); - script.player = player; + script.Waypoints = _waypoints; + script.Speed = Random.Range (0.3f, 1.2f); + script.Player = Player; transform.position = new Vector3 (0.93f, 0.483f, 0f); } diff --git a/td/Assets/Scripts/Projectile.cs b/td/Assets/Scripts/Projectile.cs new file mode 100644 index 0000000..0cdef16 --- /dev/null +++ b/td/Assets/Scripts/Projectile.cs @@ -0,0 +1,42 @@ +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() { + Player.ScoreAdd (PointsPerHit); + Destroy (_target.gameObject); + Destroy (gameObject); + } + +} diff --git a/td/Assets/Scripts/Projectile.cs.meta b/td/Assets/Scripts/Projectile.cs.meta new file mode 100644 index 0000000..a95b993 --- /dev/null +++ b/td/Assets/Scripts/Projectile.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4a1928566183240ea8566b659c4b3d5f +timeCreated: 1507300755 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/td/Assets/Scripts/cameraHandler.cs b/td/Assets/Scripts/cameraHandler.cs index c1c4cae..1655509 100644 --- a/td/Assets/Scripts/cameraHandler.cs +++ b/td/Assets/Scripts/cameraHandler.cs @@ -1,8 +1,6 @@ -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; @@ -14,17 +12,17 @@ public class cameraHandler : MonoBehaviour { public static readonly float[] BoundsZ = new float[]{-8f, 8f}; public static readonly float[] ZoomBounds = new float[]{1f, 5f}; - 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() { @@ -46,43 +44,43 @@ public class cameraHandler : MonoBehaviour { 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; } } @@ -92,41 +90,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 index 4f241cf..a71d4c7 100644 --- a/td/Assets/Scripts/developerMode.cs +++ b/td/Assets/Scripts/developerMode.cs @@ -3,49 +3,49 @@ using System.Collections.Generic; using UnityEngine.UI; using UnityEngine; -public class developerMode : MonoBehaviour { +public class DeveloperMode : MonoBehaviour { - public string output = ""; - public string stack = ""; - public bool cheatsAllowed; + public string Output = ""; + public string Stack = ""; + public bool CheatsAllowed; - GameObject pnlCanvas; - GameObject pnlCheats; - Button btnToggleCheats; - Text lblConsoleLog; + GameObject _pnlCanvas; + GameObject _pnlCheats; + Button _btnToggleCheats; + Text _lblConsoleLog; - bool developerModeActive; - bool cheatMenuOpen; + bool _developerModeActive; + bool _cheatMenuOpen; void Start () { /* Panels */ - pnlCanvas = this.gameObject.transform.GetChild (0).gameObject; - pnlCheats = pnlCanvas.transform.Find ("cheatMenu").gameObject; + _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>(); + _lblConsoleLog = _pnlCanvas.transform.Find ("consoleLog").gameObject.GetComponent <Text>(); /* Do setup */ - lblConsoleLog.text = ""; + _lblConsoleLog.text = ""; - if (cheatsAllowed) { - btnToggleCheats = pnlCanvas.transform.Find ("toggleCheats").gameObject.GetComponent <Button> (); - if (btnToggleCheats != null) { btnToggleCheats.onClick.AddListener (btnToggleCheatsHandler); } - cheatMenuOpen = false; + 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); + _pnlCanvas.transform.Find ("toggleCheats").gameObject.SetActive (false); } - pnlCheats.SetActive (false); + _pnlCheats.SetActive (false); } void Update () { if (PlayerPrefs.HasKey ("developerMode")) { - if (PlayerPrefs.GetInt ("developerMode") == 1) { developerModeActive = true; } - else { developerModeActive = false; } + if (PlayerPrefs.GetInt ("developerMode") == 1) { _developerModeActive = true; } + else { _developerModeActive = false; } } - if (developerModeActive) { + if (_developerModeActive) { this.gameObject.transform.GetChild (0).gameObject.SetActive (true); } else { this.gameObject.transform.GetChild (0).gameObject.SetActive (false); @@ -54,9 +54,9 @@ public class developerMode : MonoBehaviour { void btnToggleCheatsHandler() { /* Handler for btnToggleCheats */ - if (cheatsAllowed) { - cheatMenuOpen = !cheatMenuOpen; - pnlCheats.SetActive (cheatMenuOpen); + if (CheatsAllowed) { + _cheatMenuOpen = !_cheatMenuOpen; + _pnlCheats.SetActive (_cheatMenuOpen); } } @@ -68,8 +68,8 @@ public class developerMode : MonoBehaviour { Application.logMessageReceived -= HandleLog; } public void HandleLog(string logString, string stackTrace, LogType type) { - string backLog = lblConsoleLog.text; - lblConsoleLog.text = logString + "\n" + backLog; + string backLog = _lblConsoleLog.text; + _lblConsoleLog.text = logString + "\n" + backLog; } #endregion diff --git a/td/Assets/Scripts/enableChild.cs b/td/Assets/Scripts/enableChild.cs index 50c7844..cba9375 100644 --- a/td/Assets/Scripts/enableChild.cs +++ b/td/Assets/Scripts/enableChild.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using UnityEngine; -public class enableChild : MonoBehaviour { +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 */ diff --git a/td/Assets/Scripts/gameStats.cs b/td/Assets/Scripts/gameStats.cs index daeb3cf..7c305fa 100644 --- a/td/Assets/Scripts/gameStats.cs +++ b/td/Assets/Scripts/gameStats.cs @@ -3,53 +3,53 @@ using System.Collections.Generic; using UnityEngine.UI; using UnityEngine; -public class gameStats : MonoBehaviour { +public class GameStats : MonoBehaviour { - public player Player; - GameObject canvas; - Text txtMoney; - Text txtScore; - Text txtHp; - int displayedScore; - int displayedMoney; - int displayedHealth; + public Player Player; + GameObject _canvas; + Text _txtMoney; + Text _txtScore; + Text _txtHp; + int _displayedScore; + int _displayedMoney; + int _displayedHealth; void Start() { - canvas = transform.GetChild (0).gameObject; - txtMoney = canvas.transform.Find ("playerMoney").gameObject.GetComponent <Text>(); - txtScore = canvas.transform.Find ("playerScore").gameObject.GetComponent <Text>(); - txtHp = canvas.transform.Find ("playerHealth").gameObject.GetComponent <Text>(); + _canvas = transform.GetChild (0).gameObject; + _txtMoney = _canvas.transform.Find ("playerMoney").gameObject.GetComponent <Text>(); + _txtScore = _canvas.transform.Find ("playerScore").gameObject.GetComponent <Text>(); + _txtHp = _canvas.transform.Find ("playerHealth").gameObject.GetComponent <Text>(); } void Update () { - if (Player.money () != displayedMoney) { - displayedMoney = Player.money (); - updateMoney (displayedMoney); + if (Player.Money () != _displayedMoney) { + _displayedMoney = Player.Money (); + UpdateMoney (_displayedMoney); } - if (Player.score () != displayedScore) { - displayedScore = Player.score (); - updateScore (displayedScore); + if (Player.Score () != _displayedScore) { + _displayedScore = Player.Score (); + UpdateScore (_displayedScore); } - if (Player.health () != displayedHealth) { - displayedHealth = Player.health (); - updateHealth (displayedHealth); + if (Player.Health () != _displayedHealth) { + _displayedHealth = Player.Health (); + UpdateHealth (_displayedHealth); } } - void updateScore(int newScore) { - txtScore.text = ("Score: " + newScore.ToString ()); + void UpdateScore(int newScore) { + _txtScore.text = ("Score: " + newScore.ToString ()); } - void updateMoney(int newMoney) { - txtMoney.text = ("Money: " + newMoney.ToString () + "$"); + void UpdateMoney(int newMoney) { + _txtMoney.text = ("Money: " + newMoney.ToString () + "$"); } - void updateHealth(int newHp) { - txtHp.text = ("HP: " + newHp.ToString ()); + void UpdateHealth(int newHp) { + _txtHp.text = ("HP: " + newHp.ToString ()); } } diff --git a/td/Assets/Scripts/mainGUI.cs b/td/Assets/Scripts/mainGUI.cs index d9fb955..1c18a17 100644 --- a/td/Assets/Scripts/mainGUI.cs +++ b/td/Assets/Scripts/mainGUI.cs @@ -4,76 +4,76 @@ using System.Collections.Generic; using UnityEngine.UI; using UnityEngine; -public class mainGUI : MonoBehaviour { +public class MainGui : MonoBehaviour { - GameObject pnlMenu; - GameObject pnlSidebar; - GameObject pnlSettings; - RectTransform pnlSidebarTransform; - Button btnToggleSidebar; - Button btnPauseGame; - Button btnResumeGame; - Button btnExitGame; - Button btnSettings; - Button btnSettingsDiscard; - Button btnSettingsSave; + GameObject _pnlMenu; + GameObject _pnlSidebar; + GameObject _pnlSettings; + RectTransform _pnlSidebarTransform; + Button _btnToggleSidebar; + Button _btnPauseGame; + Button _btnResumeGame; + Button _btnExitGame; + Button _btnSettings; + Button _btnSettingsDiscard; + Button _btnSettingsSave; - bool sidebarExpanded; - float[] sidebarStates = new float[2] {0f, -202.4f}; // The x position of the sidebar expanded or collapsed + bool _sidebarExpanded; + float[] _sidebarStates = new float[2] {0f, -202.4f}; // The x position of the sidebar expanded or collapsed - bool menuActive; + bool _menuActive; void Awake() { /* Panels */ - pnlMenu = transform.Find ("menu").gameObject; - pnlSidebar = transform.Find ("sidebarWrapper").gameObject; - pnlSettings = transform.Find ("settings").gameObject; - pnlSidebarTransform = pnlSidebar.GetComponent <RectTransform> (); + _pnlMenu = transform.Find ("menu").gameObject; + _pnlSidebar = transform.Find ("sidebarWrapper").gameObject; + _pnlSettings = transform.Find ("settings").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> (); - 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); } + _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> (); + 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); } /* Set up initial states */ - updateSidebarPosandBtn (); - pnlMenu.SetActive (false); - pnlSettings.SetActive (false); + UpdateSidebarPosandBtn (); + _pnlMenu.SetActive (false); + _pnlSettings.SetActive (false); } void toggleSidebarHandler() { /* handler for btnToggleSidebar */ - sidebarExpanded = !sidebarExpanded; - updateSidebarPosandBtn (); + _sidebarExpanded = !_sidebarExpanded; + UpdateSidebarPosandBtn (); } void pauseGameHandler() { /* handler for btnPauseGame */ - menuActive = true; - pnlMenu.SetActive (menuActive); + _menuActive = true; + _pnlMenu.SetActive (_menuActive); Time.timeScale = 0.0F; - btnToggleSidebar.interactable = false; - btnPauseGame.interactable = false; + _btnToggleSidebar.interactable = false; + _btnPauseGame.interactable = false; } void btnResumeGameHandler() { /* handler for btnResumeGame */ - menuActive = false; - pnlMenu.SetActive (menuActive); + _menuActive = false; + _pnlMenu.SetActive (_menuActive); Time.timeScale = 1.0F; - btnToggleSidebar.interactable = true; - btnPauseGame.interactable = true; + _btnToggleSidebar.interactable = true; + _btnPauseGame.interactable = true; } void btnExitGameHandler() { @@ -83,40 +83,40 @@ public class mainGUI : MonoBehaviour { void btnSettingsHandler() { /* handler for btnSettings */ - pnlMenu.SetActive (false); - pnlSettings.SetActive (true); + _pnlMenu.SetActive (false); + _pnlSettings.SetActive (true); if (PlayerPrefs.HasKey ("developerMode")) { - pnlSettings.transform.Find ("developerEnabled").gameObject.GetComponent <Toggle> ().isOn = intToBool(PlayerPrefs.GetInt ("developerMode")); + _pnlSettings.transform.Find ("developerEnabled").gameObject.GetComponent <Toggle> ().isOn = IntToBool(PlayerPrefs.GetInt ("developerMode")); } } void btnSettingsSaveHandler() { /* handler for btnSaveSettings */ - pnlMenu.SetActive (true); - pnlSettings.SetActive (false); + _pnlMenu.SetActive (true); + _pnlSettings.SetActive (false); - PlayerPrefs.SetInt ("developerMode", Convert.ToInt32(pnlSettings.transform.Find ("developerEnabled").gameObject.GetComponent <Toggle>().isOn)); + PlayerPrefs.SetInt ("developerMode", Convert.ToInt32(_pnlSettings.transform.Find ("developerEnabled").gameObject.GetComponent <Toggle>().isOn)); } void btnSettingsDiscardHandler() { /* handler for btnSettingsDiscard */ - pnlMenu.SetActive (true); - pnlSettings.SetActive (false); + _pnlMenu.SetActive (true); + _pnlSettings.SetActive (false); } - void updateSidebarPosandBtn() { + 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); + 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); + _pnlSidebarTransform.localPosition = new Vector3 (_sidebarStates [0], 0f, 0f); + _btnToggleSidebar.transform.GetComponent <RectTransform> ().localScale = new Vector3 (1, 1, 1); } } - bool intToBool(int input) { + bool IntToBool(int input) { /* Converts int to boolean */ if (input >= 1) { return true; diff --git a/td/Assets/Scripts/player.cs b/td/Assets/Scripts/player.cs index 4b23054..30ad07f 100644 --- a/td/Assets/Scripts/player.cs +++ b/td/Assets/Scripts/player.cs @@ -2,55 +2,56 @@ using System.Collections.Generic; using UnityEngine; -public class player : MonoBehaviour { +public class Player : MonoBehaviour { - public int initialHealth; - public int startingMoney; + public int InitialHealth; + public int StartingMoney; - private GameObject[] towers; - private int playerMoney; - private int playerScore; - private int playerHealth; + private GameObject[] _towers; + private int _playerMoney; + private int _playerScore; + private int _playerHealth; void Awake() { - playerMoney = startingMoney; - playerHealth = initialHealth; + /* This method initializes the player class */ + _playerMoney = StartingMoney; + _playerHealth = InitialHealth; } #region stats - public int score() { - return playerScore; + public int Score() { + return _playerScore; } - public void scoreAdd(int points) { - playerScore += points; + public void ScoreAdd(int points) { + _playerScore += points; } - public int money() { - return playerMoney; + public int Money() { + return _playerMoney; } - public void moneyAdd(int sum) { - playerMoney += sum; + public void MoneyAdd(int sum) { + _playerMoney += sum; } - public void moneySubtract(int sum) { - playerMoney -= sum; + public void MoneySubtract(int sum) { + _playerMoney -= sum; } - public int health() { - return playerHealth; + public int Health() { + return _playerHealth; } - public void decreaseHealth(int hp) { - playerHealth -= hp; + public void DecreaseHealth(int hp) { + _playerHealth -= hp; } #endregion - public void spawnTower(GameObject towerType) { + 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; + Tower script = tower.GetComponent <Tower>(); + script.Player = this; } } diff --git a/td/Assets/Scripts/tower.cs b/td/Assets/Scripts/tower.cs index bc8241c..d99f937 100644 --- a/td/Assets/Scripts/tower.cs +++ b/td/Assets/Scripts/tower.cs @@ -1,69 +1,67 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; +using UnityEngine; -public class tower : MonoBehaviour { +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) + 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; + 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) + 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 + 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 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; + 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); + _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)); + _groundPlane = new Plane (Vector3.up, new Vector3(0f, _groundYpoint, 0f)); } void Update () { #region placeTower - if (!towerPlaced) { + if (!_towerPlaced) { if (Input.touchCount == 1 || Input.GetMouseButton (0)) { /* Activate indicator if not already */ - if (!placementIndicator.activeSelf) { placementIndicator.SetActive (true); } + if (!_placementIndicator.activeSelf) { _placementIndicator.SetActive (true); } /* Change indicator-color based on placement */ - if (!colliding) { placementIndicatorRenderer.sharedMaterial = materialDanger; } - else { placementIndicatorRenderer.sharedMaterial = materialSuccess; } + 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)) { + 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 + 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 + _towerPlaced = true; + Player.MoneySubtract (TowerPrice); + _placementIndicator.SetActive (false); + _placementIndicatorRenderer.sharedMaterial = MaterialSuccess; + InvokeRepeating ("UpdateTarget", 0f, 0.5f); // This starts the gameObject.GetComponent <BoxCollider>().enabled = false; } @@ -74,36 +72,36 @@ public class tower : MonoBehaviour { #endregion // Stop rest of update if no target is aquired - if (target == null) { + if (_target == null) { return; } // Target lockon - Vector3 direction = target.position - transform.position; + Vector3 direction = _target.position - transform.position; Quaternion lookRotation = Quaternion.LookRotation (direction); - Vector3 rotation = Quaternion.Lerp (transform.rotation, lookRotation, Time.deltaTime * turnSpeed).eulerAngles; + Vector3 rotation = Quaternion.Lerp (transform.rotation, lookRotation, Time.deltaTime * TurnSpeed).eulerAngles; transform.rotation = Quaternion.Euler (0f, rotation.y, 0f); - if (fireCountdown <= 0f) { + if (_fireCountdown <= 0f) { // FAIAAAAA - shoot(); - fireCountdown = 1f / fireRate; + Shoot(); + _fireCountdown = 1f / FireRate; } - fireCountdown -= Time.deltaTime; + _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 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() { + void UpdateTarget() { /* Method that updates the currentTarget. * The target will be set to the nearest in range */ GameObject[] enemies = GameObject.FindGameObjectsWithTag ("enemy"); @@ -118,29 +116,29 @@ public class tower : MonoBehaviour { } } - if (nearestEnemy != null && shortestDistance <= towerRange) { - target = nearestEnemy.transform; + if (nearestEnemy != null && shortestDistance <= TowerRange) { + _target = nearestEnemy.transform; } else { - target = null; + _target = null; } } void OnTriggerEnter(Collider other) { - colliding = true; + _colliding = true; } void OnTriggerStay(Collider other) { - colliding = true; + _colliding = true; } void OnTriggerExit(Collider other) { - colliding = false; + _colliding = false; } void OnDrawGizmosSelected() { /* Show gizmos in designer */ Gizmos.color = Color.red; - Gizmos.DrawWireSphere (transform.position, towerRange); + Gizmos.DrawWireSphere (transform.position, TowerRange); } } diff --git a/td/Assets/Scripts/waveSpawner.cs b/td/Assets/Scripts/waveSpawner.cs index c3fada3..f79fb90 100644 --- a/td/Assets/Scripts/waveSpawner.cs +++ b/td/Assets/Scripts/waveSpawner.cs @@ -3,21 +3,21 @@ using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; -public class waveSpawner : MonoBehaviour { +public class WaveSpawner : MonoBehaviour { public static int EnemiesAlive = 0; - public Wave[] waves; + public Wave[] Waves; - public Transform spawnPoint; + public Transform SpawnPoint; - public float timeBetweenWaves = 5f; - private float countdown = 2f; + public float TimeBetweenWaves = 5f; + private float _countdown = 2f; - public Text waveCountdownText; + public Text WaveCountdownText; - private int waveIndex = 0; + private int _waveIndex = 0; void Update () { @@ -26,51 +26,51 @@ public class waveSpawner : MonoBehaviour { return; } - if (waveIndex == waves.Length) + if (_waveIndex == Waves.Length) { // WIN LEVEL!!! this.enabled = false; } - if (countdown <= 0f) + if (_countdown <= 0f) { StartCoroutine(SpawnWave()); - countdown = timeBetweenWaves; + _countdown = TimeBetweenWaves; return; } - countdown -= Time.deltaTime; + _countdown -= Time.deltaTime; - countdown = Mathf.Clamp(countdown, 0f, Mathf.Infinity); + _countdown = Mathf.Clamp(_countdown, 0f, Mathf.Infinity); //waveCountdownText.text = string.Format("{0:00.00}", countdown); } IEnumerator SpawnWave () { - Wave wave = waves[waveIndex]; + Wave wave = Waves[_waveIndex]; - EnemiesAlive = wave.count; + EnemiesAlive = wave.Count; - for (int i = 0; i < wave.count; i++) + for (int i = 0; i < wave.Count; i++) { - SpawnEnemy(wave.enemy); - yield return new WaitForSeconds(1f / wave.rate); + SpawnEnemy(wave.Enemy); + yield return new WaitForSeconds(1f / wave.Rate); } - waveIndex++; + _waveIndex++; } void SpawnEnemy (GameObject enemy) { - Instantiate(enemy, spawnPoint.position, spawnPoint.rotation); + Instantiate(enemy, SpawnPoint.position, SpawnPoint.rotation); } } [System.Serializable] public class Wave { - public GameObject enemy; - public int count; - public float rate; + public GameObject Enemy; + public int Count; + public float Rate; }
\ No newline at end of file |