diff --git a/Assets/Data/GameModes.meta b/Assets/Data/GameModes.meta index ae17482..159b0e8 100644 --- a/Assets/Data/GameModes.meta +++ b/Assets/Data/GameModes.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ac893ebcf6aa2894cbfa7152c977643e +guid: af92d541cb7dc944d8fffa68aa3a6e94 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Data/GameModes/ColorCollide.asset b/Assets/Data/GameModes/ColorCollide.asset new file mode 100644 index 0000000..72d5518 --- /dev/null +++ b/Assets/Data/GameModes/ColorCollide.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d59afbd5fad650186ec888cd6b5635c0f553e009beb53447dd21738b679b2d7b +size 519 diff --git a/Assets/Data/GameModes/ColorCollide.asset.meta b/Assets/Data/GameModes/ColorCollide.asset.meta new file mode 100644 index 0000000..f5147ca --- /dev/null +++ b/Assets/Data/GameModes/ColorCollide.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fcc1d14a9d0374d4bbda1aa7cd23807e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Data/Inventory/PlayerInventory.asset b/Assets/Data/Inventory/PlayerInventory.asset index fc7e5b1..cc68256 100644 --- a/Assets/Data/Inventory/PlayerInventory.asset +++ b/Assets/Data/Inventory/PlayerInventory.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4583835e60ade6fdf62d738ba16346ea0b0a272531ddc3f2ae77eb4a08015b0c +oid sha256:b461219fe61fa8068804d40407fb1e13919f1586959b20af63ed803c87d8ce40 size 972 diff --git a/Assets/Data/Logic Blocks/ForLoop.asset b/Assets/Data/Logic Blocks/ForLoop.asset index 70845b8..1786a14 100644 --- a/Assets/Data/Logic Blocks/ForLoop.asset +++ b/Assets/Data/Logic Blocks/ForLoop.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:34e0722afbe625d87d5ef748ee29a3ed763df335fd3bb1f189820962121e4411 -size 675 +oid sha256:6e6e8e46d29e12c7793ce76da141fbb3dc619368660efd6d4338052edcafd802 +size 787 diff --git a/Assets/Data/Logic Blocks/Jump.asset b/Assets/Data/Logic Blocks/Jump.asset index 73a3d9f..fd55d3e 100644 --- a/Assets/Data/Logic Blocks/Jump.asset +++ b/Assets/Data/Logic Blocks/Jump.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49d74fee28f711c623d0d219f70aa6b3099be45bbb398fc9b46373c2f962a3c5 -size 507 +oid sha256:1f714c1e2427f440973c4b364ef594f0ae120c6b7110676cbf8514a5788b8942 +size 629 diff --git a/Assets/Data/Logic Blocks/Move x2.asset b/Assets/Data/Logic Blocks/Move x2.asset index 2795dae..9d0b4f9 100644 --- a/Assets/Data/Logic Blocks/Move x2.asset +++ b/Assets/Data/Logic Blocks/Move x2.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:32f839ca370d74c812af63fa2b54ea03337bbc29aa02e1c325a37869ea9e2f0f -size 511 +oid sha256:dde8e452b31badc77fd8e878c2e1e69f4e3759006ef42706647133b16b1204c8 +size 607 diff --git a/Assets/Data/Logic Blocks/Move.asset b/Assets/Data/Logic Blocks/Move.asset index c643241..7a409b6 100644 --- a/Assets/Data/Logic Blocks/Move.asset +++ b/Assets/Data/Logic Blocks/Move.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2c02ccd234c974be76b21bbc246437fb9b8bb724e596d77213d0023012cf1996 -size 508 +oid sha256:2c997ef9823b34568317d076bc4e80df598da865723f32016fbbc3cc9f82211d +size 604 diff --git a/Assets/Data/Logic Blocks/Rotate Left.asset b/Assets/Data/Logic Blocks/Rotate Left.asset index 0b9f6f3..3955742 100644 --- a/Assets/Data/Logic Blocks/Rotate Left.asset +++ b/Assets/Data/Logic Blocks/Rotate Left.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b8a99ebd1cdcc067be9e66d49377b3fea82bccb6ed878edf467bd9af4020451b -size 514 +oid sha256:f4eeaa30543f44211dc633b143fed2198f22e0efffa66487324ddcc30be54401 +size 610 diff --git a/Assets/Data/Logic Blocks/Rotate Right.asset b/Assets/Data/Logic Blocks/Rotate Right.asset index 08848ea..2db71c6 100644 --- a/Assets/Data/Logic Blocks/Rotate Right.asset +++ b/Assets/Data/Logic Blocks/Rotate Right.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:03cc745c401648ff6ebd18a61cb036d5b11da4725fe81d5d8203de7d48e44684 -size 516 +oid sha256:e63d262fe598ea766710e22e16e8a332c70be0f95b9c4e507448c05b99f9bedb +size 612 diff --git a/Assets/Data/Networking/Server/Realtime/Current GameMode.asset b/Assets/Data/Networking/Server/Realtime/Current GameMode.asset new file mode 100644 index 0000000..0059836 --- /dev/null +++ b/Assets/Data/Networking/Server/Realtime/Current GameMode.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4c6b80a0f7abfed12484f92999cf05c2bd28c59e8b8b8197e57ea1171c317a3 +size 482 diff --git a/Assets/Data/Networking/Server/Realtime/Current GameMode.asset.meta b/Assets/Data/Networking/Server/Realtime/Current GameMode.asset.meta new file mode 100644 index 0000000..eb5ff8c --- /dev/null +++ b/Assets/Data/Networking/Server/Realtime/Current GameMode.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: be8c78868a86aad448fd14e46bd40e51 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/MajorProject_ColorMask.mat b/Assets/Materials/MajorProject_ColorMask.mat new file mode 100644 index 0000000..b048abb --- /dev/null +++ b/Assets/Materials/MajorProject_ColorMask.mat @@ -0,0 +1,63 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: MajorProject_ColorMask + m_Shader: {fileID: 4800000, guid: ce792a77c9d4bdd41b4a3bbada679045, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _Albedo: + m_Texture: {fileID: 2800000, guid: 257566232cf784c47ac6cedbd2354753, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Gradient: + m_Texture: {fileID: 2800000, guid: 24528dab924059845ba09c5e2035bfb6, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _GreyScale: + m_Texture: {fileID: 2800000, guid: bdde6241b2279b2428f3dd16d64db5c5, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Mask: + m_Texture: {fileID: 2800000, guid: 4cc972a8190637f429988d776be4bfe1, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Normal: + m_Texture: {fileID: 2800000, guid: 9b5ce4b2cb92101469e6b391a0eb11fa, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Smoothness: + m_Texture: {fileID: 2800000, guid: 7576199877aa5fe488012ae9d8bae852, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _Base: -0.87 + - _Cutoff: 0.5 + - _GradiantBoost: 0 + - _MaskCutoff: 1 + - _Multiplier: 1 + - _OpacityMask: 0 + - _RemapMax: 1 + - _RemapMin: -0.93 + - __dirty: 0 + m_Colors: + - _ColorMask: {r: 0.54509807, g: 0.6666667, b: 0.14509805, a: 1} + - _NewColor: {r: 1, g: 0, b: 0.5997324, a: 1} + - _Remap: {r: -0.85, g: 1, b: 0, a: 0} diff --git a/Assets/Materials/MajorProject_ColorMask.mat.meta b/Assets/Materials/MajorProject_ColorMask.mat.meta new file mode 100644 index 0000000..b96777e --- /dev/null +++ b/Assets/Materials/MajorProject_ColorMask.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 69b3f382ba26fd8449c9f2e73c4aede5 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Shaders/ColorMask.shader b/Assets/Materials/Shaders/ColorMask.shader new file mode 100644 index 0000000..c1e4c32 --- /dev/null +++ b/Assets/Materials/Shaders/ColorMask.shader @@ -0,0 +1,127 @@ +// Made with Amplify Shader Editor +// Available at the Unity Asset Store - http://u3d.as/y3X +Shader "MajorProject/ColorMask" +{ + Properties + { + _Albedo("Albedo", 2D) = "white" {} + _Normal("Normal", 2D) = "bump" {} + _Smoothness("Smoothness", 2D) = "black" {} + _Mask("Mask", 2D) = "black" {} + _NewColor("New Color", Color) = (1,1,1,1) + _Multiplier("Multiplier", Range( 0 , 1)) = 0 + _RemapMin("Remap Min", Float) = 0 + _RemapMax("Remap Max", Float) = 1 + [Toggle(_OPACITYMASK_ON)] _OpacityMask("Opacity Mask", Float) = 0 + _Cutoff( "Mask Clip Value", Float ) = 0.5 + [HideInInspector] _texcoord( "", 2D ) = "white" {} + [HideInInspector] __dirty( "", Int ) = 1 + } + + SubShader + { + Tags{ "RenderType" = "TransparentCutout" "Queue" = "AlphaTest+0" } + Cull Back + CGPROGRAM + #pragma target 3.5 + #pragma shader_feature _OPACITYMASK_ON + #pragma surface surf Standard keepalpha addshadow fullforwardshadows + struct Input + { + float2 uv_texcoord; + }; + + uniform sampler2D _Normal; + uniform float4 _Normal_ST; + uniform sampler2D _Albedo; + uniform float4 _Albedo_ST; + uniform float4 _NewColor; + uniform sampler2D _Mask; + uniform float4 _Mask_ST; + uniform float _Multiplier; + uniform float _RemapMin; + uniform float _RemapMax; + uniform sampler2D _Smoothness; + uniform float4 _Smoothness_ST; + uniform float _Cutoff = 0.5; + + void surf( Input i , inout SurfaceOutputStandard o ) + { + float2 uv_Normal = i.uv_texcoord * _Normal_ST.xy + _Normal_ST.zw; + o.Normal = UnpackNormal( tex2D( _Normal, uv_Normal ) ); + float2 uv_Albedo = i.uv_texcoord * _Albedo_ST.xy + _Albedo_ST.zw; + float2 uv_Mask = i.uv_texcoord * _Mask_ST.xy + _Mask_ST.zw; + float4 tex2DNode40 = tex2D( _Mask, uv_Mask ); + float GreyScale57 = tex2DNode40.g; + float Mask56 = tex2DNode40.r; + float Gradient58 = tex2DNode40.b; + float clampResult49 = clamp( ( Mask56 * ( Gradient58 + (_RemapMin + (_Multiplier - 0.0) * (_RemapMax - _RemapMin) / (1.0 - 0.0)) ) ) , 0.0 , 1.0 ); + float4 lerpResult37 = lerp( tex2D( _Albedo, uv_Albedo ) , ( _NewColor * GreyScale57 ) , clampResult49); + o.Albedo = lerpResult37.rgb; + float2 uv_Smoothness = i.uv_texcoord * _Smoothness_ST.xy + _Smoothness_ST.zw; + o.Smoothness = tex2D( _Smoothness, uv_Smoothness ).r; + o.Alpha = 1; + #ifdef _OPACITYMASK_ON + float staticSwitch62 = Mask56; + #else + float staticSwitch62 = 1.0; + #endif + clip( staticSwitch62 - _Cutoff ); + } + + ENDCG + } + Fallback "Diffuse" + CustomEditor "ASEMaterialInspector" +} +/*ASEBEGIN +Version=16301 +-1913;41;1906;904;2697.262;385.5416;1.738442;True;True +Node;AmplifyShaderEditor.SamplerNode;40;-3308.219,121.9752;Float;True;Property;_Mask;Mask;3;0;Create;True;0;0;False;0;None;e7d9151c9febbf644bde373c46578f65;True;0;False;black;Auto;False;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 +Node;AmplifyShaderEditor.RangedFloatNode;66;-2319.11,529.9472;Float;False;Property;_RemapMin;Remap Min;6;0;Create;True;0;0;False;0;0;0;0;0;0;1;FLOAT;0 +Node;AmplifyShaderEditor.RangedFloatNode;67;-2317.577,621.9814;Float;False;Property;_RemapMax;Remap Max;7;0;Create;True;0;0;False;0;1;1;0;0;0;1;FLOAT;0 +Node;AmplifyShaderEditor.RangedFloatNode;17;-2420.317,447.0833;Float;False;Property;_Multiplier;Multiplier;5;0;Create;True;0;0;False;0;0;0;0;1;0;1;FLOAT;0 +Node;AmplifyShaderEditor.RegisterLocalVarNode;58;-2932.687,259.9786;Float;False;Gradient;-1;True;1;0;FLOAT;0;False;1;FLOAT;0 +Node;AmplifyShaderEditor.RegisterLocalVarNode;56;-2929.621,75.90977;Float;False;Mask;-1;True;1;0;FLOAT;0;False;1;FLOAT;0 +Node;AmplifyShaderEditor.GetLocalVarNode;61;-2093.632,353.5475;Float;False;58;Gradient;1;0;OBJECT;0;False;1;FLOAT;0 +Node;AmplifyShaderEditor.TFHCRemapNode;53;-2103.26,450.3091;Float;False;5;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;1;False;3;FLOAT;0;False;4;FLOAT;1;False;1;FLOAT;0 +Node;AmplifyShaderEditor.SimpleAddOpNode;47;-1852.525,396.3673;Float;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0 +Node;AmplifyShaderEditor.RegisterLocalVarNode;57;-2932.687,163.3426;Float;False;GreyScale;-1;True;1;0;FLOAT;0;False;1;FLOAT;0 +Node;AmplifyShaderEditor.GetLocalVarNode;59;-1927.977,144.9355;Float;False;56;Mask;1;0;OBJECT;0;False;1;FLOAT;0 +Node;AmplifyShaderEditor.GetLocalVarNode;60;-1464.73,-192.5235;Float;False;57;GreyScale;1;0;OBJECT;0;False;1;FLOAT;0 +Node;AmplifyShaderEditor.ColorNode;23;-1481.814,-381.4917;Float;False;Property;_NewColor;New Color;4;0;Create;True;0;0;False;0;1,1,1,1;1,0,0.5997324,1;True;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 +Node;AmplifyShaderEditor.SimpleMultiplyOpNode;44;-1654.714,30.30221;Float;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0 +Node;AmplifyShaderEditor.ClampOpNode;49;-1475.303,6.989078;Float;False;3;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;1;False;1;FLOAT;0 +Node;AmplifyShaderEditor.GetLocalVarNode;65;-868.0339,539.1504;Float;False;56;Mask;1;0;OBJECT;0;False;1;FLOAT;0 +Node;AmplifyShaderEditor.RangedFloatNode;64;-832.7534,387.294;Float;False;Constant;_White;White;9;0;Create;True;0;0;False;0;1;0;0;0;0;1;FLOAT;0 +Node;AmplifyShaderEditor.SamplerNode;1;-896.2167,-467.1677;Float;True;Property;_Albedo;Albedo;0;0;Create;True;0;0;False;0;None;7f1bb6af05d718f48af775047bd04b4f;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 +Node;AmplifyShaderEditor.SimpleMultiplyOpNode;38;-1105.531,-227.9056;Float;False;2;2;0;COLOR;0,0,0,0;False;1;FLOAT;0;False;1;COLOR;0 +Node;AmplifyShaderEditor.SamplerNode;2;-540.3304,-42.06005;Float;True;Property;_Normal;Normal;1;0;Create;True;0;0;False;0;None;5553ee8a4e29ebe4db63964308557f7e;True;0;True;bump;Auto;True;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 +Node;AmplifyShaderEditor.LerpOp;37;-414.3218,-176.3671;Float;False;3;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;2;FLOAT;0;False;1;COLOR;0 +Node;AmplifyShaderEditor.SamplerNode;3;-537.3937,163.1603;Float;True;Property;_Smoothness;Smoothness;2;0;Create;True;0;0;False;0;None;71b48a5f1f9284144afd3ecc727acec1;True;0;False;black;Auto;False;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 +Node;AmplifyShaderEditor.StaticSwitch;62;-496.8282,433.3114;Float;False;Property;_OpacityMask;Opacity Mask;8;0;Create;True;0;0;False;0;0;0;0;True;;Toggle;2;Key0;Key1;9;1;FLOAT;0;False;0;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;4;FLOAT;0;False;5;FLOAT;0;False;6;FLOAT;0;False;7;FLOAT;0;False;8;FLOAT;0;False;1;FLOAT;0 +Node;AmplifyShaderEditor.StandardSurfaceOutputNode;0;12.78892,-25.57785;Float;False;True;3;Float;ASEMaterialInspector;0;0;Standard;MajorProject/ColorMask;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;Back;0;False;-1;0;False;-1;False;0;False;-1;0;False;-1;False;0;Masked;0.5;True;True;0;False;TransparentCutout;;AlphaTest;All;True;True;True;True;True;True;True;True;True;True;True;True;True;True;True;True;True;0;False;-1;False;0;False;-1;255;False;-1;255;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;False;2;15;10;25;False;0.5;True;0;0;False;-1;0;False;-1;0;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;0;0,0,0,0;VertexOffset;True;False;Cylindrical;False;Relative;0;;9;-1;-1;-1;0;False;0;0;False;-1;-1;0;False;-1;0;0;0;False;0.1;False;-1;0;False;-1;16;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;3;FLOAT;0;False;4;FLOAT;0;False;5;FLOAT;0;False;6;FLOAT3;0,0,0;False;7;FLOAT3;0,0,0;False;8;FLOAT;0;False;9;FLOAT;0;False;10;FLOAT;0;False;13;FLOAT3;0,0,0;False;11;FLOAT3;0,0,0;False;12;FLOAT3;0,0,0;False;14;FLOAT4;0,0,0,0;False;15;FLOAT3;0,0,0;False;0 +WireConnection;58;0;40;3 +WireConnection;56;0;40;1 +WireConnection;53;0;17;0 +WireConnection;53;3;66;0 +WireConnection;53;4;67;0 +WireConnection;47;0;61;0 +WireConnection;47;1;53;0 +WireConnection;57;0;40;2 +WireConnection;44;0;59;0 +WireConnection;44;1;47;0 +WireConnection;49;0;44;0 +WireConnection;38;0;23;0 +WireConnection;38;1;60;0 +WireConnection;37;0;1;0 +WireConnection;37;1;38;0 +WireConnection;37;2;49;0 +WireConnection;62;1;64;0 +WireConnection;62;0;65;0 +WireConnection;0;0;37;0 +WireConnection;0;1;2;0 +WireConnection;0;4;3;0 +WireConnection;0;10;62;0 +ASEEND*/ +//CHKSM=E703D98EAA5182A09A8F04184916C8E4E717C59A \ No newline at end of file diff --git a/Assets/Materials/Shaders/ColorMask.shader.meta b/Assets/Materials/Shaders/ColorMask.shader.meta new file mode 100644 index 0000000..03a17be --- /dev/null +++ b/Assets/Materials/Shaders/ColorMask.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ce792a77c9d4bdd41b4a3bbada679045 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/GameManager.prefab b/Assets/Prefabs/GameManager.prefab index 7e67977..037722b 100644 --- a/Assets/Prefabs/GameManager.prefab +++ b/Assets/Prefabs/GameManager.prefab @@ -10,7 +10,6 @@ GameObject: m_Component: - component: {fileID: 1698745550996942701} - component: {fileID: 1698745550996942698} - - component: {fileID: 1698745550996942699} m_Layer: 0 m_Name: GameManager m_TagString: Untagged @@ -45,21 +44,8 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: AnimationTime: 1 - CurrentGameMode: {fileID: 1698745550996942699} + CurrentGameMode: {fileID: 11400000, guid: be8c78868a86aad448fd14e46bd40e51, type: 2} characterPrefab: {fileID: 2862111851184665482, guid: c176f4ae8f7b4074db99b27b2e015a2a, type: 3} server: {fileID: 11400000, guid: aba6c842adfc9904dba334cb48257361, type: 2} ClientList: {fileID: 11400000, guid: ded0b21c3ef1e7049a1128c12e9401fe, type: 2} ---- !u!114 &1698745550996942699 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1698745550996942700} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 409aae8124657b749a57c1c665917371, type: 3} - m_Name: - m_EditorClassIdentifier: - MaxRound: 5 diff --git a/Assets/Prefabs/UI/Logic Element For.prefab b/Assets/Prefabs/UI/Logic Element For.prefab new file mode 100644 index 0000000..71bc406 --- /dev/null +++ b/Assets/Prefabs/UI/Logic Element For.prefab @@ -0,0 +1,251 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &995834699587958428 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 315265088473579728} + - component: {fileID: 8830634564332075202} + - component: {fileID: 8680666039847169627} + - component: {fileID: 4922755785039726207} + m_Layer: 5 + m_Name: Logic Element For + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &315265088473579728 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 995834699587958428} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2825904309766046644} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 57.750065, y: -57.349976} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8830634564332075202 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 995834699587958428} + m_CullTransparentMesh: 0 +--- !u!114 &8680666039847169627 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 995834699587958428} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!114 &4922755785039726207 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 995834699587958428} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7107813cded9af9409ab112a20b5fc65, type: 3} + m_Name: + m_EditorClassIdentifier: + LogicElement: {fileID: 0} +--- !u!1 &8739916369872115426 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2825904309766046644} + - component: {fileID: 8242920397958318725} + - component: {fileID: 4794918698464335520} + m_Layer: 5 + m_Name: TextMeshPro Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2825904309766046644 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8739916369872115426} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 315265088473579728} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: -10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8242920397958318725 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8739916369872115426} + m_CullTransparentMesh: 0 +--- !u!114 &4794918698464335520 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8739916369872115426} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_text: Logic + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 37.6 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 514 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 4794918698464335520} + characterCount: 5 + spriteCount: 0 + spaceCount: 0 + wordCount: 1 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} diff --git a/Assets/Prefabs/UI/Logic Element For.prefab.meta b/Assets/Prefabs/UI/Logic Element For.prefab.meta new file mode 100644 index 0000000..b187332 --- /dev/null +++ b/Assets/Prefabs/UI/Logic Element For.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ea33f57b7c744cd48a020596f0ae72f5 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Client Scenes/ClientScene.unity b/Assets/Scenes/Client Scenes/ClientScene.unity index 831ba91..821bcec 100644 --- a/Assets/Scenes/Client Scenes/ClientScene.unity +++ b/Assets/Scenes/Client Scenes/ClientScene.unity @@ -112,18 +112,6 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!114 &760546447 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 5195354183157824118, guid: 3fbc9b76d5c4f7348b60a029bc2ba63f, - type: 3} - m_PrefabInstance: {fileID: 5195354181466942481} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 140e56929e1450a48b2f7716511bb327, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!1 &1254212986 GameObject: m_ObjectHideFlags: 0 @@ -193,6 +181,29 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1324620580 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5195354183101525344, guid: 3fbc9b76d5c4f7348b60a029bc2ba63f, + type: 3} + m_PrefabInstance: {fileID: 5195354181466942481} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1324620581 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324620580} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 140e56929e1450a48b2f7716511bb327, type: 3} + m_Name: + m_EditorClassIdentifier: + Prefab: {fileID: 6973439230367005604, guid: f1daf3f500b22a048bbbad4287c2fcb2, type: 3} + insertIndex: -1 + content: {fileID: 1704581577} + reader: + LogicChain: [] --- !u!1 &1352513146 GameObject: m_ObjectHideFlags: 0 @@ -275,6 +286,12 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!224 &1704581577 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 5195354181806561359, guid: 3fbc9b76d5c4f7348b60a029bc2ba63f, + type: 3} + m_PrefabInstance: {fileID: 5195354181466942481} + m_PrefabAsset: {fileID: 0} --- !u!114 &1804173232 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 5195354183134146528, guid: 3fbc9b76d5c4f7348b60a029bc2ba63f, @@ -473,7 +490,7 @@ PrefabInstance: - target: {fileID: 5195354181806561359, guid: 3fbc9b76d5c4f7348b60a029bc2ba63f, type: 3} propertyPath: m_AnchoredPosition.y - value: -0.000008558129 + value: -0.000013713701 objectReference: {fileID: 0} - target: {fileID: 5195354181806561359, guid: 3fbc9b76d5c4f7348b60a029bc2ba63f, type: 3} @@ -612,6 +629,7 @@ PrefabInstance: objectReference: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} m_RemovedComponents: - {fileID: 5195354182462625307, guid: 3fbc9b76d5c4f7348b60a029bc2ba63f, type: 3} + - {fileID: 5195354183157824118, guid: 3fbc9b76d5c4f7348b60a029bc2ba63f, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 3fbc9b76d5c4f7348b60a029bc2ba63f, type: 3} --- !u!1 &5195354181466942482 stripped GameObject: @@ -633,5 +651,5 @@ MonoBehaviour: m_EditorClassIdentifier: Inventory: {fileID: 1804173232} AnimationSpeed: 0.5 - TrayUI: {fileID: 760546447} + TrayUI: {fileID: 1324620581} Client: {fileID: 11400000, guid: 8dca4719b56d91143b236583a436c911, type: 2} diff --git a/Assets/Scenes/Server Scenes/ServerTestScene.unity b/Assets/Scenes/Server Scenes/ServerTestScene.unity index b6fd71e..1764394 100644 --- a/Assets/Scenes/Server Scenes/ServerTestScene.unity +++ b/Assets/Scenes/Server Scenes/ServerTestScene.unity @@ -2778,3 +2778,42 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: a199dd5d5f6e9ad48966d0d0a8961305, type: 3} +--- !u!1 &1698745552051899335 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1698745550996942700, guid: a199dd5d5f6e9ad48966d0d0a8961305, + type: 3} + m_PrefabInstance: {fileID: 1698745552051899334} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1698745552051899336 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1698745552051899335} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 96bf274f514b09741a0ff748fef480f0, type: 3} + m_Name: + m_EditorClassIdentifier: + Reference: {fileID: 11400000, guid: be8c78868a86aad448fd14e46bd40e51, type: 2} + OnRoundStart: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnPlayersMoved: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnRoundEnd: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + OnGameOver: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null diff --git a/Assets/Models.meta b/Assets/Scripts/Components.meta similarity index 77% rename from Assets/Models.meta rename to Assets/Scripts/Components.meta index 5346456..5a95b09 100644 --- a/Assets/Models.meta +++ b/Assets/Scripts/Components.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 296bd90e667df1f4697823a0aa45acf0 +guid: 8d7394d70ec233849a60a26da5f23b75 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Scripts/GameMode/ColorGameMode.cs b/Assets/Scripts/GameMode/ColorGameMode.cs deleted file mode 100644 index 8e62deb..0000000 --- a/Assets/Scripts/GameMode/ColorGameMode.cs +++ /dev/null @@ -1,112 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using Networking.Server; -using TMPro; -using UnityEngine.UI; - -public class ColorGameMode : GameMode -{ - - public int MaxRound = 5; - private int RoundCount = 0; - - public GameObject counterScore; - public GameObject colorCube; - private int counter = 1; - private GameObject[] objs; - public Texture playerTexture; - private LayerMask Ignore; - - public List ConnectedClients; - public GameObject levelScoreboard; - public GameObject[] players = new GameObject[4]; - public GameObject[] scores = new GameObject[4]; - - public ScoreBoard mainscoreboard; - - void Start(){ - counterScore.GetComponent().text = counter.ToString(); - objs = GameObject.FindGameObjectsWithTag("Coloured"); - } - - /// - /// Called once all players have finished their moves but before the Objective is checked - /// - public override void OnRoundFinished() - { - RoundCount++; - } - - /// - /// Checks if the Game is finished - /// - /// returns if game is finished - public override bool isGameOver() - { - return (RoundCount <= MaxRound); - } - - /// - /// couroutine to display level scores - /// - IEnumerator displayforSeconds(GameObject display, float time) - { - display.SetActive (true); - yield return new WaitForSeconds(time); - display.SetActive (false); - mainscoreboard.endGame(); - } - - /// - /// calculates and assigns scores in desc order, call coroutine - /// - public void levelComplete(ClientList clientDataList) - { - ConnectedClients = clientDataList.ConnectedClients; - ConnectedClients.Sort((a, b) => b.collected.CompareTo(a.collected)); - - for (int i = 0; i().text = ConnectedClients[i].Name; - scores[i].GetComponent().text = ConnectedClients[i].collected.ToString(); - } - StartCoroutine(displayforSeconds(levelScoreboard, 10.0f)); - } - - - /// - /// Called once per player after they have moved onto a block - /// - /// Character which moved - /// Client of the character - /// Block moved onto - public override void OnPlayerFinishedMove(Character character, ClientData client, Block currentBlock) - { - string clientTexture = client.Color + "Grass"; - playerTexture = Resources.Load(clientTexture); - //Resources.Load(clientTexture); - - - //Code for changing block color; - //Block.isBlockAtPosition(transform.position + Vector3.down / 2, 0.5f, ~Ignore, out CurrentBlock); - - Renderer abc = currentBlock.GetComponent(); - if(abc.material.GetTexture("_Albedo") != playerTexture){ - abc.material.SetTexture("_Albedo", playerTexture); - } - - //Code for updating player scores; - colorCube.GetComponent().color = client.Color; - counter = 1; - - foreach(GameObject a in objs){ - abc = a.GetComponent(); - if (abc.material.GetTexture("_Albedo") == playerTexture) - { - counter++; - } - } - counterScore.GetComponent().text = counter.ToString(); - client.collected = counter; - } -} diff --git a/Assets/Scripts/LogicBlocks.meta b/Assets/Scripts/GameMode/ColorGameMode.meta similarity index 77% rename from Assets/Scripts/LogicBlocks.meta rename to Assets/Scripts/GameMode/ColorGameMode.meta index 98af9d1..0466112 100644 --- a/Assets/Scripts/LogicBlocks.meta +++ b/Assets/Scripts/GameMode/ColorGameMode.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8936b441d7647f74884c94f97bfb8931 +guid: e251164a6e5cf944faa5e01f8dc9e2d4 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Scripts/GameMode/ColorGameMode/ColorGameMode.cs b/Assets/Scripts/GameMode/ColorGameMode/ColorGameMode.cs new file mode 100644 index 0000000..3fddbd7 --- /dev/null +++ b/Assets/Scripts/GameMode/ColorGameMode/ColorGameMode.cs @@ -0,0 +1,137 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Networking.Server; +using TMPro; +using UnityEngine.UI; + +[CreateAssetMenu(menuName = "Major Project/GameModes/Color Collide", order = 201)] +public class ColorGameMode : GameMode +{ + + public int MaxRound = 5; + public Material OverlayMaterial; + + + private int RoundCount = 0; + private Dictionary> BlocksOwned; + + /// + /// Called once all players have finished their moves but before the Objective is checked + /// + protected override void OnRoundEnd(PlayerData[] allPlayers) + { + RoundCount++; + } + + /// + /// Checks if the Game is finished + /// + /// returns if game is finished + public override bool isGameOver(PlayerData[] allPlayers) + { + return (RoundCount <= MaxRound); + } + + + /// + /// Called once per player after they have moved onto a block + /// + /// Character which moved + /// Client of the character + /// Block moved onto + protected override void OnPlayerFinishedMove(Character character, ClientData client, Block currentBlock) + { + ClientData OwnedClient; + Material overlay = null; + if (isOwned(currentBlock, out OwnedClient)) + { + if (OwnedClient == client) + return; + + BlocksOwned[OwnedClient].Remove(currentBlock); + + foreach (Material mat in currentBlock.GetComponent().materials) + { + if (mat.name == OverlayMaterial.name + " (Instance)") + overlay = mat; + } + } + + if (overlay == null) + { + overlay = new Material(OverlayMaterial); + List mats = new List(currentBlock.GetComponent().materials); + mats.Add(overlay); + currentBlock.GetComponent().materials = mats.ToArray(); + } + + overlay.SetColor("_NewColor", client.Color); + + if (!BlocksOwned.ContainsKey(client)) + BlocksOwned.Add(client, new List()); + + BlocksOwned[client].Add(currentBlock); + + if (overlay != null) + currentBlock.StartCoroutine(AnimateBlock(overlay, 0.25f)); + } + + protected override void OnRoundStart(PlayerData[] allPlayers) + { + + } + + protected override void OnAllPlayersFinishedMove(PlayerData[] allPlayers) + { + foreach (PlayerData player in allPlayers) + { + if (BlocksOwned.ContainsKey(player.client)) + player.client.collected = BlocksOwned[player.client].Count; + else + player.client.collected = 0; + } + } + + protected override void OnGameOver(PlayerData[] allPlayers) + { + throw new System.NotImplementedException(); + } + + private bool isOwned(Block block, out ClientData client) + { + client = null; + + foreach (KeyValuePair> ownedList in BlocksOwned) + { + if (ownedList.Value.Contains(block)) + { + client = ownedList.Key; + return true; + } + } + + return false; + } + + private IEnumerator AnimateBlock(Material mat, float time) + { + + float timeElasped = 0; + + while (timeElasped < time) + { + mat.SetFloat("_Multiplier", (timeElasped / time)); + yield return new WaitForEndOfFrame(); + + timeElasped += Time.deltaTime; + } + + mat.SetFloat("_Multiplier", 1); + } + + protected override void OnGameStart(PlayerData[] allPlayers) + { + BlocksOwned = new Dictionary>(); + } +} diff --git a/Assets/Scripts/GameMode/ColorGameMode.cs.meta b/Assets/Scripts/GameMode/ColorGameMode/ColorGameMode.cs.meta similarity index 100% rename from Assets/Scripts/GameMode/ColorGameMode.cs.meta rename to Assets/Scripts/GameMode/ColorGameMode/ColorGameMode.cs.meta diff --git a/Assets/Scripts/GameMode/ColorGameMode/ScoreDisplay.cs b/Assets/Scripts/GameMode/ColorGameMode/ScoreDisplay.cs new file mode 100644 index 0000000..e84e611 --- /dev/null +++ b/Assets/Scripts/GameMode/ColorGameMode/ScoreDisplay.cs @@ -0,0 +1,47 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using TMPro; +using Networking.Server; + +public class ScoreDisplay : MonoBehaviour +{ + + public List ConnectedClients; + + public GameObject levelScoreboard; + public GameObject[] players = new GameObject[4]; + public GameObject[] scores = new GameObject[4]; + + public ScoreBoard mainscoreboard; + + /// + /// calculates and assigns scores in desc order, call coroutine + /// + public void levelComplete(ClientList clientDataList) + { + ConnectedClients = clientDataList.ConnectedClients; + ConnectedClients.Sort((a, b) => b.collected.CompareTo(a.collected)); + + for (int i = 0; i < ConnectedClients.Count; i++) + { + players[i].GetComponent().text = ConnectedClients[i].Name; + scores[i].GetComponent().text = ConnectedClients[i].collected.ToString(); + } + StartCoroutine(displayforSeconds(levelScoreboard, 10.0f)); + } + + /// + /// couroutine to display level scores + /// + IEnumerator displayforSeconds(GameObject display, float time) + { + display.SetActive(true); + yield return new WaitForSeconds(time); + display.SetActive(false); + mainscoreboard.endGame(); + } + + + +} diff --git a/Assets/Scripts/GameMode/ColorGameMode/ScoreDisplay.cs.meta b/Assets/Scripts/GameMode/ColorGameMode/ScoreDisplay.cs.meta new file mode 100644 index 0000000..6e36a17 --- /dev/null +++ b/Assets/Scripts/GameMode/ColorGameMode/ScoreDisplay.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7e9077bfe1c064a4eab073c33f756ebf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GameMode/GameMode.cs b/Assets/Scripts/GameMode/GameMode.cs index c5bb4bb..3b04623 100644 --- a/Assets/Scripts/GameMode/GameMode.cs +++ b/Assets/Scripts/GameMode/GameMode.cs @@ -6,11 +6,19 @@ using Networking.Server; public abstract class GameMode : ScriptableObject { + + [SerializeField] + [Tooltip("Scene to load which contains Gamemode UI")] + private string GameModeScene; + public Action RoundStartEvent; public Action AllPlayersMovedEvent; public Action RoundEndEvent; public Action OnGameOverEvent; + + protected abstract void OnGameStart(PlayerData[] allPlayers); + /// /// Called at the beginning of a new Round /// @@ -32,16 +40,23 @@ public abstract class GameMode : ScriptableObject public abstract bool isGameOver(PlayerData[] allPlayers); - public abstract void OnRoundEnd(PlayerData[] allPlayers); + protected abstract void OnRoundEnd(PlayerData[] allPlayers); - public abstract void OnGameOver(PlayerData[] allPlayers); + protected abstract void OnGameOver(PlayerData[] allPlayers); + public void GameStart(PlayerData[] allPlayers) + { + if (!String.IsNullOrEmpty(GameModeScene)) + UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(GameModeScene); + + OnGameStart(allPlayers); + } public void RoundStart(PlayerData[] allPlayers) { OnRoundStart(allPlayers); - RoundStartEvent.Invoke(); + RoundStartEvent?.Invoke(); } public void FinishedMove(PlayerData[] allPlayers) @@ -50,18 +65,18 @@ public abstract class GameMode : ScriptableObject OnPlayerFinishedMove(player.character, player.client, player.character.CurrentBlock); OnAllPlayersFinishedMove(allPlayers); - AllPlayersMovedEvent.Invoke(); + AllPlayersMovedEvent?.Invoke(); } public void RoundEnd(PlayerData[] allPlayers) { OnRoundEnd(allPlayers); - RoundEndEvent.Invoke(); + RoundEndEvent?.Invoke(); } public void GameOver(PlayerData[] allPlayers) { OnGameOver(allPlayers); - OnGameOverEvent.Invoke(); + OnGameOverEvent?.Invoke(); } } diff --git a/Assets/Scripts/Logic/Blocks/CombinedBlock.cs b/Assets/Scripts/Logic/Blocks/CombinedBlock.cs index f9cae82..6ceb1c3 100644 --- a/Assets/Scripts/Logic/Blocks/CombinedBlock.cs +++ b/Assets/Scripts/Logic/Blocks/CombinedBlock.cs @@ -7,6 +7,10 @@ using UnityEngine; public class CombinedBlock : LogicBlock { #region Inspector Variables + [SerializeField] + [Tooltip("Is this block editable")] + protected bool isEditable = false; + [SerializeField] [Tooltip("Blocks this will run through")] protected BlockReader blockReader; @@ -56,6 +60,13 @@ public class CombinedBlock : LogicBlock blockReader.Reset(); } + + public override void OnDoubleClick() + { + base.OnDoubleClick(); + } + + #region Serialisation Functions public override void CopyToken(BlockToken token) { base.CopyToken(token); @@ -79,6 +90,7 @@ public class CombinedBlock : LogicBlock return retVal; } + #endregion Serialisation Functions } diff --git a/Assets/Scripts/Logic/Blocks/LogicBlock.cs b/Assets/Scripts/Logic/Blocks/LogicBlock.cs index 7ac8f1e..3115d52 100644 --- a/Assets/Scripts/Logic/Blocks/LogicBlock.cs +++ b/Assets/Scripts/Logic/Blocks/LogicBlock.cs @@ -27,6 +27,11 @@ public abstract class LogicBlock : ScriptableObject [SerializeField] [Tooltip("Amount of times to run this Block before moving to next")] protected int RepeatAmount = 1; + + [SerializeField] + [Tooltip("UI Object which is spawned as object")] + public LogicElementUI UIPrefab; + #endregion Inspector Fields #region ReadOnly Variables @@ -42,7 +47,6 @@ public abstract class LogicBlock : ScriptableObject #endregion private variables - #region Class Functions /// /// Runs the block @@ -100,6 +104,11 @@ public abstract class LogicBlock : ScriptableObject } + #region Serialisation Functions + /// + /// Copies data from BlockToken to this Block + /// + /// Token to Copy public virtual void CopyToken(BlockToken token) { Color = token.Color; @@ -109,6 +118,11 @@ public abstract class LogicBlock : ScriptableObject name = token.ObjectName; } + /// + /// Copies Block data to supplied token, if token is null creates new token + /// + /// token to copy data to + /// public virtual BlockToken ToToken(BlockToken token = null) { if (token == null) @@ -121,7 +135,13 @@ public abstract class LogicBlock : ScriptableObject return token; } + #endregion Serialisation Functions + + public virtual void OnDoubleClick() + { + + } #endregion Class Functions } diff --git a/Assets/Scripts/Managers/GameManager.cs b/Assets/Scripts/Managers/GameManager.cs index e97e780..a3df099 100644 --- a/Assets/Scripts/Managers/GameManager.cs +++ b/Assets/Scripts/Managers/GameManager.cs @@ -14,7 +14,7 @@ public class GameManager : MonoBehaviour [SerializeField] private float AnimationTime; [SerializeField] - private GameMode CurrentGameMode; + private GameModeReference CurrentGameMode; [Header("References")] @@ -33,12 +33,19 @@ public class GameManager : MonoBehaviour #region Private Variables private Dictionary playerData; + private GameMode gamemode; #endregion Private Variables + #region Read Only + private IEnumerable playerArray { get { return playerData.Values; } } + #endregion Read Only + public void Awake() { + gamemode = CurrentGameMode.Value; RegisterHandlers(); SpawnCharacters(); + gamemode.GameStart(playerArray.ToArray()); } private void Update() @@ -74,12 +81,12 @@ public class GameManager : MonoBehaviour private IEnumerator RoundRoutine() { - playerData.ForEach(p => p.Value.recievedList = false); + playerArray.ForEach(p => p.recievedList = false); - while (playerData.Any(p => !p.Value.blockReader.Finished)) + while (playerArray.Any(p => !p.blockReader.Finished)) { - foreach (PlayerData player in playerData.Values) + foreach (PlayerData player in playerArray) { if (!player.waiting) { @@ -89,22 +96,24 @@ public class GameManager : MonoBehaviour yield return new WaitForSeconds(AnimationTime); - foreach(KeyValuePair player in playerData) + gamemode.FinishedMove(playerArray.ToArray()); + + if (playerArray.All(p => p.waiting)) { - ClientData client = ClientList.ConnectedClients.First(p => p.ID == player.Key); - CurrentGameMode.OnPlayerFinishedMove(player.Value.character, client, player.Value.character.CurrentBlock); + playerArray.ForEach(p => p.waiting = false); + Debug.Log("Finished one move"); } - if (playerData.All(p => p.Value.waiting)) + if (gamemode.isGameOver(playerArray.ToArray())) { - playerData.ForEach(p => p.Value.waiting = false); - Debug.Log("Finished one move"); + Debug.Log("Game Over"); } } - CurrentGameMode.OnRoundFinished(); - CurrentGameMode.isGameOver(); + gamemode.RoundEnd(playerArray.ToArray()); + foreach (PlayerData player in playerArray) + player.blockReader.Reset(); Debug.Log("Finished Moving"); } @@ -129,12 +138,7 @@ public class GameManager : MonoBehaviour private void RegisterHandlers() { server.server.RegisterHandler(LogicProtocols.SendLogicList, RecieveLogicList); - } - - - - - + } } public class PlayerData diff --git a/Assets/Scripts/UI/BagItem.cs b/Assets/Scripts/UI/BagItem.cs index ff6a6d4..22e3758 100644 --- a/Assets/Scripts/UI/BagItem.cs +++ b/Assets/Scripts/UI/BagItem.cs @@ -7,9 +7,6 @@ using TMPro; public class BagItem : LogicElementHolder { #region Inspector Elements - [SerializeField] - private LogicElementUI LogicElementPrefab; - [SerializeField] private Transform LogicElementLocation; #endregion Inspector Elements @@ -18,6 +15,7 @@ public class BagItem : LogicElementHolder private int Count; protected Inventory.Data InventoryData; private TextMeshProUGUI CountText; + private LogicElementUI LogicElementPrefab; #endregion Private Variables #region Class Functionality @@ -25,6 +23,7 @@ public class BagItem : LogicElementHolder public void Initialise(Inventory.Data data) { InventoryData = data; + LogicElementPrefab = data.element.UIPrefab; if (CountText == null) CountText = GetComponentInChildren(); @@ -81,6 +80,18 @@ public class BagItem : LogicElementHolder UpdateUI(); } + + /// + /// Called when an element in this holder is double clicked + /// + /// element which was double clicked + public override void OnDoubleClick(LogicElementUI element) + { + + } + + + #endregion LogicElementHolder Implementation } diff --git a/Assets/Scripts/UI/ComplexLogicElementUI.cs b/Assets/Scripts/UI/ComplexLogicElementUI.cs new file mode 100644 index 0000000..3b556f5 --- /dev/null +++ b/Assets/Scripts/UI/ComplexLogicElementUI.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ComplexLogicElementUI : LogicElementUI +{ + public CombinedBlock combinedFunction { get { return LogicElement as CombinedBlock; } } + + + public override void UpdateUI() + { + base.UpdateUI(); + //transform.localScale += Vector3.right * LogicElement.Size(); + } + + + + +} diff --git a/Assets/Scripts/UI/ComplexLogicElementUI.cs.meta b/Assets/Scripts/UI/ComplexLogicElementUI.cs.meta new file mode 100644 index 0000000..5c72990 --- /dev/null +++ b/Assets/Scripts/UI/ComplexLogicElementUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7107813cded9af9409ab112a20b5fc65 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/Dragable.cs b/Assets/Scripts/UI/Dragable.cs index 9c30626..6359253 100644 --- a/Assets/Scripts/UI/Dragable.cs +++ b/Assets/Scripts/UI/Dragable.cs @@ -3,10 +3,12 @@ using UnityEngine.EventSystems; using UnityEngine.UI; [RequireComponent(typeof(Image))] -public class Dragable : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler +public class Dragable : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler, IPointerClickHandler { protected RectTransform m_DraggingPlane; + private float lastClickTime = -1; + public virtual void OnBeginDrag(PointerEventData eventData) { var canvas = FindInParents(gameObject); @@ -56,4 +58,15 @@ public class Dragable : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag } return comp; } + + public void OnPointerClick(PointerEventData eventData) + { + if (Time.time - lastClickTime <= 0.5f) + OnDoubleClick(); + + lastClickTime = Time.time; + } + + protected virtual void OnDoubleClick() { } + } \ No newline at end of file diff --git a/Assets/Scripts/UI/ILogicElementHolder.cs b/Assets/Scripts/UI/ILogicElementHolder.cs index 25d329b..fa88155 100644 --- a/Assets/Scripts/UI/ILogicElementHolder.cs +++ b/Assets/Scripts/UI/ILogicElementHolder.cs @@ -56,6 +56,14 @@ public abstract class LogicElementHolder : MonoBehaviour /// /// Element which is hovering public virtual void OnHoverEnd(LogicElementUI element) { } + + /// + /// Called when an element in this holder is double clicked + /// + /// element which was double clicked + public abstract void OnDoubleClick(LogicElementUI element); + + #endregion Class Funtions #region Static Functions diff --git a/Assets/Scripts/UI/LogicElementUI.cs b/Assets/Scripts/UI/LogicElementUI.cs index 3a45dd0..ea7e057 100644 --- a/Assets/Scripts/UI/LogicElementUI.cs +++ b/Assets/Scripts/UI/LogicElementUI.cs @@ -128,6 +128,12 @@ public class LogicElementUI : Dragable currentHolder.OnAdd(this); } + + protected override void OnDoubleClick() + { + base.OnDoubleClick(); + currentHolder.OnDoubleClick(this); + } #endregion Drag Implementaion } diff --git a/Assets/Scripts/UI/LogicTrayUI.cs b/Assets/Scripts/UI/LogicTrayUI.cs index 5d69df7..d9320f2 100644 --- a/Assets/Scripts/UI/LogicTrayUI.cs +++ b/Assets/Scripts/UI/LogicTrayUI.cs @@ -140,6 +140,15 @@ public class LogicTrayUI : LogicElementHolder } #endregion LogicElementHolder Implementation + /// + /// Called when an element in this holder is double clicked + /// + /// element which was double clicked + public override void OnDoubleClick(LogicElementUI element) + { + throw new System.NotImplementedException(); + } + #region Helper Functions public int GetInsertIndex(RectTransform rt) @@ -156,6 +165,7 @@ public class LogicTrayUI : LogicElementHolder return reader.LogicChain.Count; } + #endregion Helper Functions } diff --git a/Assets/Textures/GroundWGrass_Mask.jpg b/Assets/Textures/GroundWGrass_Mask.jpg new file mode 100644 index 0000000..6070572 --- /dev/null +++ b/Assets/Textures/GroundWGrass_Mask.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29bc233eac5aa4cfe888ecebb366cede8b7302a5e27346613beeaaa1eb604b02 +size 1698696 diff --git a/Assets/Textures/GroundWGrass_Mask.jpg.meta b/Assets/Textures/GroundWGrass_Mask.jpg.meta new file mode 100644 index 0000000..39798a3 --- /dev/null +++ b/Assets/Textures/GroundWGrass_Mask.jpg.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 4cc972a8190637f429988d776be4bfe1 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: