├── .gitignore ├── Assets ├── Demigiant.meta ├── Demigiant │ ├── DOTween.meta │ ├── DOTween │ │ ├── DOTween.XML │ │ ├── DOTween.XML.meta │ │ ├── DOTween.dll │ │ ├── DOTween.dll.meta │ │ ├── DOTween43.dll │ │ ├── DOTween43.dll.meta │ │ ├── DOTween43.xml │ │ ├── DOTween43.xml.meta │ │ ├── DOTween46.dll │ │ ├── DOTween46.dll.meta │ │ ├── DOTween46.xml │ │ ├── DOTween46.xml.meta │ │ ├── DOTween50.dll │ │ ├── DOTween50.dll.meta │ │ ├── DOTween50.xml │ │ ├── DOTween50.xml.meta │ │ ├── Editor.meta │ │ ├── Editor │ │ │ ├── DOTweenEditor.XML │ │ │ ├── DOTweenEditor.XML.meta │ │ │ ├── DOTweenEditor.dll │ │ │ ├── DOTweenEditor.dll.meta │ │ │ ├── Imgs.meta │ │ │ └── Imgs │ │ │ │ ├── DOTweenIcon.png │ │ │ │ ├── DOTweenIcon.png.meta │ │ │ │ ├── Footer.png │ │ │ │ ├── Footer.png.meta │ │ │ │ ├── Footer_dark.png │ │ │ │ ├── Footer_dark.png.meta │ │ │ │ ├── Header.jpg │ │ │ │ └── Header.jpg.meta │ │ ├── readme.txt │ │ └── readme.txt.meta │ ├── Resources.meta │ └── Resources │ │ ├── DOTweenSettings.asset │ │ └── DOTweenSettings.asset.meta ├── _Client.meta └── _Client │ ├── Prefabs.meta │ ├── Prefabs │ ├── Piece.prefab │ └── Piece.prefab.meta │ ├── Scenes.meta │ ├── Scenes │ ├── SampleScene.unity │ └── SampleScene.unity.meta │ ├── Scripts.meta │ ├── Scripts │ ├── BoardExtensions.cs │ ├── BoardExtensions.cs.meta │ ├── Components.meta │ ├── Components │ │ ├── .gitkeep │ │ ├── Animating.cs │ │ ├── Animating.cs.meta │ │ ├── Board.cs │ │ ├── Board.cs.meta │ │ ├── Destroyed.cs │ │ ├── Destroyed.cs.meta │ │ ├── Group.cs │ │ ├── Group.cs.meta │ │ ├── GroupingTarget.cs │ │ ├── GroupingTarget.cs.meta │ │ ├── InGroup.cs │ │ ├── InGroup.cs.meta │ │ ├── Input.cs │ │ ├── Input.cs.meta │ │ ├── Match.cs │ │ ├── Match.cs.meta │ │ ├── New.cs │ │ ├── New.cs.meta │ │ ├── Piece.cs │ │ ├── Piece.cs.meta │ │ ├── Position.cs │ │ ├── Position.cs.meta │ │ ├── PositionUpdated.cs │ │ ├── PositionUpdated.cs.meta │ │ ├── Selected.cs │ │ ├── Selected.cs.meta │ │ ├── Shuffled.cs │ │ ├── Shuffled.cs.meta │ │ ├── View.cs │ │ └── View.cs.meta │ ├── EcsStartup.cs │ ├── EcsStartup.cs.meta │ ├── EcsWorldExtensions.cs │ ├── EcsWorldExtensions.cs.meta │ ├── IPieceView.cs │ ├── IPieceView.cs.meta │ ├── Services.meta │ ├── Services │ │ ├── .gitkeep │ │ ├── IInputService.cs │ │ ├── IInputService.cs.meta │ │ ├── IPieceViewService.cs │ │ └── IPieceViewService.cs.meta │ ├── Systems.meta │ ├── Systems │ │ ├── .gitkeep │ │ ├── BoardFallSystem.cs │ │ ├── BoardFallSystem.cs.meta │ │ ├── BoardFillSystem.cs │ │ ├── BoardFillSystem.cs.meta │ │ ├── BoardGroupSystem.cs │ │ ├── BoardGroupSystem.cs.meta │ │ ├── BoardInitSystem.cs │ │ ├── BoardInitSystem.cs.meta │ │ ├── BoardResetGroupSystem.cs │ │ ├── BoardResetGroupSystem.cs.meta │ │ ├── BoardShuffleSystem.cs │ │ ├── BoardShuffleSystem.cs.meta │ │ ├── BoardSystemsDisableIfAnimatingSystem.cs │ │ ├── BoardSystemsDisableIfAnimatingSystem.cs.meta │ │ ├── CameraFocusOnBoardSystem.cs │ │ ├── CameraFocusOnBoardSystem.cs.meta │ │ ├── DestroyEntitiesWithDestroyedSystem.cs │ │ ├── DestroyEntitiesWithDestroyedSystem.cs.meta │ │ ├── InputSystem.cs │ │ ├── InputSystem.cs.meta │ │ ├── PieceDestroySelectedSystem.cs │ │ ├── PieceDestroySelectedSystem.cs.meta │ │ ├── PieceSelectSystem.cs │ │ ├── PieceSelectSystem.cs.meta │ │ ├── PieceViewCreateSystem.cs │ │ ├── PieceViewCreateSystem.cs.meta │ │ ├── PieceViewDestroySystem.cs │ │ ├── PieceViewDestroySystem.cs.meta │ │ ├── PieceViewUpdateAnimatingSystem.cs │ │ ├── PieceViewUpdateAnimatingSystem.cs.meta │ │ ├── PieceViewUpdatePositionSystem.cs │ │ └── PieceViewUpdatePositionSystem.cs.meta │ ├── UnityComponents.meta │ └── UnityComponents │ │ ├── .gitkeep │ │ ├── InputService.cs │ │ ├── InputService.cs.meta │ │ ├── PieceView.cs │ │ ├── PieceView.cs.meta │ │ ├── PieceViewService.cs │ │ └── PieceViewService.cs.meta │ ├── Sprites.meta │ └── Sprites │ ├── Candies.meta │ ├── Candies │ ├── blue.png │ ├── blue.png.meta │ ├── green.png │ ├── green.png.meta │ ├── pink.png │ ├── pink.png.meta │ ├── red.png │ └── red.png.meta │ ├── Piece.png │ ├── Piece.png.meta │ ├── UnitSquare.png │ └── UnitSquare.png.meta ├── Packages ├── manifest.json └── packages-lock.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── PackageManagerSettings.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset ├── VersionControlSettings.asset └── XRSettings.asset └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # This .gitignore file should be placed at the root of your Unity project directory 2 | # 3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore 4 | # 5 | /[Ll]ibrary/ 6 | /[Tt]emp/ 7 | /[Oo]bj/ 8 | /[Bb]uild/ 9 | /[Bb]uilds/ 10 | /[Ll]ogs/ 11 | /[Uu]ser[Ss]ettings/ 12 | 13 | # MemoryCaptures can get excessive in size. 14 | # They also could contain extremely sensitive data 15 | /[Mm]emoryCaptures/ 16 | 17 | # Asset meta data should only be ignored when the corresponding asset is also ignored 18 | !/[Aa]ssets/**/*.meta 19 | 20 | # Uncomment this line if you wish to ignore the asset store tools plugin 21 | # /[Aa]ssets/AssetStoreTools* 22 | 23 | # Autogenerated Jetbrains Rider plugin 24 | /[Aa]ssets/Plugins/Editor/JetBrains* 25 | 26 | # Visual Studio cache directory 27 | .vs/ 28 | 29 | # Visual Studio Code directory 30 | .vscode/ 31 | 32 | # Gradle cache directory 33 | .gradle/ 34 | 35 | # Autogenerated VS/MD/Consulo solution and project files 36 | ExportedObj/ 37 | .consulo/ 38 | *.csproj 39 | *.unityproj 40 | *.sln 41 | *.suo 42 | *.tmp 43 | *.user 44 | *.userprefs 45 | *.pidb 46 | *.booproj 47 | *.svd 48 | *.pdb 49 | *.mdb 50 | *.opendb 51 | *.VC.db 52 | 53 | # Unity3D generated meta files 54 | *.pidb.meta 55 | *.pdb.meta 56 | *.mdb.meta 57 | 58 | # Unity3D generated file on crash reports 59 | sysinfo.txt 60 | 61 | # Builds 62 | *.apk 63 | *.aab 64 | *.unitypackage 65 | 66 | # Crashlytics generated file 67 | crashlytics-build.properties 68 | 69 | # Packed Addressables 70 | /[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* 71 | 72 | # Temporary auto-generated Android Assets 73 | /[Aa]ssets/[Ss]treamingAssets/aa.meta 74 | /[Aa]ssets/[Ss]treamingAssets/aa/* -------------------------------------------------------------------------------- /Assets/Demigiant.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dc7fc7cb0e1de0440be3824f7ffad359 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 28984c551a65a3f4c85a0c2df37e020f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/DOTween.XML.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5ec570c4aad08e54aa562697147a6947 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/DOTween.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cadfoot/unity-ecs-match-two/4fae2d840f784b53694ad52f6783954d47382f1a/Assets/Demigiant/DOTween/DOTween.dll -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/DOTween.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6e38ac6b1c3556b4c888ca8552375e1e 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 1 18 | settings: {} 19 | userData: 20 | assetBundleName: 21 | assetBundleVariant: 22 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/DOTween43.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cadfoot/unity-ecs-match-two/4fae2d840f784b53694ad52f6783954d47382f1a/Assets/Demigiant/DOTween/DOTween43.dll -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/DOTween43.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 898fd6d3a9b1ed440aa5f83fd8490419 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 1 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | - first: 26 | Windows Store Apps: WindowsStoreApps 27 | second: 28 | enabled: 0 29 | settings: 30 | CPU: AnyCPU 31 | userData: 32 | assetBundleName: 33 | assetBundleVariant: 34 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/DOTween43.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | DOTween43 5 | 6 | 7 | 8 | 9 | Methods that extend known Unity objects and allow to directly create and control tweens from their instances. 10 | These, as all DOTween43 methods, require Unity 4.3 or later. 11 | 12 | 13 | 14 | Tweens a Material's color using the given gradient 15 | (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). 16 | Also stores the image as the tween's target so it can be used for filtered operations 17 | The gradient to useThe duration of the tween 18 | 19 | 20 | Tweens a Material's named color property using the given gradient 21 | (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). 22 | Also stores the image as the tween's target so it can be used for filtered operations 23 | The gradient to use 24 | The name of the material property to tween (like _Tint or _SpecColor) 25 | The duration of the tween 26 | 27 | 28 | Tweens a SpriteRenderer's color to the given value. 29 | Also stores the spriteRenderer as the tween's target so it can be used for filtered operations 30 | The end value to reachThe duration of the tween 31 | 32 | 33 | Tweens a Material's alpha color to the given value. 34 | Also stores the spriteRenderer as the tween's target so it can be used for filtered operations 35 | The end value to reachThe duration of the tween 36 | 37 | 38 | Tweens a SpriteRenderer's color using the given gradient 39 | (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). 40 | Also stores the image as the tween's target so it can be used for filtered operations 41 | The gradient to useThe duration of the tween 42 | 43 | 44 | Tweens a Rigidbody2D's position to the given value. 45 | Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations 46 | The end value to reachThe duration of the tween 47 | If TRUE the tween will smoothly snap all values to integers 48 | 49 | 50 | Tweens a Rigidbody2D's X position to the given value. 51 | Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations 52 | The end value to reachThe duration of the tween 53 | If TRUE the tween will smoothly snap all values to integers 54 | 55 | 56 | Tweens a Rigidbody2D's Y position to the given value. 57 | Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations 58 | The end value to reachThe duration of the tween 59 | If TRUE the tween will smoothly snap all values to integers 60 | 61 | 62 | Tweens a Rigidbody2D's rotation to the given value. 63 | Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations 64 | The end value to reachThe duration of the tween 65 | 66 | 67 | Tweens a Rigidbody2D's position to the given value, while also applying a jump effect along the Y axis. 68 | Returns a Sequence instead of a Tweener. 69 | Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations. 70 | IMPORTANT: a rigidbody2D can't be animated in a jump arc using MovePosition, so the tween will directly set the position 71 | The end value to reach 72 | Power of the jump (the max height of the jump is represented by this plus the final Y offset) 73 | Total number of jumps 74 | The duration of the tween 75 | If TRUE the tween will smoothly snap all values to integers 76 | 77 | 78 | Tweens a SpriteRenderer's color to the given value, 79 | in a way that allows other DOBlendableColor tweens to work together on the same target, 80 | instead than fight each other as multiple DOColor would do. 81 | Also stores the SpriteRenderer as the tween's target so it can be used for filtered operations 82 | The value to tween toThe duration of the tween 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/DOTween43.xml.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f53471de02e87c74ba4d566f35ff7861 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/DOTween46.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cadfoot/unity-ecs-match-two/4fae2d840f784b53694ad52f6783954d47382f1a/Assets/Demigiant/DOTween/DOTween46.dll -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/DOTween46.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3023ee60803b6294db099d2f75778e3e 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 1 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | - first: 26 | Windows Store Apps: WindowsStoreApps 27 | second: 28 | enabled: 0 29 | settings: 30 | CPU: AnyCPU 31 | userData: 32 | assetBundleName: 33 | assetBundleVariant: 34 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/DOTween46.xml.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cac01ba2d810db743af636231e63740b 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/DOTween50.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cadfoot/unity-ecs-match-two/4fae2d840f784b53694ad52f6783954d47382f1a/Assets/Demigiant/DOTween/DOTween50.dll -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/DOTween50.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1184d623156660a439d0aa9b432c1e90 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 1 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | - first: 26 | Windows Store Apps: WindowsStoreApps 27 | second: 28 | enabled: 0 29 | settings: 30 | CPU: AnyCPU 31 | userData: 32 | assetBundleName: 33 | assetBundleVariant: 34 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/DOTween50.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | DOTween50 5 | 6 | 7 | 8 | 9 | Methods that extend known Unity objects and allow to directly create and control tweens from their instances. 10 | These, as all DOTween50 methods, require Unity 5.0 or later. 11 | 12 | 13 | 14 | Tweens an AudioMixer's exposed float to the given value. 15 | Also stores the AudioMixer as the tween's target so it can be used for filtered operations. 16 | Note that you need to manually expose a float in an AudioMixerGroup in order to be able to tween it from an AudioMixer. 17 | Name given to the exposed float to set 18 | The end value to reachThe duration of the tween 19 | 20 | 21 | 22 | Completes all tweens that have this target as a reference 23 | (meaning tweens that were started from this target, or that had this target added as an Id) 24 | and returns the total number of tweens completed 25 | (meaning the tweens that don't have infinite loops and were not already complete) 26 | 27 | For Sequences only: if TRUE also internal Sequence callbacks will be fired, 28 | otherwise they will be ignored 29 | 30 | 31 | 32 | Kills all tweens that have this target as a reference 33 | (meaning tweens that were started from this target, or that had this target added as an Id) 34 | and returns the total number of tweens killed. 35 | 36 | If TRUE completes the tween before killing it 37 | 38 | 39 | 40 | Flips the direction (backwards if it was going forward or viceversa) of all tweens that have this target as a reference 41 | (meaning tweens that were started from this target, or that had this target added as an Id) 42 | and returns the total number of tweens flipped. 43 | 44 | 45 | 46 | 47 | Sends to the given position all tweens that have this target as a reference 48 | (meaning tweens that were started from this target, or that had this target added as an Id) 49 | and returns the total number of tweens involved. 50 | 51 | Time position to reach 52 | (if higher than the whole tween duration the tween will simply reach its end) 53 | If TRUE will play the tween after reaching the given position, otherwise it will pause it 54 | 55 | 56 | 57 | Pauses all tweens that have this target as a reference 58 | (meaning tweens that were started from this target, or that had this target added as an Id) 59 | and returns the total number of tweens paused. 60 | 61 | 62 | 63 | 64 | Plays all tweens that have this target as a reference 65 | (meaning tweens that were started from this target, or that had this target added as an Id) 66 | and returns the total number of tweens played. 67 | 68 | 69 | 70 | 71 | Plays backwards all tweens that have this target as a reference 72 | (meaning tweens that were started from this target, or that had this target added as an Id) 73 | and returns the total number of tweens played. 74 | 75 | 76 | 77 | 78 | Plays forward all tweens that have this target as a reference 79 | (meaning tweens that were started from this target, or that had this target added as an Id) 80 | and returns the total number of tweens played. 81 | 82 | 83 | 84 | 85 | Restarts all tweens that have this target as a reference 86 | (meaning tweens that were started from this target, or that had this target added as an Id) 87 | and returns the total number of tweens restarted. 88 | 89 | 90 | 91 | 92 | Rewinds all tweens that have this target as a reference 93 | (meaning tweens that were started from this target, or that had this target added as an Id) 94 | and returns the total number of tweens rewinded. 95 | 96 | 97 | 98 | 99 | Smoothly rewinds all tweens that have this target as a reference 100 | (meaning tweens that were started from this target, or that had this target added as an Id) 101 | and returns the total number of tweens rewinded. 102 | 103 | 104 | 105 | 106 | Toggles the paused state (plays if it was paused, pauses if it was playing) of all tweens that have this target as a reference 107 | (meaning tweens that were started from this target, or that had this target added as an Id) 108 | and returns the total number of tweens involved. 109 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/DOTween50.xml.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 032e00ba3d12ffb418d053e39e9605da 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 571dc0ac8717431419a7ea66ae8d6e23 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/Editor/DOTweenEditor.XML: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | DOTweenEditor 5 | 6 | 7 | 8 | 9 | Checks that the given editor texture use the correct import settings, 10 | and applies them if they're incorrect. 11 | 12 | 13 | 14 | 15 | Returns TRUE if addons setup is required. 16 | 17 | 18 | 19 | 20 | Returns TRUE if the file/directory at the given path exists. 21 | 22 | Path, relative to Unity's project folder 23 | 24 | 25 | 26 | 27 | Converts the given project-relative path to a full path, 28 | with backward (\) slashes). 29 | 30 | 31 | 32 | 33 | Converts the given full path to a path usable with AssetDatabase methods 34 | (relative to Unity's project folder, and with the correct Unity forward (/) slashes). 35 | 36 | 37 | 38 | 39 | Connects to a asset. 40 | If the asset already exists at the given path, loads it and returns it. 41 | Otherwise, either returns NULL or automatically creates it before loading and returning it 42 | (depending on the given parameters). 43 | 44 | Asset type 45 | File path (relative to Unity's project folder) 46 | If TRUE and the requested asset doesn't exist, forces its creation 47 | 48 | 49 | 50 | Full path for the given loaded assembly, assembly file included 51 | 52 | 53 | 54 | 55 | Not used as menu item anymore, but as a utiity function 56 | 57 | 58 | 59 | 60 | Setups DOTween 61 | 62 | If TRUE, no warning window appears in case there is no need for setup 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/Editor/DOTweenEditor.XML.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5405503ee5afddc42bf1b95cabc6ad89 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cadfoot/unity-ecs-match-two/4fae2d840f784b53694ad52f6783954d47382f1a/Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0d6555af380a7264a9cd5a9083b1c4ad 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 1 18 | settings: {} 19 | userData: 20 | assetBundleName: 21 | assetBundleVariant: 22 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/Editor/Imgs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 36c5a6dbf1c77234c9d097789c5424cb 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/Editor/Imgs/DOTweenIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cadfoot/unity-ecs-match-two/4fae2d840f784b53694ad52f6783954d47382f1a/Assets/Demigiant/DOTween/Editor/Imgs/DOTweenIcon.png -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/Editor/Imgs/DOTweenIcon.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0d7e06117784ff44bacb9c9e551592b3 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: -1 32 | maxTextureSize: 1024 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: -1 36 | aniso: -1 37 | mipBias: -100 38 | wrapU: -1 39 | wrapV: -1 40 | wrapW: -1 41 | nPOTScale: 1 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 0 45 | spriteExtrude: 1 46 | spriteMeshType: 1 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 100 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 1 52 | alphaUsage: 1 53 | alphaIsTransparency: 0 54 | spriteTessellationDetail: -1 55 | textureType: 0 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | flipbookRows: 1 59 | flipbookColumns: 1 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | ignorePngGamma: 0 64 | applyGammaDecoding: 1 65 | platformSettings: 66 | - serializedVersion: 3 67 | buildTarget: DefaultTexturePlatform 68 | maxTextureSize: 1024 69 | resizeAlgorithm: 0 70 | textureFormat: -1 71 | textureCompression: 1 72 | compressionQuality: 50 73 | crunchedCompression: 0 74 | allowsAlphaSplitting: 0 75 | overridden: 0 76 | androidETC2FallbackOverride: 0 77 | forceMaximumCompressionQuality_BC6H_BC7: 0 78 | spriteSheet: 79 | serializedVersion: 2 80 | sprites: [] 81 | outline: [] 82 | physicsShape: [] 83 | bones: [] 84 | spriteID: 85 | internalID: 0 86 | vertices: [] 87 | indices: 88 | edges: [] 89 | weights: [] 90 | secondaryTextures: [] 91 | spritePackingTag: 92 | pSDRemoveMatte: 0 93 | pSDShowRemoveMatteOption: 0 94 | userData: 95 | assetBundleName: 96 | assetBundleVariant: 97 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/Editor/Imgs/Footer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cadfoot/unity-ecs-match-two/4fae2d840f784b53694ad52f6783954d47382f1a/Assets/Demigiant/DOTween/Editor/Imgs/Footer.png -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/Editor/Imgs/Footer.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0ce7b533e9764c141a068fadd859f9a6 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 1 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: -3 32 | maxTextureSize: 256 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: 1 36 | aniso: 1 37 | mipBias: -100 38 | wrapU: 1 39 | wrapV: 1 40 | wrapW: 1 41 | nPOTScale: 0 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 0 45 | spriteExtrude: 1 46 | spriteMeshType: 1 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 100 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 1 52 | alphaUsage: 1 53 | alphaIsTransparency: 1 54 | spriteTessellationDetail: -1 55 | textureType: 2 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | flipbookRows: 1 59 | flipbookColumns: 1 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | ignorePngGamma: 0 64 | applyGammaDecoding: 1 65 | platformSettings: 66 | - serializedVersion: 3 67 | buildTarget: DefaultTexturePlatform 68 | maxTextureSize: 256 69 | resizeAlgorithm: 0 70 | textureFormat: -1 71 | textureCompression: 0 72 | compressionQuality: 50 73 | crunchedCompression: 0 74 | allowsAlphaSplitting: 0 75 | overridden: 0 76 | androidETC2FallbackOverride: 0 77 | forceMaximumCompressionQuality_BC6H_BC7: 0 78 | spriteSheet: 79 | serializedVersion: 2 80 | sprites: [] 81 | outline: [] 82 | physicsShape: [] 83 | bones: [] 84 | spriteID: 85 | internalID: 0 86 | vertices: [] 87 | indices: 88 | edges: [] 89 | weights: [] 90 | secondaryTextures: [] 91 | spritePackingTag: 92 | pSDRemoveMatte: 0 93 | pSDShowRemoveMatteOption: 0 94 | userData: 95 | assetBundleName: 96 | assetBundleVariant: 97 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/Editor/Imgs/Footer_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cadfoot/unity-ecs-match-two/4fae2d840f784b53694ad52f6783954d47382f1a/Assets/Demigiant/DOTween/Editor/Imgs/Footer_dark.png -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/Editor/Imgs/Footer_dark.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 073261fcf37d98645bac61b0e19ec84f 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: -1 32 | maxTextureSize: 1024 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: -1 36 | aniso: -1 37 | mipBias: -100 38 | wrapU: -1 39 | wrapV: -1 40 | wrapW: -1 41 | nPOTScale: 1 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 0 45 | spriteExtrude: 1 46 | spriteMeshType: 1 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 100 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 1 52 | alphaUsage: 1 53 | alphaIsTransparency: 0 54 | spriteTessellationDetail: -1 55 | textureType: 0 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | flipbookRows: 1 59 | flipbookColumns: 1 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | ignorePngGamma: 0 64 | applyGammaDecoding: 1 65 | platformSettings: 66 | - serializedVersion: 3 67 | buildTarget: DefaultTexturePlatform 68 | maxTextureSize: 1024 69 | resizeAlgorithm: 0 70 | textureFormat: -1 71 | textureCompression: 1 72 | compressionQuality: 50 73 | crunchedCompression: 0 74 | allowsAlphaSplitting: 0 75 | overridden: 0 76 | androidETC2FallbackOverride: 0 77 | forceMaximumCompressionQuality_BC6H_BC7: 0 78 | spriteSheet: 79 | serializedVersion: 2 80 | sprites: [] 81 | outline: [] 82 | physicsShape: [] 83 | bones: [] 84 | spriteID: 85 | internalID: 0 86 | vertices: [] 87 | indices: 88 | edges: [] 89 | weights: [] 90 | secondaryTextures: [] 91 | spritePackingTag: 92 | pSDRemoveMatte: 0 93 | pSDShowRemoveMatteOption: 0 94 | userData: 95 | assetBundleName: 96 | assetBundleVariant: 97 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/Editor/Imgs/Header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cadfoot/unity-ecs-match-two/4fae2d840f784b53694ad52f6783954d47382f1a/Assets/Demigiant/DOTween/Editor/Imgs/Header.jpg -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/Editor/Imgs/Header.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7741b4957200f0747a3c79d148de2402 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 1 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: -3 32 | maxTextureSize: 512 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: 1 36 | aniso: 1 37 | mipBias: -100 38 | wrapU: 1 39 | wrapV: 1 40 | wrapW: 1 41 | nPOTScale: 0 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 0 45 | spriteExtrude: 1 46 | spriteMeshType: 1 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 100 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 1 52 | alphaUsage: 1 53 | alphaIsTransparency: 1 54 | spriteTessellationDetail: -1 55 | textureType: 2 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | flipbookRows: 1 59 | flipbookColumns: 1 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | ignorePngGamma: 0 64 | applyGammaDecoding: 1 65 | platformSettings: 66 | - serializedVersion: 3 67 | buildTarget: DefaultTexturePlatform 68 | maxTextureSize: 512 69 | resizeAlgorithm: 0 70 | textureFormat: -1 71 | textureCompression: 0 72 | compressionQuality: 50 73 | crunchedCompression: 0 74 | allowsAlphaSplitting: 0 75 | overridden: 0 76 | androidETC2FallbackOverride: 0 77 | forceMaximumCompressionQuality_BC6H_BC7: 0 78 | spriteSheet: 79 | serializedVersion: 2 80 | sprites: [] 81 | outline: [] 82 | physicsShape: [] 83 | bones: [] 84 | spriteID: 85 | internalID: 0 86 | vertices: [] 87 | indices: 88 | edges: [] 89 | weights: [] 90 | secondaryTextures: [] 91 | spritePackingTag: 92 | pSDRemoveMatte: 0 93 | pSDShowRemoveMatteOption: 0 94 | userData: 95 | assetBundleName: 96 | assetBundleVariant: 97 | -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/readme.txt: -------------------------------------------------------------------------------- 1 | DOTween and DOTween Pro are copyright (c) 2014 Daniele Giardini - Demigiant 2 | 3 | // GET STARTED ////////////////////////////////////////////// 4 | 5 | - After importing a new DOTween update, select DOTween's Utility Panel from the Tools menu (if it doesn't open automatically) and press the "Setup DOTween..." button to set up additional features based on your Unity version. 6 | - In your code, add "using DG.Tweening" to each class where you want to use DOTween. 7 | - You're ready to tween. Check out the links below for full documentation and license info. 8 | 9 | 10 | // LINKS /////////////////////////////////////////////////////// 11 | 12 | DOTween website (documentation, examples, etc): http://dotween.demigiant.com 13 | DOTween license: http://dotween.demigiant.com/license.php 14 | DOTween repository (Google Code): https://code.google.com/p/dotween/ 15 | 16 | // NOTES ////////////////////////////////////////////////////// 17 | 18 | - DOTween's Utility Panel can be found under "Tools > DOTween Utility Panel" and also contains other useful options, plus a tab to set DOTween's preferences -------------------------------------------------------------------------------- /Assets/Demigiant/DOTween/readme.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6a094c30a6fab4a479d30af956a423f0 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Demigiant/Resources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 13daa756a2eeebd458bdedc72eb4bc45 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Demigiant/Resources/DOTweenSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 16995157, guid: 6e38ac6b1c3556b4c888ca8552375e1e, type: 3} 13 | m_Name: DOTweenSettings 14 | m_EditorClassIdentifier: 15 | useSafeMode: 1 16 | timeScale: 1 17 | useSmoothDeltaTime: 0 18 | maxSmoothUnscaledTime: 0.15 19 | showUnityEditorReport: 0 20 | logBehaviour: 2 21 | drawGizmos: 1 22 | defaultRecyclable: 0 23 | defaultAutoPlay: 3 24 | defaultUpdateType: 0 25 | defaultTimeScaleIndependent: 0 26 | defaultEaseType: 6 27 | defaultEaseOvershootOrAmplitude: 1.70158 28 | defaultEasePeriod: 0 29 | defaultAutoKill: 1 30 | defaultLoopType: 0 31 | storeSettingsLocation: 2 32 | -------------------------------------------------------------------------------- /Assets/Demigiant/Resources/DOTweenSettings.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 82ca2c215b103b842a14a79b756741fd 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Client.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a4365ec3ba35fed4fa663596b0f46d16 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Client/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dd4104aa88a5dec4ea6df58c703f23d6 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Client/Prefabs/Piece.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &3853111105711469190 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 4469419747773165387} 12 | - component: {fileID: 6892710017228801293} 13 | m_Layer: 0 14 | m_Name: Piece 15 | m_TagString: Untagged 16 | m_Icon: {fileID: 0} 17 | m_NavMeshLayer: 0 18 | m_StaticEditorFlags: 0 19 | m_IsActive: 1 20 | --- !u!4 &4469419747773165387 21 | Transform: 22 | m_ObjectHideFlags: 0 23 | m_CorrespondingSourceObject: {fileID: 0} 24 | m_PrefabInstance: {fileID: 0} 25 | m_PrefabAsset: {fileID: 0} 26 | m_GameObject: {fileID: 3853111105711469190} 27 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 28 | m_LocalPosition: {x: 0, y: 0, z: 0} 29 | m_LocalScale: {x: 1, y: 1, z: 1} 30 | m_Children: 31 | - {fileID: 577332088505958169} 32 | m_Father: {fileID: 0} 33 | m_RootOrder: 0 34 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 35 | --- !u!114 &6892710017228801293 36 | MonoBehaviour: 37 | m_ObjectHideFlags: 0 38 | m_CorrespondingSourceObject: {fileID: 0} 39 | m_PrefabInstance: {fileID: 0} 40 | m_PrefabAsset: {fileID: 0} 41 | m_GameObject: {fileID: 3853111105711469190} 42 | m_Enabled: 1 43 | m_EditorHideFlags: 0 44 | m_Script: {fileID: 11500000, guid: d34144802fe7500438a87ef6b370c85d, type: 3} 45 | m_Name: 46 | m_EditorClassIdentifier: 47 | SpriteRenderer: {fileID: 541876615027810285} 48 | --- !u!1 &6823978450506481748 49 | GameObject: 50 | m_ObjectHideFlags: 0 51 | m_CorrespondingSourceObject: {fileID: 0} 52 | m_PrefabInstance: {fileID: 0} 53 | m_PrefabAsset: {fileID: 0} 54 | serializedVersion: 6 55 | m_Component: 56 | - component: {fileID: 577332088505958169} 57 | - component: {fileID: 541876615027810285} 58 | m_Layer: 0 59 | m_Name: Sprite 60 | m_TagString: Untagged 61 | m_Icon: {fileID: 0} 62 | m_NavMeshLayer: 0 63 | m_StaticEditorFlags: 0 64 | m_IsActive: 1 65 | --- !u!4 &577332088505958169 66 | Transform: 67 | m_ObjectHideFlags: 0 68 | m_CorrespondingSourceObject: {fileID: 0} 69 | m_PrefabInstance: {fileID: 0} 70 | m_PrefabAsset: {fileID: 0} 71 | m_GameObject: {fileID: 6823978450506481748} 72 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 73 | m_LocalPosition: {x: 0.5, y: 0.5, z: 0} 74 | m_LocalScale: {x: 1, y: 1, z: 1} 75 | m_Children: [] 76 | m_Father: {fileID: 4469419747773165387} 77 | m_RootOrder: 0 78 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 79 | --- !u!212 &541876615027810285 80 | SpriteRenderer: 81 | m_ObjectHideFlags: 0 82 | m_CorrespondingSourceObject: {fileID: 0} 83 | m_PrefabInstance: {fileID: 0} 84 | m_PrefabAsset: {fileID: 0} 85 | m_GameObject: {fileID: 6823978450506481748} 86 | m_Enabled: 1 87 | m_CastShadows: 0 88 | m_ReceiveShadows: 0 89 | m_DynamicOccludee: 1 90 | m_MotionVectors: 1 91 | m_LightProbeUsage: 1 92 | m_ReflectionProbeUsage: 1 93 | m_RayTracingMode: 0 94 | m_RayTraceProcedural: 0 95 | m_RenderingLayerMask: 1 96 | m_RendererPriority: 0 97 | m_Materials: 98 | - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 99 | m_StaticBatchInfo: 100 | firstSubMesh: 0 101 | subMeshCount: 0 102 | m_StaticBatchRoot: {fileID: 0} 103 | m_ProbeAnchor: {fileID: 0} 104 | m_LightProbeVolumeOverride: {fileID: 0} 105 | m_ScaleInLightmap: 1 106 | m_ReceiveGI: 1 107 | m_PreserveUVs: 0 108 | m_IgnoreNormalsForChartDetection: 0 109 | m_ImportantGI: 0 110 | m_StitchLightmapSeams: 1 111 | m_SelectedEditorRenderState: 0 112 | m_MinimumChartSize: 4 113 | m_AutoUVMaxDistance: 0.5 114 | m_AutoUVMaxAngle: 89 115 | m_LightmapParameters: {fileID: 0} 116 | m_SortingLayerID: 0 117 | m_SortingLayer: 0 118 | m_SortingOrder: 0 119 | m_Sprite: {fileID: 21300000, guid: 03e47ac48b54cea4589a2e24339d1f57, type: 3} 120 | m_Color: {r: 1, g: 1, b: 1, a: 1} 121 | m_FlipX: 0 122 | m_FlipY: 0 123 | m_DrawMode: 0 124 | m_Size: {x: 1, y: 1} 125 | m_AdaptiveModeThreshold: 0.5 126 | m_SpriteTileMode: 0 127 | m_WasSpriteAssigned: 1 128 | m_MaskInteraction: 0 129 | m_SpriteSortPoint: 0 130 | -------------------------------------------------------------------------------- /Assets/_Client/Prefabs/Piece.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0839f91e88be5b94f92392bc5a76784d 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/_Client/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 324ec54c42dd65049846841ab659a94a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Client/Scenes/SampleScene.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 9 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 3 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 11 47 | m_GIWorkflowMode: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 0 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_AtlasSize: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 0 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 500 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 500 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 2 83 | m_PVRDenoiserTypeDirect: 0 84 | m_PVRDenoiserTypeIndirect: 0 85 | m_PVRDenoiserTypeAO: 0 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 0 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ExportTrainingData: 0 98 | m_TrainingDataDestination: TrainingData 99 | m_LightProbeSampleCountMultiplier: 4 100 | m_LightingDataAsset: {fileID: 0} 101 | m_UseShadowmask: 1 102 | --- !u!196 &4 103 | NavMeshSettings: 104 | serializedVersion: 2 105 | m_ObjectHideFlags: 0 106 | m_BuildSettings: 107 | serializedVersion: 2 108 | agentTypeID: 0 109 | agentRadius: 0.5 110 | agentHeight: 2 111 | agentSlope: 45 112 | agentClimb: 0.4 113 | ledgeDropHeight: 0 114 | maxJumpAcrossDistance: 0 115 | minRegionArea: 2 116 | manualCellSize: 0 117 | cellSize: 0.16666667 118 | manualTileSize: 0 119 | tileSize: 256 120 | accuratePlacement: 0 121 | debug: 122 | m_Flags: 0 123 | m_NavMeshData: {fileID: 0} 124 | --- !u!1 &519420028 125 | GameObject: 126 | m_ObjectHideFlags: 0 127 | m_CorrespondingSourceObject: {fileID: 0} 128 | m_PrefabInstance: {fileID: 0} 129 | m_PrefabAsset: {fileID: 0} 130 | serializedVersion: 6 131 | m_Component: 132 | - component: {fileID: 519420032} 133 | - component: {fileID: 519420031} 134 | - component: {fileID: 519420029} 135 | m_Layer: 0 136 | m_Name: Main Camera 137 | m_TagString: MainCamera 138 | m_Icon: {fileID: 0} 139 | m_NavMeshLayer: 0 140 | m_StaticEditorFlags: 0 141 | m_IsActive: 1 142 | --- !u!81 &519420029 143 | AudioListener: 144 | m_ObjectHideFlags: 0 145 | m_CorrespondingSourceObject: {fileID: 0} 146 | m_PrefabInstance: {fileID: 0} 147 | m_PrefabAsset: {fileID: 0} 148 | m_GameObject: {fileID: 519420028} 149 | m_Enabled: 1 150 | --- !u!20 &519420031 151 | Camera: 152 | m_ObjectHideFlags: 0 153 | m_CorrespondingSourceObject: {fileID: 0} 154 | m_PrefabInstance: {fileID: 0} 155 | m_PrefabAsset: {fileID: 0} 156 | m_GameObject: {fileID: 519420028} 157 | m_Enabled: 1 158 | serializedVersion: 2 159 | m_ClearFlags: 2 160 | m_BackGroundColor: {r: 0.9960785, g: 0.9333334, b: 0.86666673, a: 0} 161 | m_projectionMatrixMode: 1 162 | m_GateFitMode: 2 163 | m_FOVAxisMode: 0 164 | m_SensorSize: {x: 36, y: 24} 165 | m_LensShift: {x: 0, y: 0} 166 | m_FocalLength: 50 167 | m_NormalizedViewPortRect: 168 | serializedVersion: 2 169 | x: 0 170 | y: 0 171 | width: 1 172 | height: 1 173 | near clip plane: 0.3 174 | far clip plane: 1000 175 | field of view: 60 176 | orthographic: 1 177 | orthographic size: 10 178 | m_Depth: -1 179 | m_CullingMask: 180 | serializedVersion: 2 181 | m_Bits: 4294967295 182 | m_RenderingPath: -1 183 | m_TargetTexture: {fileID: 0} 184 | m_TargetDisplay: 0 185 | m_TargetEye: 0 186 | m_HDR: 1 187 | m_AllowMSAA: 0 188 | m_AllowDynamicResolution: 0 189 | m_ForceIntoRT: 0 190 | m_OcclusionCulling: 0 191 | m_StereoConvergence: 10 192 | m_StereoSeparation: 0.022 193 | --- !u!4 &519420032 194 | Transform: 195 | m_ObjectHideFlags: 0 196 | m_CorrespondingSourceObject: {fileID: 0} 197 | m_PrefabInstance: {fileID: 0} 198 | m_PrefabAsset: {fileID: 0} 199 | m_GameObject: {fileID: 519420028} 200 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 201 | m_LocalPosition: {x: 5, y: 5, z: -10} 202 | m_LocalScale: {x: 1, y: 1, z: 1} 203 | m_Children: [] 204 | m_Father: {fileID: 0} 205 | m_RootOrder: 0 206 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 207 | --- !u!1 &679006482 208 | GameObject: 209 | m_ObjectHideFlags: 0 210 | m_CorrespondingSourceObject: {fileID: 0} 211 | m_PrefabInstance: {fileID: 0} 212 | m_PrefabAsset: {fileID: 0} 213 | serializedVersion: 6 214 | m_Component: 215 | - component: {fileID: 679006483} 216 | m_Layer: 0 217 | m_Name: PiecesRoot 218 | m_TagString: Untagged 219 | m_Icon: {fileID: 0} 220 | m_NavMeshLayer: 0 221 | m_StaticEditorFlags: 0 222 | m_IsActive: 1 223 | --- !u!4 &679006483 224 | Transform: 225 | m_ObjectHideFlags: 0 226 | m_CorrespondingSourceObject: {fileID: 0} 227 | m_PrefabInstance: {fileID: 0} 228 | m_PrefabAsset: {fileID: 0} 229 | m_GameObject: {fileID: 679006482} 230 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 231 | m_LocalPosition: {x: 0, y: 0, z: 0} 232 | m_LocalScale: {x: 1, y: 1, z: 1} 233 | m_Children: [] 234 | m_Father: {fileID: 0} 235 | m_RootOrder: 2 236 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 237 | --- !u!1 &789367119 238 | GameObject: 239 | m_ObjectHideFlags: 0 240 | m_CorrespondingSourceObject: {fileID: 0} 241 | m_PrefabInstance: {fileID: 0} 242 | m_PrefabAsset: {fileID: 0} 243 | serializedVersion: 6 244 | m_Component: 245 | - component: {fileID: 789367122} 246 | - component: {fileID: 789367121} 247 | - component: {fileID: 789367120} 248 | - component: {fileID: 789367123} 249 | m_Layer: 0 250 | m_Name: Game 251 | m_TagString: Untagged 252 | m_Icon: {fileID: 0} 253 | m_NavMeshLayer: 0 254 | m_StaticEditorFlags: 0 255 | m_IsActive: 1 256 | --- !u!114 &789367120 257 | MonoBehaviour: 258 | m_ObjectHideFlags: 0 259 | m_CorrespondingSourceObject: {fileID: 0} 260 | m_PrefabInstance: {fileID: 0} 261 | m_PrefabAsset: {fileID: 0} 262 | m_GameObject: {fileID: 789367119} 263 | m_Enabled: 1 264 | m_EditorHideFlags: 0 265 | m_Script: {fileID: 11500000, guid: a6286b89de6777744a59ea3972a748ea, type: 3} 266 | m_Name: 267 | m_EditorClassIdentifier: 268 | _piecesRoot: {fileID: 679006483} 269 | _pieceViewPrefab: {fileID: 6892710017228801293, guid: 0839f91e88be5b94f92392bc5a76784d, 270 | type: 3} 271 | _sprites: 272 | - {fileID: 21300000, guid: 9a35077a7b392a040a6b5017e99e9411, type: 3} 273 | - {fileID: 21300000, guid: 87b6145d6135cfd4faf83e26e8f8760f, type: 3} 274 | - {fileID: 21300000, guid: 92d29f5c3ff0f2044bde78f54704b6dd, type: 3} 275 | - {fileID: 21300000, guid: 9fae1fb05f6bcad4c81915462b7bf699, type: 3} 276 | --- !u!114 &789367121 277 | MonoBehaviour: 278 | m_ObjectHideFlags: 0 279 | m_CorrespondingSourceObject: {fileID: 0} 280 | m_PrefabInstance: {fileID: 0} 281 | m_PrefabAsset: {fileID: 0} 282 | m_GameObject: {fileID: 789367119} 283 | m_Enabled: 1 284 | m_EditorHideFlags: 0 285 | m_Script: {fileID: 11500000, guid: ea8b01e81fa1ff24aa3418cf91e5f07a, type: 3} 286 | m_Name: 287 | m_EditorClassIdentifier: 288 | _boardSize: {x: 10, y: 10} 289 | _useCustomSeed: 0 290 | _seed: 0 291 | --- !u!4 &789367122 292 | Transform: 293 | m_ObjectHideFlags: 0 294 | m_CorrespondingSourceObject: {fileID: 0} 295 | m_PrefabInstance: {fileID: 0} 296 | m_PrefabAsset: {fileID: 0} 297 | m_GameObject: {fileID: 789367119} 298 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 299 | m_LocalPosition: {x: 0, y: 0, z: 0} 300 | m_LocalScale: {x: 1, y: 1, z: 1} 301 | m_Children: [] 302 | m_Father: {fileID: 0} 303 | m_RootOrder: 1 304 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 305 | --- !u!114 &789367123 306 | MonoBehaviour: 307 | m_ObjectHideFlags: 0 308 | m_CorrespondingSourceObject: {fileID: 0} 309 | m_PrefabInstance: {fileID: 0} 310 | m_PrefabAsset: {fileID: 0} 311 | m_GameObject: {fileID: 789367119} 312 | m_Enabled: 1 313 | m_EditorHideFlags: 0 314 | m_Script: {fileID: 11500000, guid: 31cd0a169d832774181c421ed633c06d, type: 3} 315 | m_Name: 316 | m_EditorClassIdentifier: 317 | _camera: {fileID: 519420031} 318 | -------------------------------------------------------------------------------- /Assets/_Client/Scenes/SampleScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2cda990e2423bbf4892e6590ba056729 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9122fcc1ba7c82140b62f26196404fb1 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/BoardExtensions.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | using Leopotam.Ecs.Types; 3 | 4 | namespace MatchTwo.Ecs 5 | { 6 | static class BoardExtensions 7 | { 8 | public static void InitLookup(ref this Board board) 9 | { 10 | board.Lookup = new int[board.Size.X * board.Size.Y]; 11 | } 12 | 13 | public static void UpdateLookup(this Board board, EcsFilter pieces) 14 | { 15 | for (int i = 0; i < board.Lookup.Length; i++) 16 | board.Lookup[i] = -1; 17 | 18 | foreach (var i in pieces) 19 | { 20 | var position = pieces.Get2(i).Value; 21 | board.Lookup[board.PositionToLookupIndex(position.X, position.Y)] = i; 22 | } 23 | } 24 | 25 | public static bool HasPieceAt(this Board board, int x, int y) 26 | { 27 | return board.GetFilterIndex(x, y) != -1; 28 | } 29 | 30 | public static bool HasPieceAt(this Board board, Int2 position) 31 | { 32 | return board.HasPieceAt(position.X, position.Y); 33 | } 34 | 35 | public static int GetFilterIndex(this Board board, int x, int y) 36 | { 37 | return board.Lookup[board.PositionToLookupIndex(x, y)]; 38 | } 39 | 40 | public static int GetFilterIndex(this Board board, Int2 position) 41 | { 42 | return board.GetFilterIndex(position.X, position.Y); 43 | } 44 | 45 | public static int PositionToLookupIndex(this Board board, int x, int y) 46 | { 47 | return board.Size.Y * x + y; 48 | } 49 | 50 | public static int PositionToLookupIndex(this Board board, Int2 position) 51 | { 52 | return board.PositionToLookupIndex(position); 53 | } 54 | 55 | public static bool PositionInBounds(this Board board, int x, int y) 56 | { 57 | return x >= 0 && x < board.Size.X && y >= 0 && y < board.Size.Y; 58 | } 59 | 60 | public static bool PositionInBounds(this Board board, Int2 position) 61 | { 62 | return board.PositionInBounds(position.X, position.Y); 63 | } 64 | 65 | public static int GetNextEmptyRow(this Board board, int x, int y) 66 | { 67 | y--; 68 | 69 | while (y >= 0 && !board.HasPieceAt(x, y)) 70 | y--; 71 | 72 | return y + 1; 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/BoardExtensions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d76562d86c5436b4f84a490c84cf744f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4281f96b04219704cba7873b8646c97a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cadfoot/unity-ecs-match-two/4fae2d840f784b53694ad52f6783954d47382f1a/Assets/_Client/Scripts/Components/.gitkeep -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Animating.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | 3 | namespace MatchTwo { 4 | struct Animating : IEcsIgnoreInFilter { } 5 | } -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Animating.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fb7273824d398514d8b7e532fc04f99c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Board.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs.Types; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | struct Board 6 | { 7 | public Int2 Size; 8 | // having any game state in components is bad, but we need this for faster entity access later. 9 | // don't want to create an injectable service just for this 10 | internal int[] Lookup; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Board.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c4fb7886a86fa8c4ca6f0394740348b5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Destroyed.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | struct Destroyed : IEcsIgnoreInFilter { } 6 | } 7 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Destroyed.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 11ce4f5cc26c767458aee590c4886b0c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Group.cs: -------------------------------------------------------------------------------- 1 | namespace MatchTwo.Ecs 2 | { 3 | struct Group 4 | { 5 | public int Count; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Group.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f68dfb59b3e23474a9d3c691f0e5e1cd 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/GroupingTarget.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | struct GroupingTarget : IEcsIgnoreInFilter { } 6 | } 7 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/GroupingTarget.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cfc128aef8937904b9e15c058f80c9a9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/InGroup.cs: -------------------------------------------------------------------------------- 1 | namespace MatchTwo.Ecs 2 | { 3 | struct InGroup 4 | { 5 | public int GroupIndex; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/InGroup.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 39acc2db05650fe4683cb4f3938fd07a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Input.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs.Types; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | struct Input 6 | { 7 | public Int2 Coordinate; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Input.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c561307b206d2bd438ab11f2235fd301 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Match.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | 3 | namespace MatchTwo { 4 | struct Match : IEcsIgnoreInFilter { } 5 | } -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Match.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3f014996940f58345b8c2e781593e85b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/New.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | struct New : IEcsIgnoreInFilter { } 6 | } 7 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/New.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 17225a14fecf45e4488057b8f56147e7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Piece.cs: -------------------------------------------------------------------------------- 1 | namespace MatchTwo.Ecs 2 | { 3 | struct Piece 4 | { 5 | public int Value; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Piece.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 765b3ae92f66f5249a75b6bfaa9e8f5a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Position.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs.Types; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | struct Position 6 | { 7 | public Int2 Value; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Position.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: be813fc3ddcd7d740a26071f3c08b1ce 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/PositionUpdated.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | struct PositionUpdated : IEcsIgnoreInFilter { } 6 | } 7 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/PositionUpdated.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f1623cea2c592354ba3510281dbfad2d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Selected.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | struct Selected : IEcsIgnoreInFilter { } 6 | } 7 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Selected.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cb25e609ae805c64a90e7145cb5b7d29 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Shuffled.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | struct Shuffled : IEcsIgnoreInFilter { } 6 | } -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/Shuffled.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f4d85bd4bd3ed6349ae67e185a730e6e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/View.cs: -------------------------------------------------------------------------------- 1 | namespace MatchTwo.Ecs 2 | { 3 | struct View 4 | { 5 | public IPieceView Value; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Components/View.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 40037155845ec3449be26e68558dac4f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/EcsStartup.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using Leopotam.Ecs; 3 | using MatchTwo.Ecs; 4 | using Random = System.Random; 5 | 6 | namespace MatchTwo 7 | { 8 | [RequireComponent(typeof(PieceViewService))] 9 | [RequireComponent(typeof(InputService))] 10 | sealed class EcsStartup : MonoBehaviour 11 | { 12 | [SerializeField] private Vector2Int _boardSize; 13 | 14 | [SerializeField] private bool _useCustomSeed; 15 | [SerializeField] private int _seed; 16 | 17 | private EcsWorld _world; 18 | private EcsSystems _systems; 19 | 20 | private void Start() 21 | { 22 | _world = new EcsWorld(); 23 | _systems = new EcsSystems(_world); 24 | 25 | var boardSystems = new EcsSystems(_world, "board_systems") 26 | .Add(new BoardInitSystem(_boardSize.x, _boardSize.y)) 27 | .Add(new BoardFallSystem()) 28 | .Add(new BoardFillSystem()) 29 | .Add(new BoardShuffleSystem()) 30 | .Add(new BoardResetGroupSystem()) 31 | .Add(new BoardGroupSystem()) 32 | .Add(new PieceSelectSystem()) 33 | .Add(new PieceDestroySelectedSystem()); 34 | 35 | _systems 36 | .Add(new InputSystem()) 37 | 38 | .Add(new BoardSystemsDisableIfAnimatingSystem(_systems, "board_systems")) 39 | 40 | .Add(boardSystems) 41 | 42 | .Add(new CameraFocusOnBoardSystem(Camera.main)) 43 | .Add(new PieceViewCreateSystem()) 44 | .Add(new PieceViewUpdatePositionSystem()) 45 | .Add(new PieceViewUpdateAnimatingSystem()) 46 | .Add(new PieceViewDestroySystem()) 47 | 48 | .Add(new DestroyEntitiesWithDestroyedSystem()) 49 | 50 | .Inject(GetComponent()) 51 | .Inject(GetComponent()) 52 | .Inject(_useCustomSeed ? new Random(_seed) : new Random()) 53 | 54 | .OneFrame() 55 | .OneFrame() 56 | .OneFrame() 57 | .OneFrame() 58 | .OneFrame() 59 | .OneFrame() 60 | 61 | .Init(); 62 | } 63 | 64 | private void Update() 65 | { 66 | _systems?.Run(); 67 | } 68 | 69 | private void OnDestroy() 70 | { 71 | if (_systems != null) 72 | { 73 | _systems.Destroy(); 74 | _systems = null; 75 | _world.Destroy(); 76 | _world = null; 77 | } 78 | } 79 | 80 | private void OnValidate() 81 | { 82 | _boardSize.x = Mathf.Max(2, _boardSize.x); 83 | _boardSize.y = Mathf.Max(2, _boardSize.y); 84 | } 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/EcsStartup.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ea8b01e81fa1ff24aa3418cf91e5f07a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/EcsWorldExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Leopotam.Ecs; 3 | using Leopotam.Ecs.Types; 4 | 5 | namespace MatchTwo.Ecs 6 | { 7 | static class EcsWorldExtensions 8 | { 9 | public static EcsEntity CreateRandomPieceAt(this EcsWorld world, int x, int y, Random random, int maxValue = 4) 10 | { 11 | var entity = world.NewEntity(); 12 | entity.Get().Value = random.Next(maxValue); 13 | entity.Get().Value = new Int2 (x, y); 14 | entity.Get(); 15 | 16 | return entity; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/EcsWorldExtensions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2ea29574c7a5e8247bd7b28370899189 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/IPieceView.cs: -------------------------------------------------------------------------------- 1 | namespace MatchTwo 2 | { 3 | interface IPieceView 4 | { 5 | bool IsAnimating { get; } 6 | void UpdateGroup(int group); 7 | void UpdateValue(int value); 8 | void UpdatePosition(int x, int y); 9 | void Release(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/IPieceView.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e8e0ffdc3527322479602996ffb3ba56 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Services.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5922a113d46e1674da30932df127b6da 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Services/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cadfoot/unity-ecs-match-two/4fae2d840f784b53694ad52f6783954d47382f1a/Assets/_Client/Scripts/Services/.gitkeep -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Services/IInputService.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs.Types; 2 | 3 | namespace MatchTwo 4 | { 5 | interface IInputService 6 | { 7 | bool GetClickedCoordinate(out Int2 coord); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Services/IInputService.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b09308fe5af986f46a6c9663fda34bc8 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Services/IPieceViewService.cs: -------------------------------------------------------------------------------- 1 | namespace MatchTwo 2 | { 3 | interface IPieceViewService 4 | { 5 | IPieceView CreatePieceView(int value, int x, int y); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Services/IPieceViewService.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ea50ec4d180f1bb43842acdbb7f02e75 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f040cf85cf964ab40b2f92bc872b17b4 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cadfoot/unity-ecs-match-two/4fae2d840f784b53694ad52f6783954d47382f1a/Assets/_Client/Scripts/Systems/.gitkeep -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/BoardFallSystem.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | sealed class BoardFallSystem : IEcsRunSystem 6 | { 7 | private readonly EcsFilter _board = default; 8 | private readonly EcsFilter _pieces = default; 9 | 10 | void IEcsRunSystem.Run() 11 | { 12 | ref var board = ref _board.Get1(0); 13 | board.UpdateLookup(_pieces); 14 | 15 | for (int x = 0; x < board.Size.X; x++) 16 | { 17 | for (int y = 1; y < board.Size.Y; y++) 18 | { 19 | if (!board.HasPieceAt(x, y)) 20 | continue; 21 | 22 | var newY = board.GetNextEmptyRow(x, y); 23 | 24 | if (newY == y) 25 | continue; 26 | 27 | var filterIndex = board.GetFilterIndex(x, y); 28 | ref var position = ref _pieces.Get2(filterIndex).Value; 29 | position.Y = newY; 30 | 31 | _pieces.GetEntity(filterIndex).Get(); 32 | 33 | // partially update the lookup 34 | board.Lookup[board.PositionToLookupIndex(x, y)] = -1; 35 | board.Lookup[board.PositionToLookupIndex(x, newY)] = filterIndex; 36 | } 37 | } 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/BoardFallSystem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5a7ab6d91c9614348baf92c06d10e533 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/BoardFillSystem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Leopotam.Ecs; 3 | 4 | namespace MatchTwo.Ecs 5 | { 6 | sealed class BoardFillSystem : IEcsRunSystem 7 | { 8 | private readonly EcsWorld _world = default; 9 | private readonly Random _random = default; 10 | 11 | private readonly EcsFilter _boards = default; 12 | private readonly EcsFilter _pieces = default; 13 | 14 | void IEcsRunSystem.Run() 15 | { 16 | ref var board = ref _boards.Get1(0); 17 | board.UpdateLookup(_pieces); 18 | 19 | for (int x = 0; x < board.Size.X; x++) 20 | { 21 | var y = board.GetNextEmptyRow(x, board.Size.Y); 22 | while (y != board.Size.Y) 23 | { 24 | _world.CreateRandomPieceAt(x, y, _random); 25 | 26 | board.UpdateLookup(_pieces); 27 | y = board.GetNextEmptyRow(x, board.Size.Y); 28 | } 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/BoardFillSystem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c719e0d0ac918b74fbb2c54fc10cb065 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/BoardGroupSystem.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | using Leopotam.Ecs.Types; 3 | 4 | namespace MatchTwo.Ecs 5 | { 6 | sealed class BoardGroupSystem : IEcsRunSystem 7 | { 8 | private readonly Int2[] _adjacents = new[] { 9 | new Int2(+1, +0), new Int2(-1, +0), new Int2(+0, +1), new Int2(+0, -1) 10 | }; 11 | 12 | private readonly EcsWorld _world = default; 13 | 14 | private readonly EcsFilter _boards = default; 15 | private readonly EcsFilter _allPieces = default; 16 | private readonly EcsFilter.Exclude _nonGrouped = default; 17 | private readonly EcsFilter _groupingTargets = default; 18 | private readonly EcsFilter _groups = default; 19 | 20 | void IEcsRunSystem.Run() 21 | { 22 | if (_nonGrouped.IsEmpty()) 23 | return; 24 | 25 | ref var board = ref _boards.Get1(0); 26 | board.UpdateLookup(_allPieces); 27 | 28 | while (!_nonGrouped.IsEmpty()) 29 | { 30 | var groupEntity = _world.NewEntity(); 31 | ref var group = ref groupEntity.Get(); 32 | 33 | var groupIndex = _groups.GetEntitiesCount() - 1; 34 | 35 | var nextGroupValue = _nonGrouped.Get1(0).Value; 36 | var nextGroupingTarget = _nonGrouped.GetEntity(0); 37 | nextGroupingTarget.Get(); 38 | 39 | while (!_groupingTargets.IsEmpty()) 40 | { 41 | foreach (var i in _groupingTargets) 42 | { 43 | var position = _groupingTargets.Get2(i).Value; 44 | foreach (var offset in _adjacents) 45 | { 46 | var neighbourPosition = position + offset; 47 | if (!board.PositionInBounds(neighbourPosition)) 48 | continue; 49 | 50 | if (!board.HasPieceAt(neighbourPosition)) 51 | continue; 52 | 53 | var filterIndex = board.GetFilterIndex(neighbourPosition); 54 | if (_allPieces.Get1(filterIndex).Value != nextGroupValue) 55 | continue; 56 | 57 | var neighbourEntity = _allPieces.GetEntity(filterIndex); 58 | if (neighbourEntity.Has()) 59 | continue; 60 | 61 | neighbourEntity.Get(); 62 | } 63 | 64 | var entity = _groupingTargets.GetEntity(i); 65 | entity.Get().GroupIndex = groupIndex; 66 | entity.Del(); 67 | 68 | group.Count++; 69 | if (group.Count == 2) 70 | groupEntity.Get(); 71 | } 72 | } 73 | } 74 | } 75 | } 76 | } -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/BoardGroupSystem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d97608a74da1b4b49a086e82edbc8287 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/BoardInitSystem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Leopotam.Ecs; 3 | using Leopotam.Ecs.Types; 4 | 5 | namespace MatchTwo.Ecs 6 | { 7 | sealed class BoardInitSystem : IEcsInitSystem 8 | { 9 | private readonly EcsWorld _world = default; 10 | private readonly Random _random = default; 11 | 12 | private readonly Int2 _size; 13 | 14 | public BoardInitSystem(int width, int height) 15 | { 16 | _size = new Int2(width, height); 17 | } 18 | 19 | void IEcsInitSystem.Init() 20 | { 21 | ref var board = ref _world.NewEntity().Get(); 22 | board.Size = _size; 23 | board.InitLookup(); 24 | 25 | for (int x = 0; x < _size.X; x++) 26 | for (int y = 0; y < _size.Y; y++) 27 | _world.CreateRandomPieceAt(x, y, _random); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/BoardInitSystem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 38e1647c63082d24186c74143162b30d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/BoardResetGroupSystem.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | sealed class BoardResetGroupSystem : IEcsRunSystem 6 | { 7 | private readonly EcsFilter _groups = default; 8 | private readonly EcsFilter _inGroups = default; 9 | 10 | private readonly EcsFilter _moved = default; 11 | private readonly EcsFilter _new = default; 12 | 13 | void IEcsRunSystem.Run() 14 | { 15 | if (_new.IsEmpty() && _moved.IsEmpty()) 16 | return; 17 | 18 | foreach (var i in _groups) 19 | _groups.GetEntity(i).Destroy(); 20 | 21 | foreach (var i in _inGroups) 22 | _inGroups.GetEntity(i).Del(); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/BoardResetGroupSystem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3f617e71846fd0a44804b715e39c8043 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/BoardShuffleSystem.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | using System; 3 | 4 | namespace MatchTwo.Ecs 5 | { 6 | sealed class BoardShuffleSystem : IEcsRunSystem 7 | { 8 | private readonly EcsFilter _boards = default; 9 | private readonly EcsFilter.Exclude _pieces = default; 10 | private readonly EcsFilter _matches = default; 11 | 12 | private readonly Random _random = new Random(); 13 | 14 | void IEcsRunSystem.Run() 15 | { 16 | if (!_matches.IsEmpty()) 17 | return; 18 | 19 | ref var board = ref _boards.Get1(0); 20 | board.UpdateLookup(_pieces); 21 | 22 | while (_pieces.GetEntitiesCount() >= 2) 23 | { 24 | var first = _pieces.GetEntity(_random.Next(0, _pieces.GetEntitiesCount())); 25 | var second = _pieces.GetEntity(_random.Next(0, _pieces.GetEntitiesCount())); 26 | 27 | ref var firstPos = ref first.Get().Value; 28 | ref var secondPos = ref second.Get().Value; 29 | 30 | (firstPos, secondPos) = (secondPos, firstPos); 31 | 32 | first.Get(); 33 | first.Get(); 34 | 35 | second.Get(); 36 | second.Get(); 37 | } 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/BoardShuffleSystem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 42d6d3e3a978496428569a091dd96303 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/BoardSystemsDisableIfAnimatingSystem.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | sealed class BoardSystemsDisableIfAnimatingSystem : IEcsPreInitSystem, IEcsRunSystem 6 | { 7 | private readonly EcsFilter _animating = default; 8 | 9 | private readonly EcsSystems _rootSystems; 10 | private readonly string _boardSystemsName; 11 | 12 | private int _boardSystemsIndex; 13 | 14 | public BoardSystemsDisableIfAnimatingSystem(EcsSystems rootSystems, string boardSystemsName) 15 | { 16 | _rootSystems = rootSystems; 17 | _boardSystemsName = boardSystemsName; 18 | } 19 | 20 | void IEcsPreInitSystem.PreInit() 21 | { 22 | _boardSystemsIndex = _rootSystems.GetNamedRunSystem(_boardSystemsName); 23 | } 24 | 25 | void IEcsRunSystem.Run() 26 | { 27 | _rootSystems.SetRunSystemState(_boardSystemsIndex, _animating.IsEmpty()); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/BoardSystemsDisableIfAnimatingSystem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9b2cd5f61fd5d2841854caab96610fb2 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/CameraFocusOnBoardSystem.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using Leopotam.Ecs; 3 | 4 | namespace MatchTwo.Ecs 5 | { 6 | sealed class CameraFocusOnBoardSystem : IEcsInitSystem 7 | { 8 | private readonly EcsFilter _boards = default; 9 | 10 | private readonly Camera _camera; 11 | 12 | public CameraFocusOnBoardSystem(Camera camera) 13 | { 14 | _camera = camera; 15 | } 16 | 17 | void IEcsInitSystem.Init() 18 | { 19 | var board = _boards.Get1(0); 20 | 21 | var position = _camera.transform.position; 22 | position.x = board.Size.X * .5f; 23 | position.y = board.Size.Y * .5f; 24 | _camera.transform.position = position; 25 | 26 | _camera.orthographicSize = Mathf.Max(board.Size.X, board.Size.Y); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/CameraFocusOnBoardSystem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 37763334ea1171048b355ba7e078211a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/DestroyEntitiesWithDestroyedSystem.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | sealed class DestroyEntitiesWithDestroyedSystem : IEcsRunSystem 6 | { 7 | private readonly EcsFilter _destroyed = default; 8 | 9 | void IEcsRunSystem.Run() 10 | { 11 | foreach (var i in _destroyed) 12 | _destroyed.GetEntity(i).Destroy(); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/DestroyEntitiesWithDestroyedSystem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4871ff64f79d91849bd38676224a2bdb 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/InputSystem.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | sealed class InputSystem : IEcsRunSystem 6 | { 7 | private readonly EcsWorld _world = default; 8 | private readonly IInputService _input = default; 9 | 10 | void IEcsRunSystem.Run() 11 | { 12 | if (_input.GetClickedCoordinate(out var coord)) 13 | { 14 | _world.NewEntity() 15 | .Replace(new Input { Coordinate = coord }); 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/InputSystem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 05131e55fe151c04c9415959e5524e6c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/PieceDestroySelectedSystem.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | sealed class PieceDestroySelectedSystem : IEcsRunSystem 6 | { 7 | private readonly EcsFilter _selected = default; 8 | private readonly EcsFilter _pieces = default; 9 | private readonly EcsFilter _groups = default; 10 | 11 | void IEcsRunSystem.Run() 12 | { 13 | foreach (var i in _selected) 14 | { 15 | var groupIndex = _selected.Get2(i).GroupIndex; 16 | if (!_groups.GetEntity(groupIndex).Has()) 17 | continue; 18 | DestroyPiecesOfGroup(groupIndex); 19 | } 20 | } 21 | 22 | private void DestroyPiecesOfGroup(int groupIndex) 23 | { 24 | foreach (var i in _pieces) 25 | { 26 | if (_pieces.Get1(i).GroupIndex != groupIndex) 27 | continue; 28 | var entity = _pieces.GetEntity(i); 29 | entity.Get(); 30 | } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/PieceDestroySelectedSystem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5ab8a96c6aa665a4bab6fb2aad5835f4 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/PieceSelectSystem.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | sealed class PieceSelectSystem : IEcsRunSystem 6 | { 7 | private readonly EcsFilter _boards = default; 8 | private readonly EcsFilter _inputs = default; 9 | private readonly EcsFilter _pieces = default; 10 | 11 | void IEcsRunSystem.Run() 12 | { 13 | ref var board = ref _boards.Get1(0); 14 | board.UpdateLookup(_pieces); 15 | 16 | foreach (var i in _inputs) 17 | { 18 | var coordinate = _inputs.Get1(i).Coordinate; 19 | if (!board.PositionInBounds(coordinate) || !board.HasPieceAt(coordinate)) 20 | continue; 21 | var filterIndex = board.GetFilterIndex(coordinate); 22 | _pieces.GetEntity(filterIndex).Get(); 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/PieceSelectSystem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3da714085a5407644942f4e09f5aa91c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/PieceViewCreateSystem.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | sealed class PieceViewCreateSystem : IEcsRunSystem 6 | { 7 | private readonly IPieceViewService _viewService = default; 8 | 9 | private readonly EcsFilter _boards = default; 10 | private readonly EcsFilter.Exclude _pieces = default; 11 | 12 | 13 | 14 | void IEcsRunSystem.Run() 15 | { 16 | if (_pieces.IsEmpty()) 17 | return; 18 | 19 | var board = _boards.Get1(0); 20 | 21 | var offsets = new int[board.Size.X]; 22 | 23 | foreach (var i in _pieces) 24 | offsets[_pieces.Get2(i).Value.X]++; 25 | 26 | foreach (var i in _pieces) 27 | { 28 | var value = _pieces.Get1(i).Value; 29 | var position = _pieces.Get2(i).Value; 30 | 31 | var view = _viewService.CreatePieceView(value, position.X, position.Y + offsets[position.X]); 32 | view.UpdatePosition(position.X, position.Y); 33 | 34 | _pieces.GetEntity(i).Get().Value = view; 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/PieceViewCreateSystem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a88d68202f18a454ca99ec54b55506e9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/PieceViewDestroySystem.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | sealed class PieceViewDestroySystem : IEcsRunSystem 6 | { 7 | private readonly EcsFilter _pieces = default; 8 | 9 | void IEcsRunSystem.Run() 10 | { 11 | foreach (var i in _pieces) 12 | { 13 | _pieces.Get2(i).Value.Release(); 14 | _pieces.GetEntity(i).Del(); 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/PieceViewDestroySystem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 769c3ae1b2b5ec7468254ce9f4778966 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/PieceViewUpdateAnimatingSystem.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | sealed class PieceViewUpdateAnimatingSystem : IEcsRunSystem 6 | { 7 | private readonly EcsFilter.Exclude _pieces = default; 8 | 9 | void IEcsRunSystem.Run() 10 | { 11 | foreach (var i in _pieces) 12 | { 13 | var view = _pieces.Get1(i).Value; 14 | var entity = _pieces.GetEntity(i); 15 | if (view.IsAnimating) 16 | entity.Get(); 17 | else 18 | entity.Del(); 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/PieceViewUpdateAnimatingSystem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: df2f7094cd7113e46889e5412de9e2b1 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/PieceViewUpdatePositionSystem.cs: -------------------------------------------------------------------------------- 1 | using Leopotam.Ecs; 2 | 3 | namespace MatchTwo.Ecs 4 | { 5 | sealed class PieceViewUpdatePositionSystem : IEcsRunSystem 6 | { 7 | private readonly EcsFilter _pieces = default; 8 | private readonly EcsFilter _pieces2 = default; 9 | 10 | 11 | void IEcsRunSystem.Run() 12 | { 13 | foreach (var i in _pieces) 14 | { 15 | var view = _pieces.Get1(i).Value; 16 | var position = _pieces.Get2(i).Value; 17 | 18 | view.UpdatePosition(position.X, position.Y); 19 | } 20 | 21 | foreach (var i in _pieces2) 22 | { 23 | var view = _pieces2.Get1(i).Value; 24 | var entity = _pieces2.GetEntity(i); 25 | var group = entity.Has() ? entity.Get().GroupIndex : -1; 26 | 27 | view.UpdateGroup(group); 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/Systems/PieceViewUpdatePositionSystem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: db696c1d930429c48afc917ab7351c7f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/UnityComponents.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f5c9e0fec9aa97749a121c1fd6ecdec3 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/UnityComponents/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cadfoot/unity-ecs-match-two/4fae2d840f784b53694ad52f6783954d47382f1a/Assets/_Client/Scripts/UnityComponents/.gitkeep -------------------------------------------------------------------------------- /Assets/_Client/Scripts/UnityComponents/InputService.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using Leopotam.Ecs.Types; 3 | 4 | namespace MatchTwo 5 | { 6 | public sealed class InputService : MonoBehaviour, IInputService 7 | { 8 | [SerializeField] private Camera _camera; 9 | 10 | bool IInputService.GetClickedCoordinate(out Int2 coord) 11 | { 12 | coord = new Int2(); 13 | if (!Input.GetMouseButtonUp(0)) 14 | return false; 15 | var worldPosition = _camera.ScreenToWorldPoint(Input.mousePosition); 16 | coord.Set( 17 | Mathf.FloorToInt(worldPosition.x), 18 | Mathf.FloorToInt(worldPosition.y) 19 | ); 20 | return true; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/UnityComponents/InputService.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 31cd0a169d832774181c421ed633c06d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/UnityComponents/PieceView.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using DG.Tweening; 3 | 4 | namespace MatchTwo 5 | { 6 | sealed class PieceView : MonoBehaviour, IPieceView 7 | { 8 | public SpriteRenderer SpriteRenderer; 9 | private int _group = -1; 10 | 11 | public bool IsAnimating => DOTween.IsTweening(transform); 12 | 13 | public void UpdateGroup(int group) 14 | { 15 | _group = group; 16 | } 17 | 18 | public void UpdateValue(int value) 19 | { 20 | } 21 | 22 | public void UpdatePosition(int x, int y) 23 | { 24 | DOTween.Kill(transform); 25 | transform.DOLocalMove(new Vector2(x, y), 5f) 26 | .SetSpeedBased(true) 27 | .SetEase(Ease.OutBounce); 28 | } 29 | 30 | public void Release() 31 | { 32 | SpriteRenderer.DOFade(0f, .3f); 33 | SpriteRenderer.transform.DOScale(Vector3.one * 1.5f, .3f) 34 | .OnComplete(() => Destroy(gameObject)); 35 | } 36 | 37 | private void OnDrawGizmos() 38 | { 39 | UnityEditor.Handles.color = Color.black; 40 | UnityEditor.Handles.Label(transform.position + Vector3.up * .5f, _group.ToString()); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/UnityComponents/PieceView.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d34144802fe7500438a87ef6b370c85d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/UnityComponents/PieceViewService.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace MatchTwo 4 | { 5 | class PieceViewService : MonoBehaviour, IPieceViewService 6 | { 7 | [SerializeField] private Transform _piecesRoot; 8 | 9 | [SerializeField] private PieceView _pieceViewPrefab; 10 | [SerializeField] private Sprite[] _sprites; 11 | 12 | public IPieceView CreatePieceView(int value, int x, int y) 13 | { 14 | var position = new Vector2(x, y); 15 | var rotation = Quaternion.identity; 16 | 17 | var pieceView = Instantiate(_pieceViewPrefab, position, rotation, _piecesRoot); 18 | pieceView.SpriteRenderer.sprite = _sprites[value]; 19 | 20 | return pieceView; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Assets/_Client/Scripts/UnityComponents/PieceViewService.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a6286b89de6777744a59ea3972a748ea 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Client/Sprites.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 93f87f569824cdd479c4032eeb17d207 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Client/Sprites/Candies.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4dbee590cfae93a4a91870c603c11815 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Client/Sprites/Candies/blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cadfoot/unity-ecs-match-two/4fae2d840f784b53694ad52f6783954d47382f1a/Assets/_Client/Sprites/Candies/blue.png -------------------------------------------------------------------------------- /Assets/_Client/Sprites/Candies/blue.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9a35077a7b392a040a6b5017e99e9411 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 0 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: 1 32 | maxTextureSize: 2048 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: -1 36 | aniso: -1 37 | mipBias: -100 38 | wrapU: 1 39 | wrapV: 1 40 | wrapW: 1 41 | nPOTScale: 0 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 1 45 | spriteExtrude: 1 46 | spriteMeshType: 0 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 151 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 0 52 | alphaUsage: 1 53 | alphaIsTransparency: 1 54 | spriteTessellationDetail: -1 55 | textureType: 8 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | flipbookRows: 1 59 | flipbookColumns: 1 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | ignorePngGamma: 0 64 | applyGammaDecoding: 0 65 | platformSettings: 66 | - serializedVersion: 3 67 | buildTarget: DefaultTexturePlatform 68 | maxTextureSize: 128 69 | resizeAlgorithm: 0 70 | textureFormat: -1 71 | textureCompression: 1 72 | compressionQuality: 50 73 | crunchedCompression: 0 74 | allowsAlphaSplitting: 0 75 | overridden: 0 76 | androidETC2FallbackOverride: 0 77 | forceMaximumCompressionQuality_BC6H_BC7: 0 78 | - serializedVersion: 3 79 | buildTarget: Standalone 80 | maxTextureSize: 128 81 | resizeAlgorithm: 0 82 | textureFormat: -1 83 | textureCompression: 1 84 | compressionQuality: 50 85 | crunchedCompression: 0 86 | allowsAlphaSplitting: 0 87 | overridden: 0 88 | androidETC2FallbackOverride: 0 89 | forceMaximumCompressionQuality_BC6H_BC7: 0 90 | spriteSheet: 91 | serializedVersion: 2 92 | sprites: [] 93 | outline: [] 94 | physicsShape: [] 95 | bones: [] 96 | spriteID: 5e97eb03825dee720800000000000000 97 | internalID: 0 98 | vertices: [] 99 | indices: 100 | edges: [] 101 | weights: [] 102 | secondaryTextures: [] 103 | spritePackingTag: 104 | pSDRemoveMatte: 0 105 | pSDShowRemoveMatteOption: 0 106 | userData: 107 | assetBundleName: 108 | assetBundleVariant: 109 | -------------------------------------------------------------------------------- /Assets/_Client/Sprites/Candies/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cadfoot/unity-ecs-match-two/4fae2d840f784b53694ad52f6783954d47382f1a/Assets/_Client/Sprites/Candies/green.png -------------------------------------------------------------------------------- /Assets/_Client/Sprites/Candies/green.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 92d29f5c3ff0f2044bde78f54704b6dd 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 0 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: 1 32 | maxTextureSize: 2048 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: -1 36 | aniso: -1 37 | mipBias: -100 38 | wrapU: 1 39 | wrapV: 1 40 | wrapW: 1 41 | nPOTScale: 0 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 1 45 | spriteExtrude: 1 46 | spriteMeshType: 0 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 151 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 0 52 | alphaUsage: 1 53 | alphaIsTransparency: 1 54 | spriteTessellationDetail: -1 55 | textureType: 8 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | flipbookRows: 1 59 | flipbookColumns: 1 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | ignorePngGamma: 0 64 | applyGammaDecoding: 0 65 | platformSettings: 66 | - serializedVersion: 3 67 | buildTarget: DefaultTexturePlatform 68 | maxTextureSize: 128 69 | resizeAlgorithm: 0 70 | textureFormat: -1 71 | textureCompression: 1 72 | compressionQuality: 50 73 | crunchedCompression: 0 74 | allowsAlphaSplitting: 0 75 | overridden: 0 76 | androidETC2FallbackOverride: 0 77 | forceMaximumCompressionQuality_BC6H_BC7: 0 78 | - serializedVersion: 3 79 | buildTarget: Standalone 80 | maxTextureSize: 128 81 | resizeAlgorithm: 0 82 | textureFormat: -1 83 | textureCompression: 1 84 | compressionQuality: 50 85 | crunchedCompression: 0 86 | allowsAlphaSplitting: 0 87 | overridden: 0 88 | androidETC2FallbackOverride: 0 89 | forceMaximumCompressionQuality_BC6H_BC7: 0 90 | spriteSheet: 91 | serializedVersion: 2 92 | sprites: [] 93 | outline: [] 94 | physicsShape: [] 95 | bones: [] 96 | spriteID: 5e97eb03825dee720800000000000000 97 | internalID: 0 98 | vertices: [] 99 | indices: 100 | edges: [] 101 | weights: [] 102 | secondaryTextures: [] 103 | spritePackingTag: 104 | pSDRemoveMatte: 0 105 | pSDShowRemoveMatteOption: 0 106 | userData: 107 | assetBundleName: 108 | assetBundleVariant: 109 | -------------------------------------------------------------------------------- /Assets/_Client/Sprites/Candies/pink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cadfoot/unity-ecs-match-two/4fae2d840f784b53694ad52f6783954d47382f1a/Assets/_Client/Sprites/Candies/pink.png -------------------------------------------------------------------------------- /Assets/_Client/Sprites/Candies/pink.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9fae1fb05f6bcad4c81915462b7bf699 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 0 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: 1 32 | maxTextureSize: 2048 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: -1 36 | aniso: -1 37 | mipBias: -100 38 | wrapU: 1 39 | wrapV: 1 40 | wrapW: 1 41 | nPOTScale: 0 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 1 45 | spriteExtrude: 1 46 | spriteMeshType: 0 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 151 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 0 52 | alphaUsage: 1 53 | alphaIsTransparency: 1 54 | spriteTessellationDetail: -1 55 | textureType: 8 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | flipbookRows: 1 59 | flipbookColumns: 1 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | ignorePngGamma: 0 64 | applyGammaDecoding: 0 65 | platformSettings: 66 | - serializedVersion: 3 67 | buildTarget: DefaultTexturePlatform 68 | maxTextureSize: 128 69 | resizeAlgorithm: 0 70 | textureFormat: -1 71 | textureCompression: 1 72 | compressionQuality: 50 73 | crunchedCompression: 0 74 | allowsAlphaSplitting: 0 75 | overridden: 0 76 | androidETC2FallbackOverride: 0 77 | forceMaximumCompressionQuality_BC6H_BC7: 0 78 | - serializedVersion: 3 79 | buildTarget: Standalone 80 | maxTextureSize: 128 81 | resizeAlgorithm: 0 82 | textureFormat: -1 83 | textureCompression: 1 84 | compressionQuality: 50 85 | crunchedCompression: 0 86 | allowsAlphaSplitting: 0 87 | overridden: 0 88 | androidETC2FallbackOverride: 0 89 | forceMaximumCompressionQuality_BC6H_BC7: 0 90 | spriteSheet: 91 | serializedVersion: 2 92 | sprites: [] 93 | outline: [] 94 | physicsShape: [] 95 | bones: [] 96 | spriteID: 5e97eb03825dee720800000000000000 97 | internalID: 0 98 | vertices: [] 99 | indices: 100 | edges: [] 101 | weights: [] 102 | secondaryTextures: [] 103 | spritePackingTag: 104 | pSDRemoveMatte: 0 105 | pSDShowRemoveMatteOption: 0 106 | userData: 107 | assetBundleName: 108 | assetBundleVariant: 109 | -------------------------------------------------------------------------------- /Assets/_Client/Sprites/Candies/red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cadfoot/unity-ecs-match-two/4fae2d840f784b53694ad52f6783954d47382f1a/Assets/_Client/Sprites/Candies/red.png -------------------------------------------------------------------------------- /Assets/_Client/Sprites/Candies/red.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 87b6145d6135cfd4faf83e26e8f8760f 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 0 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: 1 32 | maxTextureSize: 2048 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: -1 36 | aniso: -1 37 | mipBias: -100 38 | wrapU: 1 39 | wrapV: 1 40 | wrapW: 1 41 | nPOTScale: 0 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 1 45 | spriteExtrude: 1 46 | spriteMeshType: 0 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 151 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 0 52 | alphaUsage: 1 53 | alphaIsTransparency: 1 54 | spriteTessellationDetail: -1 55 | textureType: 8 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | flipbookRows: 1 59 | flipbookColumns: 1 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | ignorePngGamma: 0 64 | applyGammaDecoding: 0 65 | platformSettings: 66 | - serializedVersion: 3 67 | buildTarget: DefaultTexturePlatform 68 | maxTextureSize: 128 69 | resizeAlgorithm: 0 70 | textureFormat: -1 71 | textureCompression: 1 72 | compressionQuality: 50 73 | crunchedCompression: 0 74 | allowsAlphaSplitting: 0 75 | overridden: 0 76 | androidETC2FallbackOverride: 0 77 | forceMaximumCompressionQuality_BC6H_BC7: 0 78 | - serializedVersion: 3 79 | buildTarget: Standalone 80 | maxTextureSize: 128 81 | resizeAlgorithm: 0 82 | textureFormat: -1 83 | textureCompression: 1 84 | compressionQuality: 50 85 | crunchedCompression: 0 86 | allowsAlphaSplitting: 0 87 | overridden: 0 88 | androidETC2FallbackOverride: 0 89 | forceMaximumCompressionQuality_BC6H_BC7: 0 90 | spriteSheet: 91 | serializedVersion: 2 92 | sprites: [] 93 | outline: [] 94 | physicsShape: [] 95 | bones: [] 96 | spriteID: 5e97eb03825dee720800000000000000 97 | internalID: 0 98 | vertices: [] 99 | indices: 100 | edges: [] 101 | weights: [] 102 | secondaryTextures: [] 103 | spritePackingTag: 104 | pSDRemoveMatte: 0 105 | pSDShowRemoveMatteOption: 0 106 | userData: 107 | assetBundleName: 108 | assetBundleVariant: 109 | -------------------------------------------------------------------------------- /Assets/_Client/Sprites/Piece.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cadfoot/unity-ecs-match-two/4fae2d840f784b53694ad52f6783954d47382f1a/Assets/_Client/Sprites/Piece.png -------------------------------------------------------------------------------- /Assets/_Client/Sprites/Piece.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 03e47ac48b54cea4589a2e24339d1f57 3 | TextureImporter: 4 | internalIDToNameTable: 5 | - first: 6 | 213: -2413806693520163455 7 | second: Circle 8 | externalObjects: {} 9 | serializedVersion: 11 10 | mipmaps: 11 | mipMapMode: 0 12 | enableMipMap: 0 13 | sRGBTexture: 1 14 | linearTexture: 0 15 | fadeOut: 0 16 | borderMipMap: 0 17 | mipMapsPreserveCoverage: 0 18 | alphaTestReferenceValue: 0.5 19 | mipMapFadeDistanceStart: 1 20 | mipMapFadeDistanceEnd: 3 21 | bumpmap: 22 | convertToNormalMap: 0 23 | externalNormalMap: 0 24 | heightScale: 0.25 25 | normalMapFilter: 0 26 | isReadable: 0 27 | streamingMipmaps: 0 28 | streamingMipmapsPriority: 0 29 | vTOnly: 0 30 | grayScaleToAlpha: 0 31 | generateCubemap: 6 32 | cubemapConvolution: 0 33 | seamlessCubemap: 0 34 | textureFormat: 1 35 | maxTextureSize: 2048 36 | textureSettings: 37 | serializedVersion: 2 38 | filterMode: 1 39 | aniso: -1 40 | mipBias: -100 41 | wrapU: 1 42 | wrapV: 1 43 | wrapW: 1 44 | nPOTScale: 0 45 | lightmap: 0 46 | compressionQuality: 50 47 | spriteMode: 1 48 | spriteExtrude: 1 49 | spriteMeshType: 0 50 | alignment: 0 51 | spritePivot: {x: 0.5, y: 0.5} 52 | spritePixelsToUnits: 256 53 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 54 | spriteGenerateFallbackPhysicsShape: 0 55 | alphaUsage: 1 56 | alphaIsTransparency: 1 57 | spriteTessellationDetail: 0 58 | textureType: 8 59 | textureShape: 1 60 | singleChannelComponent: 0 61 | flipbookRows: 1 62 | flipbookColumns: 1 63 | maxTextureSizeSet: 0 64 | compressionQualitySet: 0 65 | textureFormatSet: 0 66 | ignorePngGamma: 0 67 | applyGammaDecoding: 0 68 | platformSettings: 69 | - serializedVersion: 3 70 | buildTarget: DefaultTexturePlatform 71 | maxTextureSize: 2048 72 | resizeAlgorithm: 0 73 | textureFormat: -1 74 | textureCompression: 1 75 | compressionQuality: 50 76 | crunchedCompression: 0 77 | allowsAlphaSplitting: 0 78 | overridden: 0 79 | androidETC2FallbackOverride: 0 80 | forceMaximumCompressionQuality_BC6H_BC7: 0 81 | - serializedVersion: 3 82 | buildTarget: Standalone 83 | maxTextureSize: 2048 84 | resizeAlgorithm: 0 85 | textureFormat: -1 86 | textureCompression: 1 87 | compressionQuality: 50 88 | crunchedCompression: 0 89 | allowsAlphaSplitting: 0 90 | overridden: 0 91 | androidETC2FallbackOverride: 0 92 | forceMaximumCompressionQuality_BC6H_BC7: 0 93 | - serializedVersion: 3 94 | buildTarget: Android 95 | maxTextureSize: 2048 96 | resizeAlgorithm: 0 97 | textureFormat: -1 98 | textureCompression: 1 99 | compressionQuality: 50 100 | crunchedCompression: 0 101 | allowsAlphaSplitting: 0 102 | overridden: 0 103 | androidETC2FallbackOverride: 0 104 | forceMaximumCompressionQuality_BC6H_BC7: 0 105 | - serializedVersion: 3 106 | buildTarget: iPhone 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | forceMaximumCompressionQuality_BC6H_BC7: 0 117 | spriteSheet: 118 | serializedVersion: 2 119 | sprites: 120 | - serializedVersion: 2 121 | name: Circle 122 | rect: 123 | serializedVersion: 2 124 | x: 0 125 | y: 0 126 | width: 256 127 | height: 256 128 | alignment: 0 129 | pivot: {x: 0.5, y: 0.5} 130 | border: {x: 0, y: 0, z: 0, w: 0} 131 | outline: 132 | - - {x: -33, y: 128} 133 | - {x: -95, y: 95} 134 | - {x: -128, y: 33} 135 | - {x: -128, y: -33} 136 | - {x: -95, y: -95} 137 | - {x: -33, y: -128} 138 | - {x: 33, y: -128} 139 | - {x: 95, y: -95} 140 | - {x: 128, y: -33} 141 | - {x: 128, y: 33} 142 | - {x: 95, y: 95} 143 | - {x: 33, y: 128} 144 | physicsShape: [] 145 | tessellationDetail: 0 146 | bones: [] 147 | spriteID: 18d3544e99f608ed0800000000000000 148 | internalID: -2413806693520163455 149 | vertices: [] 150 | indices: 151 | edges: [] 152 | weights: [] 153 | outline: 154 | - - {x: -33, y: 128} 155 | - {x: -95, y: 95} 156 | - {x: -128, y: 33} 157 | - {x: -128, y: -33} 158 | - {x: -95, y: -95} 159 | - {x: -33, y: -128} 160 | - {x: 33, y: -128} 161 | - {x: 95, y: -95} 162 | - {x: 128, y: -33} 163 | - {x: 128, y: 33} 164 | - {x: 95, y: 95} 165 | - {x: 33, y: 128} 166 | physicsShape: [] 167 | bones: [] 168 | spriteID: 5e97eb03825dee720800000000000000 169 | internalID: 0 170 | vertices: [] 171 | indices: 172 | edges: [] 173 | weights: [] 174 | secondaryTextures: [] 175 | spritePackingTag: 176 | pSDRemoveMatte: 0 177 | pSDShowRemoveMatteOption: 0 178 | userData: 179 | assetBundleName: 180 | assetBundleVariant: 181 | -------------------------------------------------------------------------------- /Assets/_Client/Sprites/UnitSquare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cadfoot/unity-ecs-match-two/4fae2d840f784b53694ad52f6783954d47382f1a/Assets/_Client/Sprites/UnitSquare.png -------------------------------------------------------------------------------- /Assets/_Client/Sprites/UnitSquare.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 60f22d1b6eb9be94184c4cde8b7492f6 3 | TextureImporter: 4 | internalIDToNameTable: 5 | - first: 6 | 213: 7482667652216324306 7 | second: Square 8 | externalObjects: {} 9 | serializedVersion: 11 10 | mipmaps: 11 | mipMapMode: 0 12 | enableMipMap: 0 13 | sRGBTexture: 0 14 | linearTexture: 0 15 | fadeOut: 0 16 | borderMipMap: 0 17 | mipMapsPreserveCoverage: 0 18 | alphaTestReferenceValue: 0.5 19 | mipMapFadeDistanceStart: 1 20 | mipMapFadeDistanceEnd: 3 21 | bumpmap: 22 | convertToNormalMap: 0 23 | externalNormalMap: 0 24 | heightScale: 0.25 25 | normalMapFilter: 0 26 | isReadable: 0 27 | streamingMipmaps: 0 28 | streamingMipmapsPriority: 0 29 | vTOnly: 0 30 | grayScaleToAlpha: 0 31 | generateCubemap: 6 32 | cubemapConvolution: 0 33 | seamlessCubemap: 0 34 | textureFormat: 1 35 | maxTextureSize: 2048 36 | textureSettings: 37 | serializedVersion: 2 38 | filterMode: 1 39 | aniso: -1 40 | mipBias: -100 41 | wrapU: 1 42 | wrapV: 1 43 | wrapW: 1 44 | nPOTScale: 0 45 | lightmap: 0 46 | compressionQuality: 50 47 | spriteMode: 2 48 | spriteExtrude: 1 49 | spriteMeshType: 0 50 | alignment: 0 51 | spritePivot: {x: 0.5, y: 0.5} 52 | spritePixelsToUnits: 256 53 | spriteBorder: {x: 4, y: 4, z: 4, w: 4} 54 | spriteGenerateFallbackPhysicsShape: 0 55 | alphaUsage: 1 56 | alphaIsTransparency: 0 57 | spriteTessellationDetail: 0 58 | textureType: 8 59 | textureShape: 1 60 | singleChannelComponent: 0 61 | flipbookRows: 1 62 | flipbookColumns: 1 63 | maxTextureSizeSet: 0 64 | compressionQualitySet: 0 65 | textureFormatSet: 0 66 | ignorePngGamma: 0 67 | applyGammaDecoding: 0 68 | platformSettings: 69 | - serializedVersion: 3 70 | buildTarget: DefaultTexturePlatform 71 | maxTextureSize: 2048 72 | resizeAlgorithm: 0 73 | textureFormat: -1 74 | textureCompression: 1 75 | compressionQuality: 50 76 | crunchedCompression: 0 77 | allowsAlphaSplitting: 0 78 | overridden: 0 79 | androidETC2FallbackOverride: 0 80 | forceMaximumCompressionQuality_BC6H_BC7: 0 81 | - serializedVersion: 3 82 | buildTarget: Standalone 83 | maxTextureSize: 2048 84 | resizeAlgorithm: 0 85 | textureFormat: -1 86 | textureCompression: 1 87 | compressionQuality: 50 88 | crunchedCompression: 0 89 | allowsAlphaSplitting: 0 90 | overridden: 0 91 | androidETC2FallbackOverride: 0 92 | forceMaximumCompressionQuality_BC6H_BC7: 0 93 | - serializedVersion: 3 94 | buildTarget: iPhone 95 | maxTextureSize: 2048 96 | resizeAlgorithm: 0 97 | textureFormat: -1 98 | textureCompression: 1 99 | compressionQuality: 50 100 | crunchedCompression: 0 101 | allowsAlphaSplitting: 0 102 | overridden: 0 103 | androidETC2FallbackOverride: 0 104 | forceMaximumCompressionQuality_BC6H_BC7: 0 105 | - serializedVersion: 3 106 | buildTarget: Android 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | forceMaximumCompressionQuality_BC6H_BC7: 0 117 | spriteSheet: 118 | serializedVersion: 2 119 | sprites: 120 | - serializedVersion: 2 121 | name: Square 122 | rect: 123 | serializedVersion: 2 124 | x: 0 125 | y: 0 126 | width: 256 127 | height: 256 128 | alignment: 0 129 | pivot: {x: 0.5, y: 0.5} 130 | border: {x: 0, y: 0, z: 0, w: 0} 131 | outline: [] 132 | physicsShape: [] 133 | tessellationDetail: 0 134 | bones: [] 135 | spriteID: 2d009a6b596c7d760800000000000000 136 | internalID: 7482667652216324306 137 | vertices: [] 138 | indices: 139 | edges: [] 140 | weights: [] 141 | outline: [] 142 | physicsShape: 143 | - - {x: -128, y: 128} 144 | - {x: -128, y: -128} 145 | - {x: 128, y: -128} 146 | - {x: 128, y: 128} 147 | bones: [] 148 | spriteID: 5e97eb03825dee720800000000000000 149 | internalID: 0 150 | vertices: [] 151 | indices: 152 | edges: [] 153 | weights: [] 154 | secondaryTextures: [] 155 | spritePackingTag: 156 | pSDRemoveMatte: 0 157 | pSDShowRemoveMatteOption: 0 158 | userData: 159 | assetBundleName: 160 | assetBundleVariant: 161 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.leopotam.ecs": "https://github.com/Leopotam/ecs.git", 4 | "com.leopotam.ecs-types": "https://github.com/Leopotam/ecs-types.git", 5 | "com.leopotam.ecs-unityintegration": "https://github.com/Leopotam/ecs-unityintegration.git", 6 | "com.unity.2d.sprite": "1.0.0", 7 | "com.unity.2d.tilemap": "1.0.0", 8 | "com.unity.ide.rider": "2.0.7", 9 | "com.unity.ide.visualstudio": "2.0.5", 10 | "com.unity.ide.vscode": "1.2.3", 11 | "com.unity.test-framework": "1.1.19", 12 | "com.unity.textmeshpro": "2.1.1", 13 | "com.unity.timeline": "1.4.4", 14 | "com.unity.ugui": "1.0.0", 15 | "com.unity.modules.ai": "1.0.0", 16 | "com.unity.modules.androidjni": "1.0.0", 17 | "com.unity.modules.animation": "1.0.0", 18 | "com.unity.modules.assetbundle": "1.0.0", 19 | "com.unity.modules.audio": "1.0.0", 20 | "com.unity.modules.cloth": "1.0.0", 21 | "com.unity.modules.director": "1.0.0", 22 | "com.unity.modules.imageconversion": "1.0.0", 23 | "com.unity.modules.imgui": "1.0.0", 24 | "com.unity.modules.jsonserialize": "1.0.0", 25 | "com.unity.modules.particlesystem": "1.0.0", 26 | "com.unity.modules.physics": "1.0.0", 27 | "com.unity.modules.physics2d": "1.0.0", 28 | "com.unity.modules.screencapture": "1.0.0", 29 | "com.unity.modules.terrain": "1.0.0", 30 | "com.unity.modules.terrainphysics": "1.0.0", 31 | "com.unity.modules.tilemap": "1.0.0", 32 | "com.unity.modules.ui": "1.0.0", 33 | "com.unity.modules.uielements": "1.0.0", 34 | "com.unity.modules.umbra": "1.0.0", 35 | "com.unity.modules.unityanalytics": "1.0.0", 36 | "com.unity.modules.unitywebrequest": "1.0.0", 37 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 38 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 39 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 40 | "com.unity.modules.unitywebrequestwww": "1.0.0", 41 | "com.unity.modules.vehicles": "1.0.0", 42 | "com.unity.modules.video": "1.0.0", 43 | "com.unity.modules.vr": "1.0.0", 44 | "com.unity.modules.wind": "1.0.0", 45 | "com.unity.modules.xr": "1.0.0" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Packages/packages-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.leopotam.ecs": { 4 | "version": "https://github.com/Leopotam/ecs.git", 5 | "depth": 0, 6 | "source": "git", 7 | "dependencies": {}, 8 | "hash": "acd5873e57796ab5bfbe6c11c06fb044b912c6f9" 9 | }, 10 | "com.leopotam.ecs-types": { 11 | "version": "https://github.com/Leopotam/ecs-types.git", 12 | "depth": 0, 13 | "source": "git", 14 | "dependencies": {}, 15 | "hash": "54470e4fec9cc207b862415370fcd360d5651035" 16 | }, 17 | "com.leopotam.ecs-unityintegration": { 18 | "version": "https://github.com/Leopotam/ecs-unityintegration.git", 19 | "depth": 0, 20 | "source": "git", 21 | "dependencies": {}, 22 | "hash": "127d6a8f02ec987ac724a7fc671b1d5d00b0ea56" 23 | }, 24 | "com.unity.2d.sprite": { 25 | "version": "1.0.0", 26 | "depth": 0, 27 | "source": "builtin", 28 | "dependencies": {} 29 | }, 30 | "com.unity.2d.tilemap": { 31 | "version": "1.0.0", 32 | "depth": 0, 33 | "source": "builtin", 34 | "dependencies": {} 35 | }, 36 | "com.unity.ext.nunit": { 37 | "version": "1.0.5", 38 | "depth": 1, 39 | "source": "registry", 40 | "dependencies": {}, 41 | "url": "https://packages.unity.com" 42 | }, 43 | "com.unity.ide.rider": { 44 | "version": "2.0.7", 45 | "depth": 0, 46 | "source": "registry", 47 | "dependencies": { 48 | "com.unity.test-framework": "1.1.1" 49 | }, 50 | "url": "https://packages.unity.com" 51 | }, 52 | "com.unity.ide.visualstudio": { 53 | "version": "2.0.5", 54 | "depth": 0, 55 | "source": "registry", 56 | "dependencies": {}, 57 | "url": "https://packages.unity.com" 58 | }, 59 | "com.unity.ide.vscode": { 60 | "version": "1.2.3", 61 | "depth": 0, 62 | "source": "registry", 63 | "dependencies": {}, 64 | "url": "https://packages.unity.com" 65 | }, 66 | "com.unity.test-framework": { 67 | "version": "1.1.19", 68 | "depth": 0, 69 | "source": "registry", 70 | "dependencies": { 71 | "com.unity.ext.nunit": "1.0.5", 72 | "com.unity.modules.imgui": "1.0.0", 73 | "com.unity.modules.jsonserialize": "1.0.0" 74 | }, 75 | "url": "https://packages.unity.com" 76 | }, 77 | "com.unity.textmeshpro": { 78 | "version": "2.1.1", 79 | "depth": 0, 80 | "source": "registry", 81 | "dependencies": { 82 | "com.unity.ugui": "1.0.0" 83 | }, 84 | "url": "https://packages.unity.com" 85 | }, 86 | "com.unity.timeline": { 87 | "version": "1.4.4", 88 | "depth": 0, 89 | "source": "registry", 90 | "dependencies": { 91 | "com.unity.modules.director": "1.0.0", 92 | "com.unity.modules.animation": "1.0.0", 93 | "com.unity.modules.audio": "1.0.0", 94 | "com.unity.modules.particlesystem": "1.0.0" 95 | }, 96 | "url": "https://packages.unity.com" 97 | }, 98 | "com.unity.ugui": { 99 | "version": "1.0.0", 100 | "depth": 0, 101 | "source": "builtin", 102 | "dependencies": { 103 | "com.unity.modules.ui": "1.0.0", 104 | "com.unity.modules.imgui": "1.0.0" 105 | } 106 | }, 107 | "com.unity.modules.ai": { 108 | "version": "1.0.0", 109 | "depth": 0, 110 | "source": "builtin", 111 | "dependencies": {} 112 | }, 113 | "com.unity.modules.androidjni": { 114 | "version": "1.0.0", 115 | "depth": 0, 116 | "source": "builtin", 117 | "dependencies": {} 118 | }, 119 | "com.unity.modules.animation": { 120 | "version": "1.0.0", 121 | "depth": 0, 122 | "source": "builtin", 123 | "dependencies": {} 124 | }, 125 | "com.unity.modules.assetbundle": { 126 | "version": "1.0.0", 127 | "depth": 0, 128 | "source": "builtin", 129 | "dependencies": {} 130 | }, 131 | "com.unity.modules.audio": { 132 | "version": "1.0.0", 133 | "depth": 0, 134 | "source": "builtin", 135 | "dependencies": {} 136 | }, 137 | "com.unity.modules.cloth": { 138 | "version": "1.0.0", 139 | "depth": 0, 140 | "source": "builtin", 141 | "dependencies": { 142 | "com.unity.modules.physics": "1.0.0" 143 | } 144 | }, 145 | "com.unity.modules.director": { 146 | "version": "1.0.0", 147 | "depth": 0, 148 | "source": "builtin", 149 | "dependencies": { 150 | "com.unity.modules.audio": "1.0.0", 151 | "com.unity.modules.animation": "1.0.0" 152 | } 153 | }, 154 | "com.unity.modules.imageconversion": { 155 | "version": "1.0.0", 156 | "depth": 0, 157 | "source": "builtin", 158 | "dependencies": {} 159 | }, 160 | "com.unity.modules.imgui": { 161 | "version": "1.0.0", 162 | "depth": 0, 163 | "source": "builtin", 164 | "dependencies": {} 165 | }, 166 | "com.unity.modules.jsonserialize": { 167 | "version": "1.0.0", 168 | "depth": 0, 169 | "source": "builtin", 170 | "dependencies": {} 171 | }, 172 | "com.unity.modules.particlesystem": { 173 | "version": "1.0.0", 174 | "depth": 0, 175 | "source": "builtin", 176 | "dependencies": {} 177 | }, 178 | "com.unity.modules.physics": { 179 | "version": "1.0.0", 180 | "depth": 0, 181 | "source": "builtin", 182 | "dependencies": {} 183 | }, 184 | "com.unity.modules.physics2d": { 185 | "version": "1.0.0", 186 | "depth": 0, 187 | "source": "builtin", 188 | "dependencies": {} 189 | }, 190 | "com.unity.modules.screencapture": { 191 | "version": "1.0.0", 192 | "depth": 0, 193 | "source": "builtin", 194 | "dependencies": { 195 | "com.unity.modules.imageconversion": "1.0.0" 196 | } 197 | }, 198 | "com.unity.modules.subsystems": { 199 | "version": "1.0.0", 200 | "depth": 1, 201 | "source": "builtin", 202 | "dependencies": { 203 | "com.unity.modules.jsonserialize": "1.0.0" 204 | } 205 | }, 206 | "com.unity.modules.terrain": { 207 | "version": "1.0.0", 208 | "depth": 0, 209 | "source": "builtin", 210 | "dependencies": {} 211 | }, 212 | "com.unity.modules.terrainphysics": { 213 | "version": "1.0.0", 214 | "depth": 0, 215 | "source": "builtin", 216 | "dependencies": { 217 | "com.unity.modules.physics": "1.0.0", 218 | "com.unity.modules.terrain": "1.0.0" 219 | } 220 | }, 221 | "com.unity.modules.tilemap": { 222 | "version": "1.0.0", 223 | "depth": 0, 224 | "source": "builtin", 225 | "dependencies": { 226 | "com.unity.modules.physics2d": "1.0.0" 227 | } 228 | }, 229 | "com.unity.modules.ui": { 230 | "version": "1.0.0", 231 | "depth": 0, 232 | "source": "builtin", 233 | "dependencies": {} 234 | }, 235 | "com.unity.modules.uielements": { 236 | "version": "1.0.0", 237 | "depth": 0, 238 | "source": "builtin", 239 | "dependencies": { 240 | "com.unity.modules.imgui": "1.0.0", 241 | "com.unity.modules.jsonserialize": "1.0.0" 242 | } 243 | }, 244 | "com.unity.modules.umbra": { 245 | "version": "1.0.0", 246 | "depth": 0, 247 | "source": "builtin", 248 | "dependencies": {} 249 | }, 250 | "com.unity.modules.unityanalytics": { 251 | "version": "1.0.0", 252 | "depth": 0, 253 | "source": "builtin", 254 | "dependencies": { 255 | "com.unity.modules.unitywebrequest": "1.0.0", 256 | "com.unity.modules.jsonserialize": "1.0.0" 257 | } 258 | }, 259 | "com.unity.modules.unitywebrequest": { 260 | "version": "1.0.0", 261 | "depth": 0, 262 | "source": "builtin", 263 | "dependencies": {} 264 | }, 265 | "com.unity.modules.unitywebrequestassetbundle": { 266 | "version": "1.0.0", 267 | "depth": 0, 268 | "source": "builtin", 269 | "dependencies": { 270 | "com.unity.modules.assetbundle": "1.0.0", 271 | "com.unity.modules.unitywebrequest": "1.0.0" 272 | } 273 | }, 274 | "com.unity.modules.unitywebrequestaudio": { 275 | "version": "1.0.0", 276 | "depth": 0, 277 | "source": "builtin", 278 | "dependencies": { 279 | "com.unity.modules.unitywebrequest": "1.0.0", 280 | "com.unity.modules.audio": "1.0.0" 281 | } 282 | }, 283 | "com.unity.modules.unitywebrequesttexture": { 284 | "version": "1.0.0", 285 | "depth": 0, 286 | "source": "builtin", 287 | "dependencies": { 288 | "com.unity.modules.unitywebrequest": "1.0.0", 289 | "com.unity.modules.imageconversion": "1.0.0" 290 | } 291 | }, 292 | "com.unity.modules.unitywebrequestwww": { 293 | "version": "1.0.0", 294 | "depth": 0, 295 | "source": "builtin", 296 | "dependencies": { 297 | "com.unity.modules.unitywebrequest": "1.0.0", 298 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 299 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 300 | "com.unity.modules.audio": "1.0.0", 301 | "com.unity.modules.assetbundle": "1.0.0", 302 | "com.unity.modules.imageconversion": "1.0.0" 303 | } 304 | }, 305 | "com.unity.modules.vehicles": { 306 | "version": "1.0.0", 307 | "depth": 0, 308 | "source": "builtin", 309 | "dependencies": { 310 | "com.unity.modules.physics": "1.0.0" 311 | } 312 | }, 313 | "com.unity.modules.video": { 314 | "version": "1.0.0", 315 | "depth": 0, 316 | "source": "builtin", 317 | "dependencies": { 318 | "com.unity.modules.audio": "1.0.0", 319 | "com.unity.modules.ui": "1.0.0", 320 | "com.unity.modules.unitywebrequest": "1.0.0" 321 | } 322 | }, 323 | "com.unity.modules.vr": { 324 | "version": "1.0.0", 325 | "depth": 0, 326 | "source": "builtin", 327 | "dependencies": { 328 | "com.unity.modules.jsonserialize": "1.0.0", 329 | "com.unity.modules.physics": "1.0.0", 330 | "com.unity.modules.xr": "1.0.0" 331 | } 332 | }, 333 | "com.unity.modules.wind": { 334 | "version": "1.0.0", 335 | "depth": 0, 336 | "source": "builtin", 337 | "dependencies": {} 338 | }, 339 | "com.unity.modules.xr": { 340 | "version": "1.0.0", 341 | "depth": 0, 342 | "source": "builtin", 343 | "dependencies": { 344 | "com.unity.modules.physics": "1.0.0", 345 | "com.unity.modules.jsonserialize": "1.0.0", 346 | "com.unity.modules.subsystems": "1.0.0" 347 | } 348 | } 349 | } 350 | } 351 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_SpatializerPlugin: 16 | m_AmbisonicDecoderPlugin: 17 | m_DisableAudio: 0 18 | m_VirtualizeEffects: 1 19 | m_RequestedDSPBufferSize: 0 20 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0.1 18 | m_ClothInterCollisionStiffness: 0.2 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ClothGravity: {x: 0, y: -9.81, z: 0} 26 | m_ContactPairsMode: 0 27 | m_BroadphaseType: 0 28 | m_WorldBounds: 29 | m_Center: {x: 0, y: 0, z: 0} 30 | m_Extent: {x: 250, y: 250, z: 250} 31 | m_WorldSubdivisions: 8 32 | m_FrictionType: 0 33 | m_EnableEnhancedDeterminism: 0 34 | m_EnableUnifiedHeightmaps: 1 35 | m_SolverType: 0 36 | m_DefaultMaxAngularSpeed: 50 37 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 1 9 | path: Assets/_Client/Scenes/SampleScene.unity 10 | guid: 2cda990e2423bbf4892e6590ba056729 11 | m_configObjects: {} 12 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | m_SerializationMode: 2 8 | m_LineEndingsForNewScripts: 0 9 | m_DefaultBehaviorMode: 1 10 | m_PrefabRegularEnvironment: {fileID: 0} 11 | m_PrefabUIEnvironment: {fileID: 0} 12 | m_SpritePackerMode: 4 13 | m_SpritePackerPaddingPower: 1 14 | m_EtcTextureCompressorBehavior: 1 15 | m_EtcTextureFastCompressor: 1 16 | m_EtcTextureNormalCompressor: 2 17 | m_EtcTextureBestCompressor: 4 18 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp 19 | m_ProjectGenerationRootNamespace: MatchTwo 20 | m_EnableTextureStreamingInEditMode: 1 21 | m_EnableTextureStreamingInPlayMode: 1 22 | m_AsyncShaderCompilation: 1 23 | m_CachingShaderPreprocessor: 1 24 | m_PrefabModeAllowAutoSave: 1 25 | m_EnterPlayModeOptionsEnabled: 0 26 | m_EnterPlayModeOptions: 3 27 | m_GameObjectNamingDigits: 1 28 | m_GameObjectNamingScheme: 0 29 | m_AssetNamingUsesSpace: 1 30 | m_UseLegacyProbeSampleCount: 0 31 | m_SerializeInlineMappingsOnOneLine: 1 32 | m_DisableCookiesInLightmapper: 1 33 | m_AssetPipelineMode: 1 34 | m_CacheServerMode: 0 35 | m_CacheServerEndpoint: 36 | m_CacheServerNamespacePrefix: default 37 | m_CacheServerEnableDownload: 1 38 | m_CacheServerEnableUpload: 1 39 | m_CacheServerEnableAuth: 0 40 | m_CacheServerEnableTls: 0 41 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_VideoShadersIncludeMode: 2 32 | m_AlwaysIncludedShaders: 33 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 39 | - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} 40 | m_PreloadedShaders: [] 41 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 42 | m_CustomRenderPipeline: {fileID: 0} 43 | m_TransparencySortMode: 0 44 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 45 | m_DefaultRenderingPath: 1 46 | m_DefaultMobileRenderingPath: 1 47 | m_TierSettings: [] 48 | m_LightmapStripping: 0 49 | m_FogStripping: 0 50 | m_InstancingStripping: 0 51 | m_LightmapKeepPlain: 1 52 | m_LightmapKeepDirCombined: 1 53 | m_LightmapKeepDynamicPlain: 1 54 | m_LightmapKeepDynamicDirCombined: 1 55 | m_LightmapKeepShadowMask: 1 56 | m_LightmapKeepSubtractive: 1 57 | m_FogKeepLinear: 1 58 | m_FogKeepExp: 1 59 | m_FogKeepExp2: 1 60 | m_AlbedoSwatchInfos: [] 61 | m_LightsUseLinearIntensity: 0 62 | m_LightsUseColorTemperature: 0 63 | m_LogWhenShaderIsCompiled: 0 64 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | - serializedVersion: 3 297 | m_Name: Enable Debug Button 1 298 | descriptiveName: 299 | descriptiveNegativeName: 300 | negativeButton: 301 | positiveButton: left ctrl 302 | altNegativeButton: 303 | altPositiveButton: joystick button 8 304 | gravity: 0 305 | dead: 0 306 | sensitivity: 0 307 | snap: 0 308 | invert: 0 309 | type: 0 310 | axis: 0 311 | joyNum: 0 312 | - serializedVersion: 3 313 | m_Name: Enable Debug Button 2 314 | descriptiveName: 315 | descriptiveNegativeName: 316 | negativeButton: 317 | positiveButton: backspace 318 | altNegativeButton: 319 | altPositiveButton: joystick button 9 320 | gravity: 0 321 | dead: 0 322 | sensitivity: 0 323 | snap: 0 324 | invert: 0 325 | type: 0 326 | axis: 0 327 | joyNum: 0 328 | - serializedVersion: 3 329 | m_Name: Debug Reset 330 | descriptiveName: 331 | descriptiveNegativeName: 332 | negativeButton: 333 | positiveButton: left alt 334 | altNegativeButton: 335 | altPositiveButton: joystick button 1 336 | gravity: 0 337 | dead: 0 338 | sensitivity: 0 339 | snap: 0 340 | invert: 0 341 | type: 0 342 | axis: 0 343 | joyNum: 0 344 | - serializedVersion: 3 345 | m_Name: Debug Next 346 | descriptiveName: 347 | descriptiveNegativeName: 348 | negativeButton: 349 | positiveButton: page down 350 | altNegativeButton: 351 | altPositiveButton: joystick button 5 352 | gravity: 0 353 | dead: 0 354 | sensitivity: 0 355 | snap: 0 356 | invert: 0 357 | type: 0 358 | axis: 0 359 | joyNum: 0 360 | - serializedVersion: 3 361 | m_Name: Debug Previous 362 | descriptiveName: 363 | descriptiveNegativeName: 364 | negativeButton: 365 | positiveButton: page up 366 | altNegativeButton: 367 | altPositiveButton: joystick button 4 368 | gravity: 0 369 | dead: 0 370 | sensitivity: 0 371 | snap: 0 372 | invert: 0 373 | type: 0 374 | axis: 0 375 | joyNum: 0 376 | - serializedVersion: 3 377 | m_Name: Debug Validate 378 | descriptiveName: 379 | descriptiveNegativeName: 380 | negativeButton: 381 | positiveButton: return 382 | altNegativeButton: 383 | altPositiveButton: joystick button 0 384 | gravity: 0 385 | dead: 0 386 | sensitivity: 0 387 | snap: 0 388 | invert: 0 389 | type: 0 390 | axis: 0 391 | joyNum: 0 392 | - serializedVersion: 3 393 | m_Name: Debug Persistent 394 | descriptiveName: 395 | descriptiveNegativeName: 396 | negativeButton: 397 | positiveButton: right shift 398 | altNegativeButton: 399 | altPositiveButton: joystick button 2 400 | gravity: 0 401 | dead: 0 402 | sensitivity: 0 403 | snap: 0 404 | invert: 0 405 | type: 0 406 | axis: 0 407 | joyNum: 0 408 | - serializedVersion: 3 409 | m_Name: Debug Multiplier 410 | descriptiveName: 411 | descriptiveNegativeName: 412 | negativeButton: 413 | positiveButton: left shift 414 | altNegativeButton: 415 | altPositiveButton: joystick button 3 416 | gravity: 0 417 | dead: 0 418 | sensitivity: 0 419 | snap: 0 420 | invert: 0 421 | type: 0 422 | axis: 0 423 | joyNum: 0 424 | - serializedVersion: 3 425 | m_Name: Debug Horizontal 426 | descriptiveName: 427 | descriptiveNegativeName: 428 | negativeButton: left 429 | positiveButton: right 430 | altNegativeButton: 431 | altPositiveButton: 432 | gravity: 1000 433 | dead: 0.001 434 | sensitivity: 1000 435 | snap: 0 436 | invert: 0 437 | type: 0 438 | axis: 0 439 | joyNum: 0 440 | - serializedVersion: 3 441 | m_Name: Debug Vertical 442 | descriptiveName: 443 | descriptiveNegativeName: 444 | negativeButton: down 445 | positiveButton: up 446 | altNegativeButton: 447 | altPositiveButton: 448 | gravity: 1000 449 | dead: 0.001 450 | sensitivity: 1000 451 | snap: 0 452 | invert: 0 453 | type: 0 454 | axis: 0 455 | joyNum: 0 456 | - serializedVersion: 3 457 | m_Name: Debug Vertical 458 | descriptiveName: 459 | descriptiveNegativeName: 460 | negativeButton: down 461 | positiveButton: up 462 | altNegativeButton: 463 | altPositiveButton: 464 | gravity: 1000 465 | dead: 0.001 466 | sensitivity: 1000 467 | snap: 0 468 | invert: 0 469 | type: 2 470 | axis: 6 471 | joyNum: 0 472 | - serializedVersion: 3 473 | m_Name: Debug Horizontal 474 | descriptiveName: 475 | descriptiveNegativeName: 476 | negativeButton: left 477 | positiveButton: right 478 | altNegativeButton: 479 | altPositiveButton: 480 | gravity: 1000 481 | dead: 0.001 482 | sensitivity: 1000 483 | snap: 0 484 | invert: 0 485 | type: 2 486 | axis: 5 487 | joyNum: 0 488 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13960, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_ScopedRegistriesSettingsExpanded: 1 16 | oneTimeWarningShown: 0 17 | m_Registries: 18 | - m_Id: main 19 | m_Name: 20 | m_Url: https://packages.unity.com 21 | m_Scopes: [] 22 | m_IsDefault: 1 23 | m_UserSelectedRegistryName: 24 | m_UserAddingNewScopedRegistry: 0 25 | m_RegistryInfoDraft: 26 | m_ErrorMessage: 27 | m_Original: 28 | m_Id: 29 | m_Name: 30 | m_Url: 31 | m_Scopes: [] 32 | m_IsDefault: 0 33 | m_Modified: 0 34 | m_Name: 35 | m_Url: 36 | m_Scopes: 37 | - 38 | m_SelectedScopeIndex: 0 39 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_SimulationMode: 0 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_DefaultPresets: {} 8 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 22 7 | productGUID: 9f393aab7c1768147b87beff3d3c8265 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | AndroidEnableSustainedPerformanceMode: 0 11 | defaultScreenOrientation: 4 12 | targetDevice: 2 13 | useOnDemandResources: 0 14 | accelerometerFrequency: 60 15 | companyName: DefaultCompany 16 | productName: match-two-ecs 17 | defaultCursor: {fileID: 0} 18 | cursorHotspot: {x: 0, y: 0} 19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 20 | m_ShowUnitySplashScreen: 1 21 | m_ShowUnitySplashLogo: 1 22 | m_SplashScreenOverlayOpacity: 1 23 | m_SplashScreenAnimation: 1 24 | m_SplashScreenLogoStyle: 1 25 | m_SplashScreenDrawMode: 0 26 | m_SplashScreenBackgroundAnimationZoom: 1 27 | m_SplashScreenLogoAnimationZoom: 1 28 | m_SplashScreenBackgroundLandscapeAspect: 1 29 | m_SplashScreenBackgroundPortraitAspect: 1 30 | m_SplashScreenBackgroundLandscapeUvs: 31 | serializedVersion: 2 32 | x: 0 33 | y: 0 34 | width: 1 35 | height: 1 36 | m_SplashScreenBackgroundPortraitUvs: 37 | serializedVersion: 2 38 | x: 0 39 | y: 0 40 | width: 1 41 | height: 1 42 | m_SplashScreenLogos: [] 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1920 46 | defaultScreenHeight: 1080 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 0 51 | m_MTRendering: 1 52 | mipStripping: 0 53 | numberOfMipsStripped: 0 54 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 55 | iosShowActivityIndicatorOnLoading: -1 56 | androidShowActivityIndicatorOnLoading: -1 57 | iosUseCustomAppBackgroundBehavior: 0 58 | iosAllowHTTPDownload: 1 59 | allowedAutorotateToPortrait: 1 60 | allowedAutorotateToPortraitUpsideDown: 1 61 | allowedAutorotateToLandscapeRight: 1 62 | allowedAutorotateToLandscapeLeft: 1 63 | useOSAutorotation: 1 64 | use32BitDisplayBuffer: 1 65 | preserveFramebufferAlpha: 0 66 | disableDepthAndStencilBuffers: 0 67 | androidStartInFullscreen: 1 68 | androidRenderOutsideSafeArea: 1 69 | androidUseSwappy: 1 70 | androidBlitType: 0 71 | defaultIsNativeResolution: 1 72 | macRetinaSupport: 1 73 | runInBackground: 0 74 | captureSingleScreen: 0 75 | muteOtherAudioSources: 0 76 | Prepare IOS For Recording: 0 77 | Force IOS Speakers When Recording: 0 78 | deferSystemGesturesMode: 0 79 | hideHomeButton: 0 80 | submitAnalytics: 1 81 | usePlayerLog: 1 82 | bakeCollisionMeshes: 0 83 | forceSingleInstance: 0 84 | useFlipModelSwapchain: 1 85 | resizableWindow: 0 86 | useMacAppStoreValidation: 0 87 | macAppStoreCategory: public.app-category.games 88 | gpuSkinning: 0 89 | xboxPIXTextureCapture: 0 90 | xboxEnableAvatar: 0 91 | xboxEnableKinect: 0 92 | xboxEnableKinectAutoTracking: 0 93 | xboxEnableFitness: 0 94 | visibleInBackground: 1 95 | allowFullscreenSwitch: 1 96 | fullscreenMode: 1 97 | xboxSpeechDB: 0 98 | xboxEnableHeadOrientation: 0 99 | xboxEnableGuest: 0 100 | xboxEnablePIXSampling: 0 101 | metalFramebufferOnly: 0 102 | xboxOneResolution: 0 103 | xboxOneSResolution: 0 104 | xboxOneXResolution: 3 105 | xboxOneMonoLoggingLevel: 0 106 | xboxOneLoggingLevel: 1 107 | xboxOneDisableEsram: 0 108 | xboxOneEnableTypeOptimization: 0 109 | xboxOnePresentImmediateThreshold: 0 110 | switchQueueCommandMemory: 1048576 111 | switchQueueControlMemory: 16384 112 | switchQueueComputeMemory: 262144 113 | switchNVNShaderPoolsGranularity: 33554432 114 | switchNVNDefaultPoolsGranularity: 16777216 115 | switchNVNOtherPoolsGranularity: 16777216 116 | switchNVNMaxPublicTextureIDCount: 0 117 | switchNVNMaxPublicSamplerIDCount: 0 118 | stadiaPresentMode: 0 119 | stadiaTargetFramerate: 0 120 | vulkanNumSwapchainBuffers: 3 121 | vulkanEnableSetSRGBWrite: 0 122 | vulkanEnablePreTransform: 0 123 | vulkanEnableLateAcquireNextImage: 0 124 | m_SupportedAspectRatios: 125 | 4:3: 1 126 | 5:4: 1 127 | 16:10: 1 128 | 16:9: 1 129 | Others: 1 130 | bundleVersion: 1.0 131 | preloadedAssets: [] 132 | metroInputSource: 0 133 | wsaTransparentSwapchain: 0 134 | m_HolographicPauseOnTrackingLoss: 1 135 | xboxOneDisableKinectGpuReservation: 1 136 | xboxOneEnable7thCore: 1 137 | vrSettings: 138 | enable360StereoCapture: 0 139 | isWsaHolographicRemotingEnabled: 0 140 | enableFrameTimingStats: 0 141 | useHDRDisplay: 0 142 | D3DHDRBitDepth: 0 143 | m_ColorGamuts: 00000000 144 | targetPixelDensity: 30 145 | resolutionScalingMode: 0 146 | androidSupportedAspectRatio: 1 147 | androidMaxAspectRatio: 2.1 148 | applicationIdentifier: 149 | Standalone: com.DefaultCompany.match-two-ecs 150 | buildNumber: 151 | Standalone: 0 152 | iPhone: 0 153 | tvOS: 0 154 | overrideDefaultApplicationIdentifier: 0 155 | AndroidBundleVersionCode: 1 156 | AndroidMinSdkVersion: 19 157 | AndroidTargetSdkVersion: 0 158 | AndroidPreferredInstallLocation: 1 159 | aotOptions: 160 | stripEngineCode: 1 161 | iPhoneStrippingLevel: 0 162 | iPhoneScriptCallOptimization: 0 163 | ForceInternetPermission: 0 164 | ForceSDCardPermission: 0 165 | CreateWallpaper: 0 166 | APKExpansionFiles: 0 167 | keepLoadedShadersAlive: 0 168 | StripUnusedMeshComponents: 0 169 | VertexChannelCompressionMask: 4054 170 | iPhoneSdkVersion: 988 171 | iOSTargetOSVersionString: 11.0 172 | tvOSSdkVersion: 0 173 | tvOSRequireExtendedGameController: 0 174 | tvOSTargetOSVersionString: 11.0 175 | uIPrerenderedIcon: 0 176 | uIRequiresPersistentWiFi: 0 177 | uIRequiresFullScreen: 1 178 | uIStatusBarHidden: 1 179 | uIExitOnSuspend: 0 180 | uIStatusBarStyle: 0 181 | appleTVSplashScreen: {fileID: 0} 182 | appleTVSplashScreen2x: {fileID: 0} 183 | tvOSSmallIconLayers: [] 184 | tvOSSmallIconLayers2x: [] 185 | tvOSLargeIconLayers: [] 186 | tvOSLargeIconLayers2x: [] 187 | tvOSTopShelfImageLayers: [] 188 | tvOSTopShelfImageLayers2x: [] 189 | tvOSTopShelfImageWideLayers: [] 190 | tvOSTopShelfImageWideLayers2x: [] 191 | iOSLaunchScreenType: 0 192 | iOSLaunchScreenPortrait: {fileID: 0} 193 | iOSLaunchScreenLandscape: {fileID: 0} 194 | iOSLaunchScreenBackgroundColor: 195 | serializedVersion: 2 196 | rgba: 0 197 | iOSLaunchScreenFillPct: 100 198 | iOSLaunchScreenSize: 100 199 | iOSLaunchScreenCustomXibPath: 200 | iOSLaunchScreeniPadType: 0 201 | iOSLaunchScreeniPadImage: {fileID: 0} 202 | iOSLaunchScreeniPadBackgroundColor: 203 | serializedVersion: 2 204 | rgba: 0 205 | iOSLaunchScreeniPadFillPct: 100 206 | iOSLaunchScreeniPadSize: 100 207 | iOSLaunchScreeniPadCustomXibPath: 208 | iOSLaunchScreenCustomStoryboardPath: 209 | iOSLaunchScreeniPadCustomStoryboardPath: 210 | iOSDeviceRequirements: [] 211 | iOSURLSchemes: [] 212 | iOSBackgroundModes: 0 213 | iOSMetalForceHardShadows: 0 214 | metalEditorSupport: 1 215 | metalAPIValidation: 1 216 | iOSRenderExtraFrameOnPause: 0 217 | iosCopyPluginsCodeInsteadOfSymlink: 0 218 | appleDeveloperTeamID: 219 | iOSManualSigningProvisioningProfileID: 220 | tvOSManualSigningProvisioningProfileID: 221 | iOSManualSigningProvisioningProfileType: 0 222 | tvOSManualSigningProvisioningProfileType: 0 223 | appleEnableAutomaticSigning: 0 224 | iOSRequireARKit: 0 225 | iOSAutomaticallyDetectAndAddCapabilities: 1 226 | appleEnableProMotion: 0 227 | shaderPrecisionModel: 0 228 | clonedFromGUID: 10ad67313f4034357812315f3c407484 229 | templatePackageId: com.unity.template.2d@5.0.0 230 | templateDefaultScene: Assets/Scenes/SampleScene.unity 231 | useCustomMainManifest: 0 232 | useCustomLauncherManifest: 0 233 | useCustomMainGradleTemplate: 0 234 | useCustomLauncherGradleManifest: 0 235 | useCustomBaseGradleTemplate: 0 236 | useCustomGradlePropertiesTemplate: 0 237 | useCustomProguardFile: 0 238 | AndroidTargetArchitectures: 1 239 | AndroidSplashScreenScale: 0 240 | androidSplashScreen: {fileID: 0} 241 | AndroidKeystoreName: 242 | AndroidKeyaliasName: 243 | AndroidBuildApkPerCpuArchitecture: 0 244 | AndroidTVCompatibility: 0 245 | AndroidIsGame: 1 246 | AndroidEnableTango: 0 247 | androidEnableBanner: 1 248 | androidUseLowAccuracyLocation: 0 249 | androidUseCustomKeystore: 0 250 | m_AndroidBanners: 251 | - width: 320 252 | height: 180 253 | banner: {fileID: 0} 254 | androidGamepadSupportLevel: 0 255 | AndroidMinifyWithR8: 0 256 | AndroidMinifyRelease: 0 257 | AndroidMinifyDebug: 0 258 | AndroidValidateAppBundleSize: 1 259 | AndroidAppBundleSizeToValidate: 150 260 | m_BuildTargetIcons: [] 261 | m_BuildTargetPlatformIcons: [] 262 | m_BuildTargetBatching: [] 263 | m_BuildTargetGraphicsJobs: 264 | - m_BuildTarget: MacStandaloneSupport 265 | m_GraphicsJobs: 0 266 | - m_BuildTarget: Switch 267 | m_GraphicsJobs: 0 268 | - m_BuildTarget: MetroSupport 269 | m_GraphicsJobs: 0 270 | - m_BuildTarget: AppleTVSupport 271 | m_GraphicsJobs: 0 272 | - m_BuildTarget: BJMSupport 273 | m_GraphicsJobs: 0 274 | - m_BuildTarget: LinuxStandaloneSupport 275 | m_GraphicsJobs: 0 276 | - m_BuildTarget: PS4Player 277 | m_GraphicsJobs: 0 278 | - m_BuildTarget: iOSSupport 279 | m_GraphicsJobs: 0 280 | - m_BuildTarget: WindowsStandaloneSupport 281 | m_GraphicsJobs: 0 282 | - m_BuildTarget: XboxOnePlayer 283 | m_GraphicsJobs: 0 284 | - m_BuildTarget: LuminSupport 285 | m_GraphicsJobs: 0 286 | - m_BuildTarget: AndroidPlayer 287 | m_GraphicsJobs: 0 288 | - m_BuildTarget: WebGLSupport 289 | m_GraphicsJobs: 0 290 | m_BuildTargetGraphicsJobMode: [] 291 | m_BuildTargetGraphicsAPIs: 292 | - m_BuildTarget: AndroidPlayer 293 | m_APIs: 150000000b000000 294 | m_Automatic: 0 295 | - m_BuildTarget: iOSSupport 296 | m_APIs: 10000000 297 | m_Automatic: 1 298 | m_BuildTargetVRSettings: [] 299 | openGLRequireES31: 0 300 | openGLRequireES31AEP: 0 301 | openGLRequireES32: 0 302 | m_TemplateCustomTags: {} 303 | mobileMTRendering: 304 | Android: 1 305 | iPhone: 1 306 | tvOS: 1 307 | m_BuildTargetGroupLightmapEncodingQuality: [] 308 | m_BuildTargetGroupLightmapSettings: [] 309 | m_BuildTargetNormalMapEncoding: [] 310 | playModeTestRunnerEnabled: 0 311 | runPlayModeTestAsEditModeTest: 0 312 | actionOnDotNetUnhandledException: 1 313 | enableInternalProfiler: 0 314 | logObjCUncaughtExceptions: 1 315 | enableCrashReportAPI: 0 316 | cameraUsageDescription: 317 | locationUsageDescription: 318 | microphoneUsageDescription: 319 | switchNMETAOverride: 320 | switchNetLibKey: 321 | switchSocketMemoryPoolSize: 6144 322 | switchSocketAllocatorPoolSize: 128 323 | switchSocketConcurrencyLimit: 14 324 | switchScreenResolutionBehavior: 2 325 | switchUseCPUProfiler: 0 326 | switchUseGOLDLinker: 0 327 | switchApplicationID: 0x01004b9000490000 328 | switchNSODependencies: 329 | switchTitleNames_0: 330 | switchTitleNames_1: 331 | switchTitleNames_2: 332 | switchTitleNames_3: 333 | switchTitleNames_4: 334 | switchTitleNames_5: 335 | switchTitleNames_6: 336 | switchTitleNames_7: 337 | switchTitleNames_8: 338 | switchTitleNames_9: 339 | switchTitleNames_10: 340 | switchTitleNames_11: 341 | switchTitleNames_12: 342 | switchTitleNames_13: 343 | switchTitleNames_14: 344 | switchPublisherNames_0: 345 | switchPublisherNames_1: 346 | switchPublisherNames_2: 347 | switchPublisherNames_3: 348 | switchPublisherNames_4: 349 | switchPublisherNames_5: 350 | switchPublisherNames_6: 351 | switchPublisherNames_7: 352 | switchPublisherNames_8: 353 | switchPublisherNames_9: 354 | switchPublisherNames_10: 355 | switchPublisherNames_11: 356 | switchPublisherNames_12: 357 | switchPublisherNames_13: 358 | switchPublisherNames_14: 359 | switchIcons_0: {fileID: 0} 360 | switchIcons_1: {fileID: 0} 361 | switchIcons_2: {fileID: 0} 362 | switchIcons_3: {fileID: 0} 363 | switchIcons_4: {fileID: 0} 364 | switchIcons_5: {fileID: 0} 365 | switchIcons_6: {fileID: 0} 366 | switchIcons_7: {fileID: 0} 367 | switchIcons_8: {fileID: 0} 368 | switchIcons_9: {fileID: 0} 369 | switchIcons_10: {fileID: 0} 370 | switchIcons_11: {fileID: 0} 371 | switchIcons_12: {fileID: 0} 372 | switchIcons_13: {fileID: 0} 373 | switchIcons_14: {fileID: 0} 374 | switchSmallIcons_0: {fileID: 0} 375 | switchSmallIcons_1: {fileID: 0} 376 | switchSmallIcons_2: {fileID: 0} 377 | switchSmallIcons_3: {fileID: 0} 378 | switchSmallIcons_4: {fileID: 0} 379 | switchSmallIcons_5: {fileID: 0} 380 | switchSmallIcons_6: {fileID: 0} 381 | switchSmallIcons_7: {fileID: 0} 382 | switchSmallIcons_8: {fileID: 0} 383 | switchSmallIcons_9: {fileID: 0} 384 | switchSmallIcons_10: {fileID: 0} 385 | switchSmallIcons_11: {fileID: 0} 386 | switchSmallIcons_12: {fileID: 0} 387 | switchSmallIcons_13: {fileID: 0} 388 | switchSmallIcons_14: {fileID: 0} 389 | switchManualHTML: 390 | switchAccessibleURLs: 391 | switchLegalInformation: 392 | switchMainThreadStackSize: 1048576 393 | switchPresenceGroupId: 394 | switchLogoHandling: 0 395 | switchReleaseVersion: 0 396 | switchDisplayVersion: 1.0.0 397 | switchStartupUserAccount: 0 398 | switchTouchScreenUsage: 0 399 | switchSupportedLanguagesMask: 0 400 | switchLogoType: 0 401 | switchApplicationErrorCodeCategory: 402 | switchUserAccountSaveDataSize: 0 403 | switchUserAccountSaveDataJournalSize: 0 404 | switchApplicationAttribute: 0 405 | switchCardSpecSize: -1 406 | switchCardSpecClock: -1 407 | switchRatingsMask: 0 408 | switchRatingsInt_0: 0 409 | switchRatingsInt_1: 0 410 | switchRatingsInt_2: 0 411 | switchRatingsInt_3: 0 412 | switchRatingsInt_4: 0 413 | switchRatingsInt_5: 0 414 | switchRatingsInt_6: 0 415 | switchRatingsInt_7: 0 416 | switchRatingsInt_8: 0 417 | switchRatingsInt_9: 0 418 | switchRatingsInt_10: 0 419 | switchRatingsInt_11: 0 420 | switchRatingsInt_12: 0 421 | switchLocalCommunicationIds_0: 422 | switchLocalCommunicationIds_1: 423 | switchLocalCommunicationIds_2: 424 | switchLocalCommunicationIds_3: 425 | switchLocalCommunicationIds_4: 426 | switchLocalCommunicationIds_5: 427 | switchLocalCommunicationIds_6: 428 | switchLocalCommunicationIds_7: 429 | switchParentalControl: 0 430 | switchAllowsScreenshot: 1 431 | switchAllowsVideoCapturing: 1 432 | switchAllowsRuntimeAddOnContentInstall: 0 433 | switchDataLossConfirmation: 0 434 | switchUserAccountLockEnabled: 0 435 | switchSystemResourceMemory: 16777216 436 | switchSupportedNpadStyles: 22 437 | switchNativeFsCacheSize: 32 438 | switchIsHoldTypeHorizontal: 0 439 | switchSupportedNpadCount: 8 440 | switchSocketConfigEnabled: 0 441 | switchTcpInitialSendBufferSize: 32 442 | switchTcpInitialReceiveBufferSize: 64 443 | switchTcpAutoSendBufferSizeMax: 256 444 | switchTcpAutoReceiveBufferSizeMax: 256 445 | switchUdpSendBufferSize: 9 446 | switchUdpReceiveBufferSize: 42 447 | switchSocketBufferEfficiency: 4 448 | switchSocketInitializeEnabled: 1 449 | switchNetworkInterfaceManagerInitializeEnabled: 1 450 | switchPlayerConnectionEnabled: 1 451 | switchUseNewStyleFilepaths: 0 452 | ps4NPAgeRating: 12 453 | ps4NPTitleSecret: 454 | ps4NPTrophyPackPath: 455 | ps4ParentalLevel: 11 456 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 457 | ps4Category: 0 458 | ps4MasterVersion: 01.00 459 | ps4AppVersion: 01.00 460 | ps4AppType: 0 461 | ps4ParamSfxPath: 462 | ps4VideoOutPixelFormat: 0 463 | ps4VideoOutInitialWidth: 1920 464 | ps4VideoOutBaseModeInitialWidth: 1920 465 | ps4VideoOutReprojectionRate: 60 466 | ps4PronunciationXMLPath: 467 | ps4PronunciationSIGPath: 468 | ps4BackgroundImagePath: 469 | ps4StartupImagePath: 470 | ps4StartupImagesFolder: 471 | ps4IconImagesFolder: 472 | ps4SaveDataImagePath: 473 | ps4SdkOverride: 474 | ps4BGMPath: 475 | ps4ShareFilePath: 476 | ps4ShareOverlayImagePath: 477 | ps4PrivacyGuardImagePath: 478 | ps4ExtraSceSysFile: 479 | ps4NPtitleDatPath: 480 | ps4RemotePlayKeyAssignment: -1 481 | ps4RemotePlayKeyMappingDir: 482 | ps4PlayTogetherPlayerCount: 0 483 | ps4EnterButtonAssignment: 2 484 | ps4ApplicationParam1: 0 485 | ps4ApplicationParam2: 0 486 | ps4ApplicationParam3: 0 487 | ps4ApplicationParam4: 0 488 | ps4DownloadDataSize: 0 489 | ps4GarlicHeapSize: 2048 490 | ps4ProGarlicHeapSize: 2560 491 | playerPrefsMaxSize: 32768 492 | ps4Passcode: bi9UOuSpM2Tlh01vOzwvSikHFswuzleh 493 | ps4pnSessions: 1 494 | ps4pnPresence: 1 495 | ps4pnFriends: 1 496 | ps4pnGameCustomData: 1 497 | playerPrefsSupport: 0 498 | enableApplicationExit: 0 499 | resetTempFolder: 1 500 | restrictedAudioUsageRights: 0 501 | ps4UseResolutionFallback: 0 502 | ps4ReprojectionSupport: 0 503 | ps4UseAudio3dBackend: 0 504 | ps4UseLowGarlicFragmentationMode: 1 505 | ps4SocialScreenEnabled: 0 506 | ps4ScriptOptimizationLevel: 2 507 | ps4Audio3dVirtualSpeakerCount: 14 508 | ps4attribCpuUsage: 0 509 | ps4PatchPkgPath: 510 | ps4PatchLatestPkgPath: 511 | ps4PatchChangeinfoPath: 512 | ps4PatchDayOne: 0 513 | ps4attribUserManagement: 0 514 | ps4attribMoveSupport: 0 515 | ps4attrib3DSupport: 0 516 | ps4attribShareSupport: 0 517 | ps4attribExclusiveVR: 0 518 | ps4disableAutoHideSplash: 0 519 | ps4videoRecordingFeaturesUsed: 0 520 | ps4contentSearchFeaturesUsed: 0 521 | ps4CompatibilityPS5: 0 522 | ps4GPU800MHz: 1 523 | ps4attribEyeToEyeDistanceSettingVR: 0 524 | ps4IncludedModules: [] 525 | ps4attribVROutputEnabled: 0 526 | monoEnv: 527 | splashScreenBackgroundSourceLandscape: {fileID: 0} 528 | splashScreenBackgroundSourcePortrait: {fileID: 0} 529 | blurSplashScreenBackground: 1 530 | spritePackerPolicy: 531 | webGLMemorySize: 32 532 | webGLExceptionSupport: 1 533 | webGLNameFilesAsHashes: 0 534 | webGLDataCaching: 1 535 | webGLDebugSymbols: 0 536 | webGLEmscriptenArgs: 537 | webGLModulesDirectory: 538 | webGLTemplate: APPLICATION:Default 539 | webGLAnalyzeBuildSize: 0 540 | webGLUseEmbeddedResources: 0 541 | webGLCompressionFormat: 0 542 | webGLWasmArithmeticExceptions: 0 543 | webGLLinkerTarget: 1 544 | webGLThreadsSupport: 0 545 | webGLDecompressionFallback: 0 546 | scriptingDefineSymbols: {} 547 | additionalCompilerArguments: {} 548 | platformArchitecture: {} 549 | scriptingBackend: {} 550 | il2cppCompilerConfiguration: {} 551 | managedStrippingLevel: {} 552 | incrementalIl2cppBuild: {} 553 | suppressCommonWarnings: 1 554 | allowUnsafeCode: 0 555 | useDeterministicCompilation: 1 556 | useReferenceAssemblies: 1 557 | enableRoslynAnalyzers: 1 558 | additionalIl2CppArgs: 559 | scriptingRuntimeVersion: 1 560 | gcIncremental: 1 561 | gcWBarrierValidation: 0 562 | apiCompatibilityLevelPerPlatform: {} 563 | m_RenderingPath: 1 564 | m_MobileRenderingPath: 1 565 | metroPackageName: 2D_BuiltInRenderer 566 | metroPackageVersion: 567 | metroCertificatePath: 568 | metroCertificatePassword: 569 | metroCertificateSubject: 570 | metroCertificateIssuer: 571 | metroCertificateNotAfter: 0000000000000000 572 | metroApplicationDescription: 2D_BuiltInRenderer 573 | wsaImages: {} 574 | metroTileShortName: 575 | metroTileShowName: 0 576 | metroMediumTileShowName: 0 577 | metroLargeTileShowName: 0 578 | metroWideTileShowName: 0 579 | metroSupportStreamingInstall: 0 580 | metroLastRequiredScene: 0 581 | metroDefaultTileSize: 1 582 | metroTileForegroundText: 2 583 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 584 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1} 585 | metroSplashScreenUseBackgroundColor: 0 586 | platformCapabilities: {} 587 | metroTargetDeviceFamilies: {} 588 | metroFTAName: 589 | metroFTAFileTypes: [] 590 | metroProtocolName: 591 | XboxOneProductId: 592 | XboxOneUpdateKey: 593 | XboxOneSandboxId: 594 | XboxOneContentId: 595 | XboxOneTitleId: 596 | XboxOneSCId: 597 | XboxOneGameOsOverridePath: 598 | XboxOnePackagingOverridePath: 599 | XboxOneAppManifestOverridePath: 600 | XboxOneVersion: 1.0.0.0 601 | XboxOnePackageEncryption: 0 602 | XboxOnePackageUpdateGranularity: 2 603 | XboxOneDescription: 604 | XboxOneLanguage: 605 | - enus 606 | XboxOneCapability: [] 607 | XboxOneGameRating: {} 608 | XboxOneIsContentPackage: 0 609 | XboxOneEnableGPUVariability: 1 610 | XboxOneSockets: {} 611 | XboxOneSplashScreen: {fileID: 0} 612 | XboxOneAllowedProductIds: [] 613 | XboxOnePersistentLocalStorageSize: 0 614 | XboxOneXTitleMemory: 8 615 | XboxOneOverrideIdentityName: 616 | XboxOneOverrideIdentityPublisher: 617 | vrEditorSettings: {} 618 | cloudServicesEnabled: {} 619 | luminIcon: 620 | m_Name: 621 | m_ModelFolderPath: 622 | m_PortalFolderPath: 623 | luminCert: 624 | m_CertPath: 625 | m_SignPackage: 1 626 | luminIsChannelApp: 0 627 | luminVersion: 628 | m_VersionCode: 1 629 | m_VersionName: 630 | apiCompatibilityLevel: 6 631 | activeInputHandler: 0 632 | cloudProjectId: 633 | framebufferDepthMemorylessMode: 0 634 | qualitySettingsNames: [] 635 | projectName: 636 | organizationId: 637 | cloudEnabled: 0 638 | legacyClampBlendShapeWeights: 0 639 | virtualTexturingSupportEnabled: 0 640 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2019.4.15f1 2 | m_EditorVersionWithRevision: 2019.4.15f1 (fbf367ac14e9) 3 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | skinWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | streamingMipmapsActive: 0 33 | streamingMipmapsAddAllCameras: 1 34 | streamingMipmapsMemoryBudget: 512 35 | streamingMipmapsRenderersPerFrame: 512 36 | streamingMipmapsMaxLevelReduction: 2 37 | streamingMipmapsMaxFileIORequests: 1024 38 | particleRaycastBudget: 4 39 | asyncUploadTimeSlice: 2 40 | asyncUploadBufferSize: 16 41 | asyncUploadPersistentBuffer: 1 42 | resolutionScalingFixedDPIFactor: 1 43 | customRenderPipeline: {fileID: 0} 44 | excludedTargetPlatforms: [] 45 | - serializedVersion: 2 46 | name: Low 47 | pixelLightCount: 0 48 | shadows: 0 49 | shadowResolution: 0 50 | shadowProjection: 1 51 | shadowCascades: 1 52 | shadowDistance: 20 53 | shadowNearPlaneOffset: 3 54 | shadowCascade2Split: 0.33333334 55 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 56 | shadowmaskMode: 0 57 | skinWeights: 2 58 | textureQuality: 0 59 | anisotropicTextures: 0 60 | antiAliasing: 0 61 | softParticles: 0 62 | softVegetation: 0 63 | realtimeReflectionProbes: 0 64 | billboardsFaceCameraPosition: 0 65 | vSyncCount: 0 66 | lodBias: 0.4 67 | maximumLODLevel: 0 68 | streamingMipmapsActive: 0 69 | streamingMipmapsAddAllCameras: 1 70 | streamingMipmapsMemoryBudget: 512 71 | streamingMipmapsRenderersPerFrame: 512 72 | streamingMipmapsMaxLevelReduction: 2 73 | streamingMipmapsMaxFileIORequests: 1024 74 | particleRaycastBudget: 16 75 | asyncUploadTimeSlice: 2 76 | asyncUploadBufferSize: 16 77 | asyncUploadPersistentBuffer: 1 78 | resolutionScalingFixedDPIFactor: 1 79 | customRenderPipeline: {fileID: 0} 80 | excludedTargetPlatforms: [] 81 | - serializedVersion: 2 82 | name: Medium 83 | pixelLightCount: 1 84 | shadows: 1 85 | shadowResolution: 0 86 | shadowProjection: 1 87 | shadowCascades: 1 88 | shadowDistance: 20 89 | shadowNearPlaneOffset: 3 90 | shadowCascade2Split: 0.33333334 91 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 92 | shadowmaskMode: 0 93 | skinWeights: 2 94 | textureQuality: 0 95 | anisotropicTextures: 1 96 | antiAliasing: 0 97 | softParticles: 0 98 | softVegetation: 0 99 | realtimeReflectionProbes: 0 100 | billboardsFaceCameraPosition: 0 101 | vSyncCount: 1 102 | lodBias: 0.7 103 | maximumLODLevel: 0 104 | streamingMipmapsActive: 0 105 | streamingMipmapsAddAllCameras: 1 106 | streamingMipmapsMemoryBudget: 512 107 | streamingMipmapsRenderersPerFrame: 512 108 | streamingMipmapsMaxLevelReduction: 2 109 | streamingMipmapsMaxFileIORequests: 1024 110 | particleRaycastBudget: 64 111 | asyncUploadTimeSlice: 2 112 | asyncUploadBufferSize: 16 113 | asyncUploadPersistentBuffer: 1 114 | resolutionScalingFixedDPIFactor: 1 115 | customRenderPipeline: {fileID: 0} 116 | excludedTargetPlatforms: [] 117 | - serializedVersion: 2 118 | name: High 119 | pixelLightCount: 2 120 | shadows: 2 121 | shadowResolution: 1 122 | shadowProjection: 1 123 | shadowCascades: 2 124 | shadowDistance: 40 125 | shadowNearPlaneOffset: 3 126 | shadowCascade2Split: 0.33333334 127 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 128 | shadowmaskMode: 1 129 | skinWeights: 2 130 | textureQuality: 0 131 | anisotropicTextures: 1 132 | antiAliasing: 0 133 | softParticles: 0 134 | softVegetation: 1 135 | realtimeReflectionProbes: 1 136 | billboardsFaceCameraPosition: 1 137 | vSyncCount: 1 138 | lodBias: 1 139 | maximumLODLevel: 0 140 | streamingMipmapsActive: 0 141 | streamingMipmapsAddAllCameras: 1 142 | streamingMipmapsMemoryBudget: 512 143 | streamingMipmapsRenderersPerFrame: 512 144 | streamingMipmapsMaxLevelReduction: 2 145 | streamingMipmapsMaxFileIORequests: 1024 146 | particleRaycastBudget: 256 147 | asyncUploadTimeSlice: 2 148 | asyncUploadBufferSize: 16 149 | asyncUploadPersistentBuffer: 1 150 | resolutionScalingFixedDPIFactor: 1 151 | customRenderPipeline: {fileID: 0} 152 | excludedTargetPlatforms: [] 153 | - serializedVersion: 2 154 | name: Very High 155 | pixelLightCount: 3 156 | shadows: 2 157 | shadowResolution: 2 158 | shadowProjection: 1 159 | shadowCascades: 2 160 | shadowDistance: 70 161 | shadowNearPlaneOffset: 3 162 | shadowCascade2Split: 0.33333334 163 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 164 | shadowmaskMode: 1 165 | skinWeights: 4 166 | textureQuality: 0 167 | anisotropicTextures: 2 168 | antiAliasing: 2 169 | softParticles: 1 170 | softVegetation: 1 171 | realtimeReflectionProbes: 1 172 | billboardsFaceCameraPosition: 1 173 | vSyncCount: 1 174 | lodBias: 1.5 175 | maximumLODLevel: 0 176 | streamingMipmapsActive: 0 177 | streamingMipmapsAddAllCameras: 1 178 | streamingMipmapsMemoryBudget: 512 179 | streamingMipmapsRenderersPerFrame: 512 180 | streamingMipmapsMaxLevelReduction: 2 181 | streamingMipmapsMaxFileIORequests: 1024 182 | particleRaycastBudget: 1024 183 | asyncUploadTimeSlice: 2 184 | asyncUploadBufferSize: 16 185 | asyncUploadPersistentBuffer: 1 186 | resolutionScalingFixedDPIFactor: 1 187 | customRenderPipeline: {fileID: 0} 188 | excludedTargetPlatforms: [] 189 | - serializedVersion: 2 190 | name: Ultra 191 | pixelLightCount: 4 192 | shadows: 2 193 | shadowResolution: 2 194 | shadowProjection: 1 195 | shadowCascades: 4 196 | shadowDistance: 150 197 | shadowNearPlaneOffset: 3 198 | shadowCascade2Split: 0.33333334 199 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 200 | shadowmaskMode: 1 201 | skinWeights: 255 202 | textureQuality: 0 203 | anisotropicTextures: 2 204 | antiAliasing: 2 205 | softParticles: 1 206 | softVegetation: 1 207 | realtimeReflectionProbes: 1 208 | billboardsFaceCameraPosition: 1 209 | vSyncCount: 1 210 | lodBias: 2 211 | maximumLODLevel: 0 212 | streamingMipmapsActive: 0 213 | streamingMipmapsAddAllCameras: 1 214 | streamingMipmapsMemoryBudget: 512 215 | streamingMipmapsRenderersPerFrame: 512 216 | streamingMipmapsMaxLevelReduction: 2 217 | streamingMipmapsMaxFileIORequests: 1024 218 | particleRaycastBudget: 4096 219 | asyncUploadTimeSlice: 2 220 | asyncUploadBufferSize: 16 221 | asyncUploadPersistentBuffer: 1 222 | resolutionScalingFixedDPIFactor: 1 223 | customRenderPipeline: {fileID: 0} 224 | excludedTargetPlatforms: [] 225 | m_PerPlatformDefaultQuality: 226 | Android: 2 227 | Lumin: 5 228 | Nintendo Switch: 5 229 | PS4: 5 230 | Stadia: 5 231 | Standalone: 5 232 | WebGL: 3 233 | Windows Store Apps: 5 234 | XboxOne: 5 235 | iPhone: 2 236 | tvOS: 2 237 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_StripUpdateShader: {fileID: 0} 10 | m_RenderPipeSettingsPath: 11 | m_FixedTimeStep: 0.016666668 12 | m_MaxDeltaTime: 0.05 13 | -------------------------------------------------------------------------------- /ProjectSettings/VersionControlSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!890905787 &1 4 | VersionControlSettings: 5 | m_ObjectHideFlags: 0 6 | m_Mode: Visible Meta Files 7 | m_CollabEditorSettings: 8 | inProgressEnabled: 1 9 | -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # unity-ecs-match-two 2 | Unity match-two game example using LeoECS 3 | 4 | # features 5 | - configurable board size 6 | - adaptive camera 7 | - shuffling the board when there's no matches left 8 | - will try to add more (bonuses, boosters) 9 | 10 | # credits 11 | - sprites https://redfoc.com/item/match-3-candy-pack/ 12 | --------------------------------------------------------------------------------