Compare commits

..

64 Commits

Author SHA1 Message Date
Sri Sham Haran 0f7d86543f Fix adaptive bgm not changing on alert 2023-04-02 18:16:25 +08:00
Glence 8ffca03f16 AI fix 2023-04-02 13:32:21 +08:00
XiaoQiDigipen 724f8ae2cf
Merge pull request #456 from SHADE-DP/Navigation
adjusted hitbox timing
2023-04-02 12:48:39 +08:00
maverickdgg f495dfe4fd adjusted hitbox timing 2023-04-02 12:34:47 +08:00
Glence e5c8f4c380 fix camera jittering 2023-04-01 21:30:18 +08:00
Glence f114a7f59a Scene changes for level preview 2023-04-01 21:06:12 +08:00
XiaoQiDigipen 273bdfcdcc
Merge pull request #455 from SHADE-DP/PlayerController
bug fixes
2023-04-01 19:18:29 +08:00
Glence 9b55d69f9a Merge branch 'main' into PlayerController 2023-04-01 19:14:38 +08:00
Glence 716087d15c small bug fixes 2023-04-01 19:14:30 +08:00
Xiao Qi 5c79bb7f9f Recompiled all shaders 2023-04-01 18:55:25 +08:00
XiaoQiDigipen f54448b5eb
Merge pull request #454 from SHADE-DP/PlayerController
Credits and Transition done
2023-04-01 18:09:04 +08:00
Glence 51f426868e credits and transition done 2023-04-01 18:07:22 +08:00
Glence 51867f0c5e Merge branch 'main' into PlayerController 2023-04-01 17:23:04 +08:00
Glence 96fd8295aa audio 2023-04-01 17:22:51 +08:00
XiaoQiDigipen a3c1993576
Merge pull request #453 from SHADE-DP/PlayerController
Level changes and bug fix
2023-04-01 16:43:19 +08:00
maverickdgg 483d8c7066 Added AI Humming 2023-04-01 16:41:38 +08:00
maverickdgg c643bd64f3 Added a space to skip 2023-04-01 16:32:56 +08:00
maverickdgg d5240b420d Credits scene 2023-04-01 16:31:23 +08:00
Glence cc9b7c20c4 Merge branch 'main' into PlayerController 2023-04-01 16:30:43 +08:00
Glence ce6288880a other stuff 2023-04-01 16:30:33 +08:00
Glence b2e38df969 Merge branch 'main' into PlayerController 2023-04-01 16:11:09 +08:00
XiaoQiDigipen 0dad2e9e9f
Merge pull request #451 from SHADE-DP/PlayerController
Scene changes
2023-04-01 16:11:08 +08:00
XiaoQiDigipen e9d0b01972
Merge pull request #452 from SHADE-DP/Navigation
Added HomeOwner VO and Raccoon Caught effect
2023-04-01 16:09:44 +08:00
Glence f70a41a9dc transition for level is done along with bug fix 2023-04-01 16:08:32 +08:00
maverickdgg 43c6a62186 Added UI changes to other scenes 2023-04-01 15:37:12 +08:00
maverickdgg 2e20b295b5 Added Homeowner VO and small UI changes 2023-04-01 15:36:02 +08:00
Glence 3e4794cebc Merge branch 'main' into PlayerController 2023-04-01 00:51:27 +08:00
Glence 191ed7de43 scene changes 2023-04-01 00:51:15 +08:00
XiaoQiDigipen fada41174d
Merge pull request #450 from SHADE-DP/PlayerController
New features done
2023-04-01 00:42:19 +08:00
Glence a76f2eca87 level clear done 2023-04-01 00:35:16 +08:00
Glence 5ed0219a0b WIP for level clear 2023-03-31 18:37:28 +08:00
XiaoQiDigipen 1c6def8e70
Merge pull request #449 from SHADE-DP/Navigation
Added CaughtRaccoon state to AI FSM
2023-03-31 17:05:28 +08:00
maverickdgg 9d8b94a5ab Merge branch 'main' into Navigation 2023-03-31 16:51:12 +08:00
XiaoQiDigipen 1838209ec2
Merge pull request #448 from SHADE-DP/SP3-20-UI-System
Gameplay and Main Menu UI Update
2023-03-31 15:07:19 +08:00
maverickdgg c335f58702 Updated Gameplay UI 2023-03-31 15:02:31 +08:00
maverickdgg af9e523da9 Gameplay UI Update 2023-03-31 14:50:25 +08:00
maverickdgg 6ee619d26e Added Slider SFX 2023-03-31 14:18:09 +08:00
maverickdgg b123cd83f8 Updated Main menu with correct slider scale and added fx for buttons 2023-03-31 14:14:44 +08:00
maverickdgg fdc261749e Merge branch 'main' into SP3-20-UI-System 2023-03-31 14:06:33 +08:00
XiaoQiDigipen 125f88bcac
Merge pull request #447 from SHADE-DP/SP3-1-Rendering
Implemented color decay, color range emission and custom VS and FS for particles
2023-03-30 19:37:33 +08:00
Brandon Mak 83955e4618 Merge remote-tracking branch 'origin/main' into SP3-1-Rendering 2023-03-30 19:15:12 +08:00
Brandon Mak 4d145bbc43 Added support for custom VS and FS for particles 2023-03-30 19:15:03 +08:00
maverickdgg c2a8c86483 Slider textures updated 2023-03-30 17:09:18 +08:00
maverickdgg 12bbce33e8 Slider WIP 2023-03-30 16:56:41 +08:00
XiaoQiDigipen 3fc69890e4 Revert "Merge pull request #446 from SHADE-DP/Fix-ResourceHubCrashOnExit"
This reverts commit 5ab7cbe5f3.
2023-03-30 16:25:05 +08:00
maverickdgg 3fef57f88a Merge branch 'Navigation' of https://github.com/SHADE-DP/SHADE_Y3 into Navigation 2023-03-30 15:37:46 +08:00
maverickdgg 3f7522d76f Revert "Merge pull request #446 from SHADE-DP/Fix-ResourceHubCrashOnExit"
This reverts commit 5ab7cbe5f3, reversing
changes made to ffc638e14b.
2023-03-30 15:37:42 +08:00
maverickdgg c6faeeb282 Added CaughtRaccoon State. 2023-03-30 15:26:15 +08:00
Brandon Mak 9c19d178db Implemented color decay and color tint range support for particles 2023-03-30 15:19:54 +08:00
maverickdgg 8c5bf82aa5 Added CaughtRaccoon State. 2023-03-30 15:16:18 +08:00
XiaoQiDigipen 5ab7cbe5f3
Merge pull request #446 from SHADE-DP/Fix-ResourceHubCrashOnExit
"Fixed" crash from ResourceHub on engine exit
2023-03-30 14:24:21 +08:00
Brandon Mak 8aa5c681e3 Merge branch 'main' into SP3-1-Rendering 2023-03-30 14:03:36 +08:00
Kah Wei 6cf20d414e "Fixed" crash from ResourceHub on engine exit 2023-03-29 22:20:20 +08:00
Glence ffc638e14b using waypoint to store startpos 2023-03-26 20:50:49 +08:00
Glence 2abb1ce697 safety checks 2023-03-26 20:38:03 +08:00
Sri Sham Haran 0f9afc2a18 Merge remote-tracking branch 'origin/main' into main 2023-03-26 20:29:41 +08:00
Sri Sham Haran 0890bd8d3f safety checks 2023-03-26 20:29:38 +08:00
Brandon Mak fed76708bd Particle bug fix 2023-03-26 20:28:04 +08:00
Glence 2fd4e51cd0 added food particles and small bug fix 2023-03-26 18:10:58 +08:00
Glence 2da73f12d0 ai fix along wit new music 2023-03-26 13:27:42 +08:00
Sri Sham Haran 44bbdf5f82 Merge remote-tracking branch 'origin/main' into main 2023-03-26 10:19:29 +08:00
Sri Sham Haran c6172be3ad Set detected parameters in AI states
Increase size of score zone in level 1
2023-03-26 10:19:22 +08:00
Brandon Mak e685f8ebaf Quick fix for Silhouette 2023-03-26 10:18:19 +08:00
Glence 92de505af4 made egg heavier so they dont fly so far 2023-03-25 21:46:33 +08:00
125 changed files with 6045 additions and 2668 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,8 @@
- VertexShader: 46580970
FragmentShader: 35983630
SubPass: UI
Properties:
data.color: {x: 1, y: 1, z: 1, w: 1}
data.textureIndex: 64816540
data.alpha: 1
data.beta: {x: 1, y: 1, z: 1}

View File

@ -0,0 +1,3 @@
Name: UIMat_SliderBG
ID: 117587364
Type: 7

View File

@ -0,0 +1,11 @@
- VertexShader: 46580970
FragmentShader: 43211183
SubPass: UI
Properties:
data.color: {x: 1, y: 1, z: 1, w: 1}
data.textureIndex: 50370514
data.alpha: 1
data.beta: {x: 1, y: 1, z: 1}
data.sliderThreshold: 1
data.sliderStartColor: {x: 0.36500001, y: 0.783999979, z: 0.878000021, w: 1}
data.sliderBarColor: {x: 1, y: 1, z: 1, w: 1}

View File

@ -0,0 +1,3 @@
Name: UIMat_Slider_BGM
ID: 129354037
Type: 7

View File

@ -0,0 +1,11 @@
- VertexShader: 46580970
FragmentShader: 43211183
SubPass: UI
Properties:
data.color: {x: 1, y: 1, z: 1, w: 1}
data.textureIndex: 50370514
data.alpha: 1
data.beta: {x: 1, y: 1, z: 1}
data.sliderThreshold: 1
data.sliderStartColor: {x: 0.624000013, y: 0.211999997, z: 0.949000001, w: 1}
data.sliderBarColor: {x: 1, y: 1, z: 1, w: 1}

View File

@ -0,0 +1,3 @@
Name: UIMat_Slider_FOV
ID: 117651669
Type: 7

View File

@ -0,0 +1,11 @@
- VertexShader: 46580970
FragmentShader: 43211183
SubPass: UI
Properties:
data.color: {x: 1, y: 1, z: 1, w: 1}
data.textureIndex: 50370514
data.alpha: 1
data.beta: {x: 1, y: 1, z: 1}
data.sliderThreshold: 1
data.sliderStartColor: {x: 0.949000001, y: 0.689999998, z: 0.211999997, w: 1}
data.sliderBarColor: {x: 1, y: 1, z: 1, w: 1}

View File

@ -0,0 +1,3 @@
Name: UIMat_Slider_SFX
ID: 122820018
Type: 7

View File

@ -3,7 +3,9 @@
SubPass: UI SubPass: UI
Properties: Properties:
data.color: {x: 1, y: 1, z: 1, w: 1} data.color: {x: 1, y: 1, z: 1, w: 1}
data.textureIndex: 51995224 data.textureIndex: 50370514
data.alpha: 1 data.alpha: 1
data.beta: {x: 1, y: 1, z: 1} data.beta: {x: 1, y: 1, z: 1}
data.sliderThreshold: 1 data.sliderThreshold: 1
data.sliderStartColor: {x: 0.254901886, y: 0.321500003, z: 0.909799993, w: 1}
data.sliderBarColor: {x: 1, y: 1, z: 1, w: 1}

View File

@ -0,0 +1,8 @@
- VertexShader: 46580970
FragmentShader: 40208610
SubPass: UI
Properties:
data.color: {x: 1, y: 1, z: 1, w: 1}
data.textureIndex: 50770098
data.alpha: 1
data.beta: {x: 1, y: 1, z: 1}

View File

@ -0,0 +1,3 @@
Name: UIMat_Transistion
ID: 132131066
Type: 7

View File

@ -0,0 +1,8 @@
- VertexShader: 46580970
FragmentShader: 35983630
SubPass: UI
Properties:
data.color: {x: 1, y: 1, z: 1, w: 1}
data.textureIndex: 55490391
data.alpha: 1
data.beta: {x: 1, y: 1, z: 1}

View File

@ -0,0 +1,3 @@
Name: UI_Result
ID: 130179375
Type: 7

View File

@ -1,3 +1,3 @@
Name: Level3_NavData Name: Level3_NavData
ID: 263362242 ID: 252819653
Type: 15 Type: 15

View File

@ -0,0 +1,174 @@
- NavData: 0
- EID: 0
Name: Camera
IsActive: true
NumberOfChildren: 0
Components:
Transform Component:
Translate: {x: 0, y: 0, z: 0}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 1, y: 1, z: 1}
IsActive: true
Camera Component:
Position: {x: 0, y: 0, z: 0}
Pitch: 0
Yaw: 0
Roll: 0
Width: 1920
Near: 0.00999999978
Far: 10000
Perspective: true
FOV: 90
IsActive: true
Scripts: ~
- EID: 46
Name: Credits Canvas
IsActive: true
NumberOfChildren: 3
Components:
Canvas Component:
Canvas Width: 1920
Canvas Height: 1080
Scale by canvas width: false
IsActive: true
Scripts: ~
- EID: 47
Name: Scrolling Credits
IsActive: true
NumberOfChildren: 0
Components:
Transform Component:
Translate: {x: 0, y: -3800, z: 1.5}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 1920, y: 8026, z: 1}
IsActive: true
Renderable Component:
Mesh: 141771688
Material: 120332672
IsActive: true
UI Component:
Canvas ID: 46
Hovered: false
Clicked: false
IsActive: true
Scripts:
- Type: SHADE_Scripting.UI.ScrollingCredits
Enabled: true
endY: 4300
duration: 27
levelTransition: 619
- Type: SHADE_Scripting.UI.TransitToMainMenu
Enabled: true
timeToTransit: 27
sceneToChange: 97158628
- EID: 49
Name: Credits Title Text
IsActive: false
NumberOfChildren: 0
Components:
Transform Component:
Translate: {x: -150, y: 400, z: 0.100000001}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 100, y: 100, z: 1}
IsActive: false
Text Renderer Component:
Text: Credits
Font: 174412429
Color: {x: 0, y: 0, z: 0, w: 1}
Text Size: {x: 1, y: 1, z: 1}
IsActive: false
UI Component:
Canvas ID: 46
Hovered: false
Clicked: false
IsActive: false
Scripts: ~
- EID: 55
Name: BackGround
IsActive: false
NumberOfChildren: 0
Components:
Transform Component:
Translate: {x: 0, y: 0, z: 1.5}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 1920, y: 1080, z: 1}
IsActive: false
Renderable Component:
Mesh: 141771688
Material: 121834459
IsActive: false
UI Component:
Canvas ID: 46
Hovered: false
Clicked: false
IsActive: false
Scripts: ~
- EID: 54
Name: TweenManager
IsActive: true
NumberOfChildren: 0
Components: ~
Scripts:
- Type: TweenManager
Enabled: true
- EID: 619
Name: LevelTransistionCanvas
IsActive: true
NumberOfChildren: 2
Components:
Canvas Component:
Canvas Width: 1920
Canvas Height: 1080
Scale by canvas width: false
IsActive: true
Scripts:
- Type: LevelTransistion
Enabled: true
logo: 618
bg: 617
duration: 0.5
bgEndPositionX: 3000
logoEndPositionX: 3000
rotAndScale: false
rotationAmt: 360
scaleAmt: 631
- EID: 618
Name: LevelTransistionLogo
IsActive: true
NumberOfChildren: 0
Components:
Transform Component:
Translate: {x: 0, y: 0, z: 0.100000001}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 631, y: 631, z: 1}
IsActive: true
Renderable Component:
Mesh: 141771688
Material: 126117259
IsActive: true
UI Component:
Canvas ID: 619
Hovered: false
Clicked: false
IsActive: true
Scripts: ~
- EID: 617
Name: LevelTransistionBG
IsActive: true
NumberOfChildren: 0
Components:
Transform Component:
Translate: {x: 0, y: 0, z: 0.200000003}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 4000, y: 4000, z: 1}
IsActive: true
Renderable Component:
Mesh: 141771688
Material: 132131066
IsActive: true
UI Component:
Canvas ID: 619
Hovered: false
Clicked: false
IsActive: true
Scripts: ~

View File

@ -0,0 +1,3 @@
Name: CreditsScene
ID: 97376761
Type: 5

View File

@ -1,3 +1,4 @@
- NavData: 0
- EID: 1 - EID: 1
Name: Canvas4 Name: Canvas4
IsActive: true IsActive: true
@ -152,7 +153,7 @@
Scripts: Scripts:
- Type: CutsceneEnd - Type: CutsceneEnd
Enabled: true Enabled: true
nextScene: 92009475 nextScene: 97376761
duration: 1 duration: 1
skipDuration: 0.100000001 skipDuration: 0.100000001
cutscene4Points: 4 cutscene4Points: 4
@ -161,6 +162,7 @@
cutscene5Pics: 15 cutscene5Pics: 15
canvas4: 1 canvas4: 1
canvas5: 14 canvas5: 14
levelTransition: 619
- EID: 4 - EID: 4
Name: CutScene4Points Name: CutScene4Points
IsActive: true IsActive: true
@ -288,7 +290,7 @@
NumberOfChildren: 0 NumberOfChildren: 0
Components: Components:
Transform Component: Transform Component:
Translate: {x: 250, y: -500, z: 0.100000001} Translate: {x: 250, y: -500, z: 0.300000012}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 50, y: 50, z: 50} Scale: {x: 50, y: 50, z: 50}
IsActive: true IsActive: true
@ -331,4 +333,73 @@
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 1, y: 1, z: 1} Scale: {x: 1, y: 1, z: 1}
IsActive: true IsActive: true
Scripts: ~ Scripts: ~
- EID: 619
Name: LevelTransistionCanvas
IsActive: true
NumberOfChildren: 2
Components:
Canvas Component:
Canvas Width: 1920
Canvas Height: 1080
Scale by canvas width: false
IsActive: true
Scripts:
- Type: LevelTransistion
Enabled: true
logo: 618
bg: 617
duration: 0.5
bgEndPositionX: 3000
logoEndPositionX: 3000
rotAndScale: false
rotationAmt: 360
scaleAmt: 631
- EID: 618
Name: LevelTransistionLogo
IsActive: true
NumberOfChildren: 0
Components:
Transform Component:
Translate: {x: 0, y: 0, z: 0.100000001}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 631, y: 631, z: 1}
IsActive: true
Renderable Component:
Mesh: 141771688
Material: 126117259
IsActive: true
UI Component:
Canvas ID: 619
Hovered: false
Clicked: false
IsActive: true
Scripts: ~
- EID: 617
Name: LevelTransistionBG
IsActive: true
NumberOfChildren: 0
Components:
Transform Component:
Translate: {x: 0, y: 0, z: 0.200000003}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 4000, y: 4000, z: 1}
IsActive: true
Renderable Component:
Mesh: 141771688
Material: 132131066
IsActive: true
UI Component:
Canvas ID: 619
Hovered: false
Clicked: false
IsActive: true
Scripts: ~
- EID: 616
Name: TweenManager
IsActive: true
NumberOfChildren: 0
Components: ~
Scripts:
- Type: TweenManager
Enabled: true

View File

@ -1,3 +1,4 @@
- NavData: 0
- EID: 1 - EID: 1
Name: Canvas1 Name: Canvas1
IsActive: true IsActive: true
@ -164,6 +165,7 @@
canvas1: 1 canvas1: 1
canvas2: 13 canvas2: 13
canvas3: 24 canvas3: 24
levelTransition: 619
- EID: 4 - EID: 4
Name: CutScene1Points Name: CutScene1Points
IsActive: true IsActive: true
@ -177,7 +179,7 @@
Components: Components:
Transform Component: Transform Component:
Translate: {x: -550, y: 0, z: 0.5} Translate: {x: -550, y: 0, z: 0.5}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 500.5, y: -274.5, z: 0.600000024}
Scale: {x: 1, y: 1, z: 1} Scale: {x: 1, y: 1, z: 1}
IsActive: true IsActive: true
Scripts: ~ Scripts: ~
@ -394,7 +396,7 @@
NumberOfChildren: 0 NumberOfChildren: 0
Components: Components:
Transform Component: Transform Component:
Translate: {x: -1375, y: 250, z: 0.5} Translate: {x: -1375, y: 250, z: 0.899999976}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 982, y: 527, z: 1} Scale: {x: 982, y: 527, z: 1}
IsActive: true IsActive: true
@ -414,7 +416,7 @@
NumberOfChildren: 0 NumberOfChildren: 0
Components: Components:
Transform Component: Transform Component:
Translate: {x: 200, y: 1200, z: 0.400000006} Translate: {x: 200, y: 1200, z: 0.800000012}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 625, y: 579, z: 1} Scale: {x: 625, y: 579, z: 1}
IsActive: true IsActive: true
@ -434,7 +436,7 @@
NumberOfChildren: 0 NumberOfChildren: 0
Components: Components:
Transform Component: Transform Component:
Translate: {x: 1700, y: 200, z: 0.300000012} Translate: {x: 1700, y: 200, z: 0.699999988}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 529, y: 670, z: 1} Scale: {x: 529, y: 670, z: 1}
IsActive: true IsActive: true
@ -454,7 +456,7 @@
NumberOfChildren: 0 NumberOfChildren: 0
Components: Components:
Transform Component: Transform Component:
Translate: {x: -1600, y: -200, z: 0.5} Translate: {x: -1600, y: -200, z: 0.899999976}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 1299, y: 575, z: 1} Scale: {x: 1299, y: 575, z: 1}
IsActive: true IsActive: true
@ -474,7 +476,7 @@
NumberOfChildren: 0 NumberOfChildren: 0
Components: Components:
Transform Component: Transform Component:
Translate: {x: 500, y: -1275, z: 0.5} Translate: {x: 500, y: -1275, z: 0.899999976}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 866, y: 483, z: 1} Scale: {x: 866, y: 483, z: 1}
IsActive: true IsActive: true
@ -494,7 +496,7 @@
NumberOfChildren: 0 NumberOfChildren: 0
Components: Components:
Transform Component: Transform Component:
Translate: {x: 0, y: 0, z: 0.699999988} Translate: {x: 0, y: 0, z: 0.99000001}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 1920, y: 1080, z: 1} Scale: {x: 1920, y: 1080, z: 1}
IsActive: true IsActive: true
@ -514,7 +516,7 @@
NumberOfChildren: 0 NumberOfChildren: 0
Components: Components:
Transform Component: Transform Component:
Translate: {x: 250, y: -500, z: 0.100000001} Translate: {x: 250, y: -500, z: 0.400000006}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 50, y: 50, z: 50} Scale: {x: 50, y: 50, z: 50}
IsActive: true IsActive: true
@ -542,7 +544,7 @@
NumberOfChildren: 0 NumberOfChildren: 0
Components: Components:
Transform Component: Transform Component:
Translate: {x: -375, y: 250, z: 0.5} Translate: {x: -375, y: 250, z: 0.899999976}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 1, y: 1, z: 1} Scale: {x: 1, y: 1, z: 1}
IsActive: true IsActive: true
@ -553,7 +555,7 @@
NumberOfChildren: 0 NumberOfChildren: 0
Components: Components:
Transform Component: Transform Component:
Translate: {x: 200, y: 200, z: 0.400000006} Translate: {x: 200, y: 200, z: 0.800000012}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 1, y: 1, z: 1} Scale: {x: 1, y: 1, z: 1}
IsActive: true IsActive: true
@ -564,7 +566,7 @@
NumberOfChildren: 0 NumberOfChildren: 0
Components: Components:
Transform Component: Transform Component:
Translate: {x: 700, y: 200, z: 0.300000012} Translate: {x: 700, y: 200, z: 0.699999988}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 1, y: 1, z: 1} Scale: {x: 1, y: 1, z: 1}
IsActive: true IsActive: true
@ -575,7 +577,7 @@
NumberOfChildren: 0 NumberOfChildren: 0
Components: Components:
Transform Component: Transform Component:
Translate: {x: -225, y: -200, z: 0.200000003} Translate: {x: -225, y: -200, z: 0.600000024}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 1, y: 1, z: 1} Scale: {x: 1, y: 1, z: 1}
IsActive: true IsActive: true
@ -586,8 +588,77 @@
NumberOfChildren: 0 NumberOfChildren: 0
Components: Components:
Transform Component: Transform Component:
Translate: {x: 500, y: -275, z: 0.100000001} Translate: {x: 500, y: -275, z: 0.5}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 1, y: 1, z: 1} Scale: {x: 1, y: 1, z: 1}
IsActive: true IsActive: true
Scripts: ~ Scripts: ~
- EID: 619
Name: LevelTransistionCanvas
IsActive: true
NumberOfChildren: 2
Components:
Canvas Component:
Canvas Width: 1920
Canvas Height: 1080
Scale by canvas width: false
IsActive: true
Scripts:
- Type: LevelTransistion
Enabled: true
logo: 618
bg: 617
duration: 0.5
bgEndPositionX: 3000
logoEndPositionX: 3000
rotAndScale: false
rotationAmt: 360
scaleAmt: 631
- EID: 618
Name: LevelTransistionLogo
IsActive: true
NumberOfChildren: 0
Components:
Transform Component:
Translate: {x: 0, y: 0, z: 0.100000001}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 631, y: 631, z: 1}
IsActive: true
Renderable Component:
Mesh: 141771688
Material: 126117259
IsActive: true
UI Component:
Canvas ID: 619
Hovered: false
Clicked: false
IsActive: true
Scripts: ~
- EID: 617
Name: LevelTransistionBG
IsActive: true
NumberOfChildren: 0
Components:
Transform Component:
Translate: {x: 0, y: 0, z: 0.200000003}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 4000, y: 4000, z: 1}
IsActive: true
Renderable Component:
Mesh: 141771688
Material: 132131066
IsActive: true
UI Component:
Canvas ID: 619
Hovered: false
Clicked: false
IsActive: true
Scripts: ~
- EID: 616
Name: TweenManager
IsActive: true
NumberOfChildren: 0
Components: ~
Scripts:
- Type: TweenManager
Enabled: true

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -38,7 +38,7 @@
Transform Component: Transform Component:
Translate: {x: 0, y: 100, z: 0.300000012} Translate: {x: 0, y: 100, z: 0.300000012}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 600, y: 600, z: 1.18585491} Scale: {x: 631.577454, y: 631.577454, z: 1.24826539}
IsActive: true IsActive: true
Renderable Component: Renderable Component:
Mesh: 141771688 Mesh: 141771688
@ -55,6 +55,7 @@
minScale: 1 minScale: 1
maxScale: 1.20000005 maxScale: 1.20000005
duration: 1.5 duration: 1.5
isActive: true
- EID: 54 - EID: 54
Name: Main Menu Button Group Name: Main Menu Button Group
IsActive: true IsActive: true
@ -258,7 +259,7 @@
Transform Component: Transform Component:
Translate: {x: 450, y: 0, z: 0.400000006} Translate: {x: 450, y: 0, z: 0.400000006}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 400, y: 100, z: 1} Scale: {x: 389.627228, y: 97.4068069, z: 0.974068105}
IsActive: true IsActive: true
Renderable Component: Renderable Component:
Mesh: 141771688 Mesh: 141771688
@ -749,16 +750,16 @@
- EID: 29 - EID: 29
Name: Master Volume Slider Name: Master Volume Slider
IsActive: true IsActive: true
NumberOfChildren: 0 NumberOfChildren: 1
Components: Components:
Transform Component: Transform Component:
Translate: {x: 0, y: 0, z: 0} Translate: {x: 0, y: 0, z: 0}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 1000, y: 75, z: 1} Scale: {x: 1004, y: 46, z: 1}
IsActive: true IsActive: true
Renderable Component: Renderable Component:
Mesh: 141771688 Mesh: 141771688
Material: 128676209 Material: 127128823
IsActive: true IsActive: true
Slider Component: Slider Component:
Slider Value: 1 Slider Value: 1
@ -770,20 +771,44 @@
Hovered: false Hovered: false
Clicked: false Clicked: false
IsActive: true IsActive: true
Scripts:
- Type: SHADE_Scripting.UI.SliderFX
Enabled: true
onClickSound: event:/UI/button_success
onReleaseSound: event:/UI/button_fail
- EID: 437
Name: Slider BG
IsActive: true
NumberOfChildren: 0
Components:
Transform Component:
Translate: {x: 0, y: 0, z: 0.100000001}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 1.01992035, y: 1.39130437, z: 1}
IsActive: true
Renderable Component:
Mesh: 141771688
Material: 117587364
IsActive: true
UI Component:
Canvas ID: 19
Hovered: false
Clicked: false
IsActive: true
Scripts: ~ Scripts: ~
- EID: 30 - EID: 30
Name: SFX Volume Slider Name: SFX Volume Slider
IsActive: true IsActive: true
NumberOfChildren: 0 NumberOfChildren: 1
Components: Components:
Transform Component: Transform Component:
Translate: {x: 0, y: -100, z: 0} Translate: {x: 0, y: -100, z: 0}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 1000, y: 75, z: 1} Scale: {x: 1004, y: 46, z: 1}
IsActive: true IsActive: true
Renderable Component: Renderable Component:
Mesh: 141771688 Mesh: 141771688
Material: 128676209 Material: 122820018
IsActive: true IsActive: true
Slider Component: Slider Component:
Slider Value: 1 Slider Value: 1
@ -795,20 +820,44 @@
Hovered: false Hovered: false
Clicked: false Clicked: false
IsActive: true IsActive: true
Scripts: ~ Scripts:
- EID: 31 - Type: SHADE_Scripting.UI.SliderFX
Name: BGM Volume Slider Enabled: true
onClickSound: event:/UI/button_success
onReleaseSound: event:/UI/button_fail
- EID: 436
Name: Slider BG
IsActive: true IsActive: true
NumberOfChildren: 0 NumberOfChildren: 0
Components: Components:
Transform Component: Transform Component:
Translate: {x: 0, y: -200, z: 0} Translate: {x: 0, y: 0, z: 0.100000001}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 1000, y: 75, z: 1} Scale: {x: 1.01992035, y: 1.39130437, z: 1}
IsActive: true IsActive: true
Renderable Component: Renderable Component:
Mesh: 141771688 Mesh: 141771688
Material: 128676209 Material: 117587364
IsActive: true
UI Component:
Canvas ID: 19
Hovered: false
Clicked: false
IsActive: true
Scripts: ~
- EID: 31
Name: BGM Volume Slider
IsActive: true
NumberOfChildren: 1
Components:
Transform Component:
Translate: {x: 0, y: -200, z: 0}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 1004, y: 46, z: 1}
IsActive: true
Renderable Component:
Mesh: 141771688
Material: 129354037
IsActive: true IsActive: true
Slider Component: Slider Component:
Slider Value: 1 Slider Value: 1
@ -820,6 +869,30 @@
Hovered: false Hovered: false
Clicked: false Clicked: false
IsActive: true IsActive: true
Scripts:
- Type: SHADE_Scripting.UI.SliderFX
Enabled: true
onClickSound: event:/UI/button_success
onReleaseSound: event:/UI/button_fail
- EID: 435
Name: Slider BG
IsActive: true
NumberOfChildren: 0
Components:
Transform Component:
Translate: {x: 0, y: 0, z: 0.100000001}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 1.01992035, y: 1.39130437, z: 1}
IsActive: true
Renderable Component:
Mesh: 141771688
Material: 117587364
IsActive: true
UI Component:
Canvas ID: 19
Hovered: false
Clicked: false
IsActive: true
Scripts: ~ Scripts: ~
- EID: 32 - EID: 32
Name: Camera Title Text Name: Camera Title Text
@ -944,19 +1017,19 @@
- EID: 37 - EID: 37
Name: FOV Slider Name: FOV Slider
IsActive: true IsActive: true
NumberOfChildren: 0 NumberOfChildren: 1
Components: Components:
Transform Component: Transform Component:
Translate: {x: 0, y: 0, z: 0} Translate: {x: 0, y: 0, z: 0}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 1000, y: 75, z: 1} Scale: {x: 1004, y: 46, z: 1}
IsActive: true IsActive: true
Renderable Component: Renderable Component:
Mesh: 141771688 Mesh: 141771688
Material: 128676209 Material: 117651669
IsActive: true IsActive: true
Slider Component: Slider Component:
Slider Value: 1 Slider Value: 0.889483869
Min Value: 30 Min Value: 30
Max Value: 120 Max Value: 120
IsActive: true IsActive: true
@ -965,6 +1038,30 @@
Hovered: false Hovered: false
Clicked: false Clicked: false
IsActive: true IsActive: true
Scripts:
- Type: SHADE_Scripting.UI.SliderFX
Enabled: true
onClickSound: event:/UI/button_success
onReleaseSound: event:/UI/button_fail
- EID: 434
Name: Slider BG
IsActive: true
NumberOfChildren: 0
Components:
Transform Component:
Translate: {x: 0, y: 0, z: 0.100000001}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 1.01992035, y: 1.39130437, z: 1}
IsActive: true
Renderable Component:
Mesh: 141771688
Material: 117587364
IsActive: true
UI Component:
Canvas ID: 19
Hovered: false
Clicked: false
IsActive: true
Scripts: ~ Scripts: ~
- EID: 448 - EID: 448
Name: Invert X Toggle Button Name: Invert X Toggle Button
@ -995,6 +1092,14 @@
Enabled: true Enabled: true
inverseX: true inverseX: true
inverseY: false inverseY: false
- Type: SHADE_Scripting.UI.ButtonFX
Enabled: true
onHoverEnterSound: event:/UI/botton_hover
onHoverExitSound: Empty
onClickSound: event:/UI/button_success
onReleaseSound: event:/UI/button_fail
hoverScale: 1.25
clickScale: 0.899999976
- EID: 445 - EID: 445
Name: Invert Y Toggle Button Name: Invert Y Toggle Button
IsActive: true IsActive: true
@ -1024,6 +1129,14 @@
Enabled: true Enabled: true
inverseX: false inverseX: false
inverseY: true inverseY: true
- Type: SHADE_Scripting.UI.ButtonFX
Enabled: true
onHoverEnterSound: event:/UI/botton_hover
onHoverExitSound: Empty
onClickSound: event:/UI/button_success
onReleaseSound: event:/UI/button_fail
hoverScale: 1.25
clickScale: 0.899999976
- EID: 39 - EID: 39
Name: Audio Slider Text Group Name: Audio Slider Text Group
IsActive: true IsActive: true
@ -1142,7 +1255,7 @@
Scale: {x: 75, y: 75, z: 1} Scale: {x: 75, y: 75, z: 1}
IsActive: true IsActive: true
Text Renderer Component: Text Renderer Component:
Text: 100 Text: 60
Font: 174412429 Font: 174412429
Color: {x: 0, y: 0, z: 0, w: 1} Color: {x: 0, y: 0, z: 0, w: 1}
Text Size: {x: 1, y: 1, z: 1} Text Size: {x: 1, y: 1, z: 1}
@ -1328,7 +1441,7 @@
NumberOfChildren: 0 NumberOfChildren: 0
Components: Components:
Transform Component: Transform Component:
Translate: {x: -800, y: 450, z: 0} Translate: {x: -800, y: 450, z: 0.300000012}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 273, y: 100, z: 1} Scale: {x: 273, y: 100, z: 1}
IsActive: true IsActive: true
@ -1364,7 +1477,7 @@
NumberOfChildren: 0 NumberOfChildren: 0
Components: Components:
Transform Component: Transform Component:
Translate: {x: -250, y: 400, z: 0.100000001} Translate: {x: -250, y: 400, z: 0.300000012}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 100, y: 100, z: 1} Scale: {x: 100, y: 100, z: 1}
IsActive: true IsActive: true
@ -1424,7 +1537,7 @@
NumberOfChildren: 0 NumberOfChildren: 0
Components: Components:
Transform Component: Transform Component:
Translate: {x: -600, y: 0, z: 0} Translate: {x: -600, y: 0, z: 0.300000012}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 345, y: 800, z: 1} Scale: {x: 345, y: 800, z: 1}
IsActive: true IsActive: true
@ -1446,13 +1559,22 @@
- Type: ChangeSceneButton - Type: ChangeSceneButton
Enabled: true Enabled: true
sceneID: 91947920 sceneID: 91947920
levelTransistion: 433
- Type: SHADE_Scripting.UI.ButtonFX
Enabled: true
onHoverEnterSound: event:/UI/botton_hover
onHoverExitSound: Empty
onClickSound: event:/UI/button_success
onReleaseSound: event:/UI/button_fail
hoverScale: 1.10000002
clickScale: 0.899999976
- EID: 439 - EID: 439
Name: Level 2 Button Name: Level 2 Button
IsActive: true IsActive: true
NumberOfChildren: 0 NumberOfChildren: 0
Components: Components:
Transform Component: Transform Component:
Translate: {x: 0, y: 0, z: 0} Translate: {x: 0, y: 0, z: 0.300000012}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 345, y: 800, z: 1} Scale: {x: 345, y: 800, z: 1}
IsActive: true IsActive: true
@ -1474,13 +1596,22 @@
- Type: ChangeSceneButton - Type: ChangeSceneButton
Enabled: true Enabled: true
sceneID: 86098106 sceneID: 86098106
levelTransistion: 433
- Type: SHADE_Scripting.UI.ButtonFX
Enabled: true
onHoverEnterSound: event:/UI/botton_hover
onHoverExitSound: Empty
onClickSound: event:/UI/button_success
onReleaseSound: event:/UI/button_fail
hoverScale: 1.10000002
clickScale: 0.899999976
- EID: 438 - EID: 438
Name: Level 3 Button Name: Level 3 Button
IsActive: true IsActive: true
NumberOfChildren: 0 NumberOfChildren: 0
Components: Components:
Transform Component: Transform Component:
Translate: {x: 600, y: 0, z: 0} Translate: {x: 600, y: 0, z: 0.300000012}
Rotate: {x: 0, y: 0, z: 0} Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 345, y: 800, z: 1} Scale: {x: 345, y: 800, z: 1}
IsActive: true IsActive: true
@ -1502,6 +1633,15 @@
- Type: ChangeSceneButton - Type: ChangeSceneButton
Enabled: true Enabled: true
sceneID: 88928066 sceneID: 88928066
levelTransistion: 433
- Type: SHADE_Scripting.UI.ButtonFX
Enabled: true
onHoverEnterSound: event:/UI/botton_hover
onHoverExitSound: Empty
onClickSound: event:/UI/button_success
onReleaseSound: event:/UI/button_fail
hoverScale: 1.10000002
clickScale: 0.899999976
- EID: 450 - EID: 450
Name: TransitionCanvas Name: TransitionCanvas
IsActive: true IsActive: true
@ -1535,6 +1675,67 @@
Scripts: Scripts:
- Type: SHADE_Scripting.UI.SceneFadeInOut - Type: SHADE_Scripting.UI.SceneFadeInOut
Enabled: true Enabled: true
alphaValue: 1 alphaValue: 0
fadeInTime: 0.5 fadeInTime: 0.5
fadeOutTime: 0.5 fadeOutTime: 0.5
- EID: 433
Name: LevelTransistionCanvas
IsActive: false
NumberOfChildren: 2
Components:
Canvas Component:
Canvas Width: 1920
Canvas Height: 1080
Scale by canvas width: false
IsActive: false
Scripts:
- Type: LevelTransistion
Enabled: true
logo: 431
bg: 432
duration: 0.800000012
bgEndPositionX: 0
logoEndPositionX: 0
rotAndScale: true
rotationAmt: 360
scaleAmt: 631
- EID: 431
Name: LevelTransistionLogo
IsActive: true
NumberOfChildren: 0
Components:
Transform Component:
Translate: {x: 0, y: 0, z: 0.100000001}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 0, y: 0, z: 1}
IsActive: true
Renderable Component:
Mesh: 141771688
Material: 126117259
IsActive: true
UI Component:
Canvas ID: 433
Hovered: false
Clicked: false
IsActive: true
Scripts: ~
- EID: 432
Name: LevelTransistionBG
IsActive: true
NumberOfChildren: 0
Components:
Transform Component:
Translate: {x: -2500, y: 0, z: 0.200000003}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 4000, y: 4000, z: 1}
IsActive: true
Renderable Component:
Mesh: 141771688
Material: 132131066
IsActive: true
UI Component:
Canvas ID: 433
Hovered: false
Clicked: false
IsActive: true
Scripts: ~

View File

@ -1,3 +1,4 @@
- NavData: 0
- EID: 0 - EID: 0
Name: Default Name: Default
IsActive: true IsActive: true
@ -170,8 +171,13 @@
Angular Ranges And Offset: {x: 6.19999981, y: 1.10000002, z: 0, w: 0.100000001} Angular Ranges And Offset: {x: 6.19999981, y: 1.10000002, z: 0, w: 0.100000001}
Rotation Speed: 0.0309999995 Rotation Speed: 0.0309999995
Rotation Decay: 0.0199999996 Rotation Decay: 0.0199999996
Texture Asset ID: 63456868 Texture Asset ID: 0
Custom Vertex Shader Asset ID: 44202416
Custom Fragment Shader Asset ID: 42315398
Custom Update Shader Asset ID: 0 Custom Update Shader Asset ID: 0
Color Tint: {x: 1, y: 0, z: 0, w: 1} Color Tint: {x: 0.46696043, y: 1, z: 0, w: 1}
Color Tint Range: {x: 1, y: 0, z: 0, w: 0}
Color Decay: {x: -1, y: -1, z: -1, w: 0}
Acceleration: {x: 0, y: 0, z: 0}
IsActive: true IsActive: true
Scripts: ~ Scripts: ~

View File

@ -1,150 +1,176 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using SHADE; using SHADE;
using SHADE_Scripting.Audio; using SHADE_Scripting.Audio;
using SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States; using SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States;
namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework
{ {
public class HomeOwnerAI:Script public class HomeOwnerAI : Script
{
public float idleDuration = 1.0f;
public float caughtDuration = 2.0f;
public float timeoutDuration = 2.0f;
public GameObject patrolPointParent;
public float patrolSpeed = 2.0f;
public float chaseSpeed = 3.0f;
public float alertCooldown = 0.0f;
public GameObject player;
public GameObject attackHitbox;
public AnimationClipAsset walkingAnim;
public AnimationClipAsset idleAnim;
public AnimationClipAsset alertAnim;
public AnimationClipAsset alertRunAnim;
public AnimationClipAsset alertIdleAnim;
public AnimationClipAsset timeoutAnim;
public AnimationClipAsset atkWindupAnim;
public AnimationClipAsset atkHoldAnim;
public AnimationClipAsset atkSeqAnim;
private Vector3 startPos;
public bool atk { get; set; }
[NonSerialized]
public IEnumerable<Transform> patrolPointPool;
private List<Transform> pppList;
private Transform transform;
[NonSerialized]
public HomeOwnerAttackHitbox hitboxScript;
public void Reset()
{ {
public float idleDuration = 1.0f; StateMachine machine = GetScript<StateMachine>();
public float timeoutDuration = 2.0f; if (transform && machine)
public GameObject patrolPointParent; {
transform.GlobalPosition = startPos;
public float patrolSpeed = 2.0f; machine.SetState(typeof(IdleState));
public float chaseSpeed = 3.0f; }
}
public float alertCooldown = 0.0f;
public GameObject player;
public GameObject attackHitbox;
public AnimationClipAsset walkingAnim;
public AnimationClipAsset idleAnim;
public AnimationClipAsset alertAnim;
public AnimationClipAsset alertRunAnim;
public AnimationClipAsset alertIdleAnim;
public AnimationClipAsset timeoutAnim;
public AnimationClipAsset atkWindupAnim;
public AnimationClipAsset atkHoldAnim;
public AnimationClipAsset atkSeqAnim;
private Vector3 startPos;
[NonSerialized]
public IEnumerable<Transform> patrolPointPool;
public void Reset()
{
Transform transform = GetComponent<Transform>();
StateMachine machine = GetScript<StateMachine>();
if (transform && machine)
{
transform.GlobalPosition = startPos;
machine.SetState(typeof(IdleState));
}
}
protected override void awake() protected override void awake()
{ {
StateMachine machine = GetScript<StateMachine>(); StateMachine machine = GetScript<StateMachine>();
if(machine) if (machine)
{ {
Dictionary<Type, BaseState> dictionary = new Dictionary<Type, BaseState>(); Dictionary<Type, BaseState> dictionary = new Dictionary<Type, BaseState>();
dictionary.Add(typeof(IdleState), new IdleState(machine)); dictionary.Add(typeof(IdleState), new IdleState(machine));
dictionary.Add(typeof(PatrolState), new PatrolState(machine)); dictionary.Add(typeof(PatrolState), new PatrolState(machine));
dictionary.Add(typeof(TimeoutState), new TimeoutState(machine)); dictionary.Add(typeof(TimeoutState), new TimeoutState(machine));
dictionary.Add(typeof(ChaseState), new ChaseState(machine)); dictionary.Add(typeof(ChaseState), new ChaseState(machine));
dictionary.Add(typeof(AlertState), new AlertState(machine)); dictionary.Add(typeof(AlertState), new AlertState(machine));
dictionary.Add(typeof(AttackState), new AttackState(machine)); dictionary.Add(typeof(AttackState), new AttackState(machine));
dictionary.Add(typeof(CaughtRaccoonState), new CaughtRaccoonState(machine));
machine.InitStateMachine(dictionary); machine.InitStateMachine(dictionary);
} }
AudioHandler.audioClipHandlers["HO_footsteps"] = SHADE.Audio.CreateAudioClip("event:/Homeowner/homeowner_footsteps"); AudioHandler.audioClipHandlers["HO_footsteps"] = SHADE.Audio.CreateAudioClip("event:/Homeowner/homeowner_footsteps");
SHADE.Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers["HO_footsteps"], GameObject.EntityId);
patrolPointPool = patrolPointParent.GetComponentsInChildren<Transform>(); AudioHandler.audioClipHandlers["HO_bark"] = SHADE.Audio.CreateAudioClip("event:/Homeowner/homeowner_bark");
Transform transform = GetComponent<Transform>(); SHADE.Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers["HO_bark"], GameObject.EntityId);
if (transform)
{
startPos = transform.GlobalPosition;
}
} AudioHandler.audioClipHandlers["HO_humming"] = SHADE.Audio.CreateAudioClip("event:/Homeowner/homeowner_humming");
SHADE.Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers["HO_humming"], GameObject.EntityId);
protected override void start() patrolPointPool = patrolPointParent.GetComponentsInChildren<Transform>();
{ pppList = patrolPointPool.ToList<Transform>();
attackHitbox.SetActive(false); transform = GetComponent<Transform>();
}
atk = false;
protected override void update() }
{
if(alertCooldown > 0.0f)
{
alertCooldown -= Time.DeltaTimeF;
}
else
{
alertCooldown = 0.0f;
}
AICheat();
}
public bool ShouldTransitAlert() protected override void start()
{ {
AILineOfSight los = GetScript<AILineOfSight>(); //attackHitbox.SetActive(false);
if (los) if (pppList != null)
{ startPos = pppList[0].LocalPosition;
if (los.withinSight && alertCooldown <= 0.0f)
{
return true;
}
}
return false;
}
public void RotateToPlayer() if (attackHitbox)
{ hitboxScript = attackHitbox.GetScript<HomeOwnerAttackHitbox>();
//Transform playerTransform = player.GetComponent<Transform>();
////Rotate to face player.
//Transform aiTransform = GetComponent<Transform>();
//if(playerTransform && aiTransform)
//{
// Vector3 direction = playerTransform.GlobalPosition - aiTransform.GlobalPosition;
// Quaternion currentRotation = aiTransform.LocalRotation;
// Quaternion targetRotation = Quaternion.Euler(0.0f, MathF.Atan2(direction.x, direction.z), 0.0f);
// aiTransform.LocalRotation = Quaternion.Slerp(currentRotation, targetRotation, 5.0f * (float)Time.FixedDeltaTime);
//}
}
private void AICheat()
{
StateMachine machine = GetScript<StateMachine>();
AILineOfSight los = GetScript<AILineOfSight>();
if(machine && los)
{
if (Input.GetKeyDown(Input.KeyCode.K))
{
los.range = 5.0f;
machine.SetState(typeof(AlertState));
}
if(Input.GetKeyDown(Input.KeyCode.L))
{
los.range = 0.0f;
machine.SetState(typeof(IdleState));
}
}
}
} }
protected override void update()
{
if (alertCooldown > 0.0f)
{
alertCooldown -= Time.DeltaTimeF;
}
else
{
alertCooldown = 0.0f;
}
AICheat();
}
public bool ShouldTransitAlert()
{
AILineOfSight los = GetScript<AILineOfSight>();
if (los)
{
if (los.withinSight && alertCooldown <= 0.0f)
{
return true;
}
}
return false;
}
public void RotateToPlayer()
{
//Transform playerTransform = player.GetComponent<Transform>();
////Rotate to face player.
//Transform aiTransform = GetComponent<Transform>();
//if(playerTransform && aiTransform)
//{
// Vector3 direction = playerTransform.GlobalPosition - aiTransform.GlobalPosition;
// Quaternion currentRotation = aiTransform.LocalRotation;
// Quaternion targetRotation = Quaternion.Euler(0.0f, MathF.Atan2(direction.x, direction.z), 0.0f);
// aiTransform.LocalRotation = Quaternion.Slerp(currentRotation, targetRotation, 5.0f * (float)Time.FixedDeltaTime);
//}
}
private void AICheat()
{
StateMachine machine = GetScript<StateMachine>();
AILineOfSight los = GetScript<AILineOfSight>();
if (machine && los)
{
if (Input.GetKeyDown(Input.KeyCode.K))
{
los.range = 5.0f;
machine.SetState(typeof(AlertState));
}
if (Input.GetKeyDown(Input.KeyCode.L))
{
los.range = 0.0f;
machine.SetState(typeof(IdleState));
}
}
}
}
} }

View File

@ -13,14 +13,19 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework
{ {
public GameObject aiGO; public GameObject aiGO;
Transform transform; public bool raccoonFound = false;
Transform aiTransform; Transform transform;
Transform aiTransform;
[NonSerialized]
public PlayerController pc;
private HomeOwnerAI ai;
protected override void start() protected override void start()
{ {
transform = GetComponent<Transform>(); transform = GetComponent<Transform>();
aiTransform = aiGO.GetComponent<Transform>(); aiTransform = aiGO.GetComponent<Transform>();
ai = aiGO.GetScript<HomeOwnerAI>();
} }
protected override void update() protected override void update()
@ -30,29 +35,28 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework
transform.GlobalPosition = aiTransform.GlobalPosition + aiTransform.Forward * 0.7f; transform.GlobalPosition = aiTransform.GlobalPosition + aiTransform.Forward * 0.7f;
transform.GlobalEulerAngles = aiTransform.GlobalEulerAngles; transform.GlobalEulerAngles = aiTransform.GlobalEulerAngles;
} }
if (raccoonFound && pc && ai)
{
if (!ai.atk)
raccoonFound = false;
}
} }
protected override void onTriggerStay(CollisionInfo info) protected override void onTriggerStay(CollisionInfo info)
{ {
if (info.GameObject.GetScript<PlayerController>())
PlayerController pc = info.GameObject.GetScript<PlayerController>(); {
HomeOwnerAI ai = aiGO.GetScript<HomeOwnerAI>(); pc = info.GameObject.GetScript<PlayerController>();
if (pc) if (ai && ai.atk && pc)
{
pc.currentState = RaccoonStates.CAUGHT;
if (pc.stateMachine && !pc.stateMachine.IsState(typeof(PlayerCaughtState)))
pc.stateMachine.SetState(typeof(PlayerCaughtState));
pc.GotCaught();
if (ai)
{ {
ai.Reset(); raccoonFound = true;
GameObject.SetActive(false);
} }
} }
} }

View File

@ -37,23 +37,23 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework
{ {
lookOffset = 0.0f; lookOffset = 0.0f;
} }
else //else
{ //{
if(left ) // if(left )
{ // {
if (lookOffset > -lookAroundAngle) // if (lookOffset > -lookAroundAngle)
lookOffset -= rotationPerSecond * Time.DeltaTimeF; // lookOffset -= rotationPerSecond * Time.DeltaTimeF;
else // else
left = false; // left = false;
} // }
if (!left) // if (!left)
{ // {
if (lookOffset < lookAroundAngle) // if (lookOffset < lookAroundAngle)
lookOffset += rotationPerSecond * Time.DeltaTimeF; // lookOffset += rotationPerSecond * Time.DeltaTimeF;
else // else
left = false; // left = false;
} // }
} //}
@ -75,7 +75,7 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework
if(vel.GetMagnitude() > 0.01f) if(vel.GetMagnitude() > 0.01f)
{ {
Quaternion currentRotation = transform.LocalRotation; Quaternion currentRotation = transform.LocalRotation;
Quaternion targetRotation = Quaternion.Euler(0.0f, MathF.Atan2(vel.x, vel.z) + lookOffset, 0.0f); Quaternion targetRotation = Quaternion.Euler(0.0f, MathF.Atan2(vel.x, vel.z) + lookOffset, 0.0f);
transform.LocalRotation = Quaternion.Slerp(currentRotation, targetRotation, rotationPerSecond * (float)Time.DeltaTimeF); transform.LocalRotation = Quaternion.Slerp(currentRotation, targetRotation, rotationPerSecond * (float)Time.DeltaTimeF);
} }
} }

View File

@ -1,54 +1,82 @@
using SHADE; using SHADE;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using SHADE_Scripting.Audio;
namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States
{ {
public class AlertState: AIBaseState public class AlertState : AIBaseState
{
const float alertDuration = 16.0f / 30.0f + 1.0f;
float alertTimer = alertDuration;
bool firstDetection;
public AlertState(StateMachine machine) : base(machine)
{ {
const float alertDuration = 16.0f/30.0f + 1.0f; stateName = "Alert";
float alertTimer = alertDuration; AudioHandler.audioClipHandlers["raccoondetected"] = SHADE.Audio.CreateAudioClip("event:/Raccoon/raccoon_detected");
firstDetection = true;
}
public override void OnEnter()
{
alertTimer = alertDuration;
if (animator)
{
animator.PlayOneShot(ai.alertAnim);
public AlertState(StateMachine machine): base(machine) }
if(firstDetection)
{
SHADE.Audio.SetParameterWithLabel("HomeownerBark", "DetectFirst");
AudioHandler.audioClipHandlers["HO_bark"].Play();
firstDetection = false;
}
else
{
PlayerController pc = ai.player.GetScript<PlayerController>();
if (pc && pc.holdItem)
{ {
stateName = "Alert"; SHADE.Audio.SetParameterWithLabel("HomeownerBark", "DetectFood");
} AudioHandler.audioClipHandlers["HO_bark"].Play();
}
public override void OnEnter() else
{ {
alertTimer = alertDuration; SHADE.Audio.SetParameterWithLabel("HomeownerBark", "DetectAgain");
if(animator) AudioHandler.audioClipHandlers["HO_bark"].Play();
{ }
animator.PlayOneShot(ai.alertAnim);
}
} SHADE.Audio.SetParameterWithLabel("PlayerDetection", "Detected");
}
public override void OnExit()
{
animator.Stop();
}
public override void update() }
{ public override void OnExit()
alertTimer -= Time.DeltaTimeF; {
if (alertTimer <= 0.0f) animator.Stop();
{ }
machine.SetState(typeof(ChaseState));
}
}
public override void update()
{
alertTimer -= Time.DeltaTimeF;
public override void fixedUpdate() if (alertTimer <= 0.0f)
{ {
machine.SetState(typeof(ChaseState));
} }
} }
public override void fixedUpdate()
{
}
}
} }

View File

@ -7,145 +7,180 @@ using System.Threading.Tasks;
namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States
{ {
public class AttackState: AIBaseState public class AttackState : AIBaseState
{
float timer = 0.0f;
float windupTime = 8.0f / 30.0f;
float holdTime = 0.3f;
float seqTime = 8.0f / 30.0f;
float endTime = 0.5f;
bool windUp = false;
bool hold = false;
bool seq = false;
bool end = false;
bool raccoonCaught = true;
public AttackState(StateMachine machine) : base(machine)
{ {
stateName = "Attack";
float timer = 0.0f; }
float windupTime = 8.0f / 30.0f;
float holdTime = 0.3f;
float seqTime = 8.0f / 30.0f ;
float endTime = 0.5f;
bool windUp = false; public override void OnEnter()
bool hold = false; {
bool seq = false; timer = 0.0f;
bool end = false; animator.PlayOneShot(ai.atkWindupAnim);
windUp = true;
hold = false;
seq = false;
end = false;
timer = windupTime;
public AttackState(StateMachine machine): base(machine) raccoonCaught = false;
{
} RotateToVelocity rotate = machine.GetScript<RotateToVelocity>();
if (rotate)
rotate.active = false;
RigidBody rigid = machine.GetComponent<RigidBody>();
if (rigid)
{
rigid.LinearVelocity = Vector3.Zero;
}
Transform transform = machine.GetComponent<Transform>();
AILineOfSight los = machine.GetScript<AILineOfSight>();
Transform playerTransform = ai.player.GetComponent<Transform>();
public override void OnEnter() if (los && transform)
{ {
timer = 0.0f; Vector3 direction = playerTransform.GlobalPosition - transform.GlobalPosition;
animator.PlayOneShot(ai.atkWindupAnim); Quaternion targetRotation = Quaternion.Euler(0.0f, MathF.Atan2(direction.x, direction.z), 0.0f);
windUp = true; transform.LocalRotation = targetRotation;
hold = false;
seq = false;
end = false;
timer = windupTime;
RotateToVelocity rotate = machine.GetScript<RotateToVelocity>(); }
if (rotate)
rotate.active = false;
RigidBody rigid = machine.GetComponent<RigidBody>(); //ai.attackHitbox.SetActive(false);
if(rigid)
{
rigid.LinearVelocity = Vector3.Zero;
}
Transform transform = machine.GetComponent<Transform>();
AILineOfSight los = machine.GetScript<AILineOfSight>();
Transform playerTransform = ai.player.GetComponent<Transform>();
if (los && transform)
{
Vector3 direction = playerTransform.GlobalPosition - transform.GlobalPosition;
Quaternion targetRotation = Quaternion.Euler(0.0f, MathF.Atan2(direction.x, direction.z), 0.0f);
transform.LocalRotation = targetRotation;
}
ai.attackHitbox.SetActive(false);
}
public override void OnExit()
{
animator.Stop();
RotateToVelocity rotate = ai.GetScript<RotateToVelocity>();
if (rotate)
{
rotate.active = true;
rotate.lookAround = false;
}
ai.attackHitbox.SetActive(false);
}
public override void update()
{
timer -= Time.DeltaTimeF;
if(windUp)
{
if(timer <= 0.0f)
{
windUp = false;
hold = true;
animator.Play(ai.atkHoldAnim);
timer = holdTime;
ai.attackHitbox.SetActive(true);
}
}
else if(hold)
{
if(timer <= 0.0f)
{
hold = false;
seq = true;
animator.PlayOneShot(ai.atkSeqAnim);
timer = seqTime;
}
}
else if(seq)
{
if(timer <= 1.0f / 30.0f)
{
ai.attackHitbox.SetActive(true);
}
if(timer <= 0.0f)
{
seq = false;
end = true;
timer = endTime;
}
}
else if(end)
{
if(timer <= 0.0f)
{
end = false;
AILineOfSight los = ai.GetScript<AILineOfSight>();
if (los && los.withinSight)
{
machine.SetState(typeof(ChaseState));
}
else
{
machine.SetState(typeof(TimeoutState));
}
}
}
}
public override void fixedUpdate()
{
}
} }
public override void OnExit()
{
RotateToVelocity rotate = ai.GetScript<RotateToVelocity>();
if (rotate)
{
rotate.active = true;
rotate.lookAround = false;
}
//ai.attackHitbox.SetActive(false);
machine.GetScript<HomeOwnerAI>().atk = false;
}
public override void update()
{
if (ai.hitboxScript.raccoonFound && machine.GetScript<HomeOwnerAI>().atk)
{
raccoonCaught = true;
Transform pcTransform = ai.player.GetComponent<Transform>();
ai.player.GetScript<PlayerController>().Caught();
Transform netTransform = ai.attackHitbox.GetComponentInChildren<Transform>();
if (pcTransform && netTransform)
{
pcTransform.GlobalPosition = netTransform.GlobalPosition;
}
}
timer -= Time.DeltaTimeF;
if (windUp)
{
if (timer <= 0.0f)
{
windUp = false;
hold = true;
animator.Play(ai.atkHoldAnim);
timer = holdTime;
//ai.attackHitbox.SetActive(true);
//machine.GetScript<HomeOwnerAI>().atk = true;
}
}
else if (hold)
{
if (timer <= 0.0f)
{
hold = false;
seq = true;
animator.PlayOneShot(ai.atkSeqAnim);
timer = seqTime;
}
}
else if (seq)
{
if (timer <= seqTime * 0.5f)
{
//ai.attackHitbox.SetActive(true);
machine.GetScript<HomeOwnerAI>().atk = true;
}
if (timer <= 0.0f)
{
seq = false;
end = true;
timer = endTime;
}
}
else if (end)
{
if (timer <= 0.0f)
{
end = false;
if(raccoonCaught)
{
machine.SetState(typeof(CaughtRaccoonState));
}
else
{
AILineOfSight los = ai.GetScript<AILineOfSight>();
if (los && los.withinSight)
{
machine.SetState(typeof(ChaseState));
}
else
{
machine.SetState(typeof(TimeoutState));
}
}
}
}
}
public override void fixedUpdate()
{
}
}
} }

View File

@ -0,0 +1,72 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SHADE;
using static PlayerController;
namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States
{
public class CaughtRaccoonState: AIBaseState
{
private float timer = 0.0f;
private PlayerController pc;
public CaughtRaccoonState(StateMachine machine):base(machine)
{
stateName = "Caught Raccoon";
}
public override void OnEnter()
{
if(ai.hitboxScript)
pc = ai.hitboxScript.pc;
timer = ai.caughtDuration;
if (pc)
pc.Caught();
}
public override void OnExit()
{
animator.Stop();
}
public override void update()
{
timer -= Time.DeltaTimeF;
if(timer <= 0.0f)
{
if (pc)
{
pc.Reset();
}
ai.Reset();
}
else
{
Transform pcTransform = pc.GetComponent<Transform>();
Transform netTransform = ai.attackHitbox.GetComponentInChildren<Transform>();
if (pcTransform && netTransform)
{
pcTransform.GlobalPosition = netTransform.GlobalPosition;
}
}
}
public override void fixedUpdate()
{
}
}
}

View File

@ -0,0 +1,3 @@
Name: CaughtRaccoonState
ID: 153010954
Type: 9

View File

@ -14,7 +14,7 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States
float giveUpDuration = 10.0f; float giveUpDuration = 10.0f;
float giveUpTimer = 0.0f; float giveUpTimer = 0.0f;
float atkDistance = 2.0f; float atkDistance = 1.0f;
bool run = true; bool run = true;
@ -22,10 +22,16 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States
float footStepInterval = 12.0f / 30.0f; float footStepInterval = 12.0f / 30.0f;
float footStepTimer = 0.0f; float footStepTimer = 0.0f;
float barkTimer = 0.0f;
Random rand;
public ChaseState(StateMachine machine): base(machine) public ChaseState(StateMachine machine): base(machine)
{ {
stateName = "Chase"; stateName = "Chase";
rand = new Random();
} }
public override void OnEnter() public override void OnEnter()
@ -42,6 +48,9 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States
footStepTimer = footStepInterval * 0.5f; footStepTimer = footStepInterval * 0.5f;
barkTimer = (float)rand.Next(0, 2) + (float)rand.NextDouble();
} }
public override void OnExit() public override void OnExit()
@ -57,11 +66,25 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States
{ {
rotate.lookAround = false; rotate.lookAround = false;
} }
} }
public override void update() public override void update()
{ {
Navigation nav = machine.GetComponent<Navigation>(); barkTimer -= Time.DeltaTimeF;
if(barkTimer <= 0.0f)
{
barkTimer = (float)rand.Next(4, 6) + (float)rand.NextDouble();
SHADE.Audio.SetParameterWithLabel("HomeownerBark", "Chase");
AudioHandler.audioClipHandlers["HO_bark"].Play();
}
Navigation nav = machine.GetComponent<Navigation>();
AILineOfSight los = ai.GetScript<AILineOfSight>(); AILineOfSight los = ai.GetScript<AILineOfSight>();
RigidBody rigid = machine.GetComponent<RigidBody>(); RigidBody rigid = machine.GetComponent<RigidBody>();
if (los && nav) if (los && nav)

View File

@ -24,6 +24,7 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States
{ {
timer = 0.0f; timer = 0.0f;
animator.Play(ai.idleAnim); animator.Play(ai.idleAnim);
SHADE.Audio.SetParameterWithLabel("PlayerDetection", "Undetected");
RotateToVelocity rotate = ai.GetScript<RotateToVelocity>(); RotateToVelocity rotate = ai.GetScript<RotateToVelocity>();
if (rotate) if (rotate)
{ {

View File

@ -50,6 +50,7 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States
animator.Play(ai.walkingAnim); animator.Play(ai.walkingAnim);
AudioHandler.audioClipHandlers["HO_footsteps"].Play(); AudioHandler.audioClipHandlers["HO_footsteps"].Play();
AudioHandler.audioClipHandlers["HO_humming"].Play();
footStepTimer = footStepInterval; footStepTimer = footStepInterval;
@ -64,7 +65,8 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States
public override void OnExit() public override void OnExit()
{ {
animator.Stop(); animator.Stop();
} AudioHandler.audioClipHandlers["HO_humming"].Stop(false);
}
public override void update() public override void update()
{ {

View File

@ -4,6 +4,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using SHADE; using SHADE;
using SHADE_Scripting.Audio;
namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States
{ {
@ -23,7 +24,10 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States
timer = 0.0f; timer = 0.0f;
animator.Play(ai.idleAnim); animator.Play(ai.idleAnim);
} SHADE.Audio.SetParameterWithLabel("HomeownerBark", "DetectLost");
AudioHandler.audioClipHandlers["HO_bark"].Play();
}
public override void update() public override void update()
{ {

View File

@ -14,9 +14,6 @@ public class Breakable : Script
public bool isBreak { get; set; } public bool isBreak { get; set; }
private List<GameObject> itemPieces = new List<GameObject>(); private List<GameObject> itemPieces = new List<GameObject>();
[SerializeField]
private string breakClipHandlerName;
[SerializeField] [SerializeField]
private string breakClipPath; private string breakClipPath;
@ -38,7 +35,8 @@ public class Breakable : Script
isBreak = false; isBreak = false;
AudioHandler.audioClipHandlers[breakClipHandlerName] = Audio.CreateAudioClip(breakClipPath); AudioHandler.audioClipHandlers["break"] = Audio.CreateAudioClip(breakClipPath);
Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers["break"], GameObject.EntityId);
} }
protected override void update() protected override void update()
@ -81,9 +79,7 @@ public class Breakable : Script
GameManager.Instance.itemShatter = false; GameManager.Instance.itemShatter = false;
isBreak = false; isBreak = false;
Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers[breakClipHandlerName], GameObject.EntityId); AudioHandler.audioClipHandlers["break"].Play();
AudioHandler.audioClipHandlers[breakClipHandlerName].Play();
//Audio.DetachAudioClipFromObject(AudioHandler.audioClipHandlers[breakClipHandlerName]);
GameObject.SetActive(false); GameObject.SetActive(false);
} }
} }

View File

@ -1,5 +1,6 @@
using SHADE; using SHADE;
using SHADE_Scripting.Audio; using SHADE_Scripting.Audio;
using SHADE_Scripting.Gameplay.AIBehaviour.AIRework;
using System; using System;
public class Item : Script public class Item : Script
{ {
@ -26,14 +27,12 @@ public class Item : Script
public bool returnBack { get; set; } public bool returnBack { get; set; }
private Transform transform; private Transform transform;
private RigidBody rb; private RigidBody rb;
private bool playSound = false;
private bool caputurePos = false; private bool caputurePos = false;
private Vector3 firstPostion; private Vector3 firstPostion;
private Vector3 firstRotation; private Vector3 firstRotation;
public bool dontReturn = false; public bool dontReturn = false;
private bool once = true;
private bool checkSound = false;
private bool homeownerOnce = true; private bool homeownerOnce = true;
public float soundDistance = 10; public float soundDistance = 10;
@ -60,6 +59,11 @@ public class Item : Script
AudioHandler.audioClipHandlers["SFXImpactElastic"] = Audio.CreateAudioClip("event:/Props/impact_elastic"); AudioHandler.audioClipHandlers["SFXImpactElastic"] = Audio.CreateAudioClip("event:/Props/impact_elastic");
AudioHandler.audioClipHandlers["SFXImpactHard"] = Audio.CreateAudioClip("event:/Props/impact_hard"); AudioHandler.audioClipHandlers["SFXImpactHard"] = Audio.CreateAudioClip("event:/Props/impact_hard");
if (currCategory == ItemCategory.LIGHT)
Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers["SFXImpactElastic"], GameObject.EntityId);
else if (currCategory == ItemCategory.MEDIUM || currCategory == ItemCategory.HEAVY)
Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers["SFXImpactHard"], GameObject.EntityId);
emitter = GetComponent<ParticleEmitter>(); emitter = GetComponent<ParticleEmitter>();
} }
@ -114,19 +118,6 @@ public class Item : Script
returnBack = false; returnBack = false;
} }
if (checkSound)
{
/* //need to wait for collisionEnter Fix
Vector3 itemPos = transform.LocalPosition;
Vector3 len = Homeowner1.aiInstance.GetComponent<Transform>().LocalPosition - itemPos;
Debug.Log($"distance: {len.GetSqrMagnitude()}");
if (len.GetSqrMagnitude() <= soundDistance)
{
//set ai to alert
}
checkSound = false;*/
}
} }
protected override void onCollisionEnter(CollisionInfo info) protected override void onCollisionEnter(CollisionInfo info)
@ -139,23 +130,21 @@ public class Item : Script
caputurePos = true; caputurePos = true;
} }
if (playSound) if (once)
{ {
Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers["SFXImpactElastic"], GameObject.EntityId);
Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers["SFXImpactHard"], GameObject.EntityId);
if (currCategory == ItemCategory.LIGHT) if (currCategory == ItemCategory.LIGHT)
AudioHandler.audioClipHandlers["SFXImpactElastic"].Play(); AudioHandler.audioClipHandlers["SFXImpactElastic"].Play();
else if (currCategory == ItemCategory.MEDIUM || currCategory == ItemCategory.HEAVY) else if (currCategory == ItemCategory.MEDIUM || currCategory == ItemCategory.HEAVY)
AudioHandler.audioClipHandlers["SFXImpactHard"].Play(); AudioHandler.audioClipHandlers["SFXImpactHard"].Play();
playSound = false;
Audio.DetachAudioClipFromObject(AudioHandler.audioClipHandlers["SFXImpactElastic"]);
Audio.DetachAudioClipFromObject(AudioHandler.audioClipHandlers["SFXImpactHard"]);
if(emitter) if (emitter)
emitter.Emit(); emitter.Emit();
once = false;
} }
if (info.GameObject.GetScript<Homeowner1>() && homeownerOnce)
if (info.GameObject.GetScript<HomeOwnerAI>() && homeownerOnce)
{ {
homeownerOnce = false; homeownerOnce = false;
returnBack = true; returnBack = true;
@ -164,9 +153,8 @@ public class Item : Script
protected override void onCollisionExit(CollisionInfo info) protected override void onCollisionExit(CollisionInfo info)
{ {
playSound = true;
checkSound = true;
homeownerOnce = true; homeownerOnce = true;
once = true;
} }
} }

View File

@ -474,7 +474,7 @@ public class PickAndThrow : Script
} }
} }
private void TweenAimCamArm(bool aim) public void TweenAimCamArm(bool aim)
{ {
if (aim) if (aim)

View File

@ -1,4 +1,4 @@
using SHADE; using SHADE;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using SHADE_Scripting.Audio; using SHADE_Scripting.Audio;
@ -22,7 +22,10 @@ public class PlayerController : Script
public Transform tranform { get; set; } public Transform tranform { get; set; }
public Camera cam { get; set; } public Camera cam { get; set; }
public CameraArm camArm { get; set; } public CameraArm camArm { get; set; }
private PickAndThrow pat; public Collider collider { get; set; }
[NonSerialized]
public PickAndThrow pat;
public StateMachine stateMachine { get; set; } public StateMachine stateMachine { get; set; }
public ParticleEmitter Leftsmoke { get; set; } public ParticleEmitter Leftsmoke { get; set; }
public ParticleEmitter Rightsmoke { get; set; } public ParticleEmitter Rightsmoke { get; set; }
@ -122,6 +125,10 @@ public class PlayerController : Script
if(!tranform) if(!tranform)
Debug.LogError("tranform is MISSING!"); Debug.LogError("tranform is MISSING!");
collider = GetComponent<Collider>();
if (!collider)
Debug.LogError("collider is MISSING!");
stateMachine = AddScript<StateMachine>(); stateMachine = AddScript<StateMachine>();
Dictionary<Type, BaseState> dictionary = new Dictionary<Type, BaseState>(); Dictionary<Type, BaseState> dictionary = new Dictionary<Type, BaseState>();
dictionary.Add(typeof(PlayerIdleState), new PlayerIdleState(stateMachine)); dictionary.Add(typeof(PlayerIdleState), new PlayerIdleState(stateMachine));
@ -189,7 +196,7 @@ public class PlayerController : Script
float ratio = System.Math.Clamp(1 - (disSqr / (1 + disSqr)), 0, 1.0f); float ratio = System.Math.Clamp(1 - (disSqr / (1 + disSqr)), 0, 1.0f);
float temp = (1 - ratio) * 0.00075f; float temp = (1 - ratio) * 0.00075f;
if (temp <= 0.0006f) if (temp <= 0.0006f)
temp = 0.1f; temp = 0.0075f;
silhouettePlayerRend.Material.SetProperty<float>("data.offset", temp); silhouettePlayerRend.Material.SetProperty<float>("data.offset", temp);
silhouetteBagRend.Material.SetProperty<float>("data.offset", temp); silhouetteBagRend.Material.SetProperty<float>("data.offset", temp);
} }
@ -227,7 +234,7 @@ public class PlayerController : Script
} }
} }
GotCaught();
Rotation(); Rotation();
MoveKey(); MoveKey();
Sprint(); Sprint();
@ -254,6 +261,10 @@ public class PlayerController : Script
private void MoveKey() private void MoveKey()
{ {
if (currentState == RaccoonStates.CAUGHT)
return;
axisMove = Vector2.Zero; axisMove = Vector2.Zero;
if (Input.GetKey(Input.KeyCode.W)) if (Input.GetKey(Input.KeyCode.W))
{ {
@ -290,7 +301,7 @@ public class PlayerController : Script
axisMove.Normalise(); axisMove.Normalise();
isMoveKeyPress = axisMove.x != 0 || axisMove.y != 0; isMoveKeyPress = axisMove.x != 0 || axisMove.y != 0;
if (isMoveKeyPress && isGrounded && !Input.GetKey(Input.KeyCode.LeftShift)) if (isMoveKeyPress && isGrounded && !Input.GetKey(Input.KeyCode.LeftShift) && currentState != RaccoonStates.CAUGHT)
{ {
currentState = RaccoonStates.WALKING; currentState = RaccoonStates.WALKING;
@ -334,6 +345,9 @@ public class PlayerController : Script
private void Sprint() private void Sprint()
{ {
if (currentState == RaccoonStates.CAUGHT)
return;
if (Input.GetKey(Input.KeyCode.LeftShift) && isMoveKeyPress && isGrounded) if (Input.GetKey(Input.KeyCode.LeftShift) && isMoveKeyPress && isGrounded)
{ {
currentState = RaccoonStates.RUNNING; currentState = RaccoonStates.RUNNING;
@ -343,6 +357,9 @@ public class PlayerController : Script
if (pat && holdItem) if (pat && holdItem)
{ {
holdItem = false; holdItem = false;
isAiming = false;
cam.FOV = Settings.cameraFOV;
pat.TweenAimCamArm(false);
pat.SetItemGravityBack(); pat.SetItemGravityBack();
pat.ResetItemObject(); pat.ResetItemObject();
} }
@ -423,10 +440,13 @@ public class PlayerController : Script
} }
if (!isGrounded && rb != null && (rb.LinearVelocity.y < 0.0f || Input.GetKeyUp(Input.KeyCode.Space))) if (!isGrounded && rb != null && (rb.LinearVelocity.y < 0.0f || Input.GetKeyUp(Input.KeyCode.Space)))
{ {
currentState = RaccoonStates.FALLING; if (currentState != RaccoonStates.CAUGHT)
if (stateMachine && !stateMachine.IsState(typeof(PlayerFallState))) {
stateMachine.SetState(typeof(PlayerFallState)); currentState = RaccoonStates.FALLING;
if (stateMachine && !stateMachine.IsState(typeof(PlayerFallState)))
stateMachine.SetState(typeof(PlayerFallState));
}
} }
} }
@ -451,6 +471,9 @@ public class PlayerController : Script
private void Gravity() private void Gravity()
{ {
if (currentState == RaccoonStates.CAUGHT)
return;
if (rb != null) if (rb != null)
{ {
//check player vel.y if its close to zero its on the ground //check player vel.y if its close to zero its on the ground
@ -502,36 +525,54 @@ public class PlayerController : Script
} }
} }
public void GotCaught()
public void Caught()
{ {
if (currentState == RaccoonStates.CAUGHT && tranform && respawnPoint) currentState = RaccoonStates.CAUGHT;
if (stateMachine && !stateMachine.IsState(typeof(PlayerCaughtState)))
stateMachine.SetState(typeof(PlayerCaughtState));
AudioHandler.audioClipHandlers["RaccoonCaught"].Play();
if (pat && pat.item)
{ {
AudioHandler.audioClipHandlers["RaccoonCaught"].Play(); if (holdItem)
{
holdItem = false;
pat.item.GetScript<Item>().returnBack = true;
pat.SetItemGravityBack();
pat.ResetItemObject();
}
if (isAiming)
{
isAiming = false;
cam.FOV = Settings.cameraFOV;
camArm.TargetOffset = pat.prevTargetOffSet;
camArm.ArmLength = pat.tpc.armLength;
}
}
landedOnJumpPad = false;
jumpPadDrop = false;
rb.ClearForces();
rb.ClearTorque();
rb.LinearVelocity = Vector3.Zero;
rb.AngularVelocity = Vector3.Zero;
collider.GetCollisionShape(0).IsTrigger = true;
}
public void Reset()
{
if (tranform && respawnPoint)
{
currentState = RaccoonStates.IDLE; currentState = RaccoonStates.IDLE;
if (stateMachine && !stateMachine.IsState(typeof(PlayerIdleState))) if (stateMachine && !stateMachine.IsState(typeof(PlayerIdleState)))
stateMachine.SetState(typeof(PlayerIdleState)); stateMachine.SetState(typeof(PlayerIdleState));
collider.GetCollisionShape(0).IsTrigger = false;
tranform.GlobalPosition = respawnPoint.GetComponent<Transform>().GlobalPosition; tranform.GlobalPosition = respawnPoint.GetComponent<Transform>().GlobalPosition;
GameManager.Instance.RacoonCaught(); GameManager.Instance.RacoonCaught();
if (pat && pat.item)
{
if (holdItem)
{
holdItem = false;
pat.item.GetScript<Item>().returnBack = true;
pat.SetItemGravityBack();
pat.ResetItemObject();
}
if (isAiming)
{
isAiming = false;
cam.FOV = Settings.cameraFOV;
camArm.TargetOffset = pat.prevTargetOffSet;
camArm.ArmLength = pat.tpc.armLength;
}
}
} }
} }

View File

@ -0,0 +1,47 @@
using SHADE;
using SHADE_Scripting.Audio;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
public class DecorationAudio : Script
{
public string name = "REPLACETHIS";
public string audio = "event:/UI/botton_hover";
public bool loop = true;
public float timeDruation = 0.5f;
private float timer = 0.0f;
protected override void awake()
{
if (audio != "Empty")
{
AudioHandler.audioClipHandlers[name] = Audio.CreateAudioClip(audio);
Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers[name], GameObject.EntityId);
}
}
protected override void start()
{
if (loop)
AudioHandler.audioClipHandlers[name].Play();
}
protected override void update()
{
if (!loop)
{
timer += Time.DeltaTimeF;
if (timer > timeDruation)
{
timer = 0.0f;
AudioHandler.audioClipHandlers[name].Play();
}
}
}
}

View File

@ -0,0 +1,3 @@
Name: SC_DecorationAudio
ID: 166447267
Type: 9

View File

@ -10,12 +10,10 @@ public class GameManager : Script
public enum GameState public enum GameState
{ {
START, START,
WIN, OVER
LOSE
} }
public uint winScene = 92009475; public uint winScene = 92009475;
public uint loseScene = 91685359;
[NonSerialized] [NonSerialized]
public GameState currGameState; public GameState currGameState;
@ -27,9 +25,16 @@ public class GameManager : Script
public float timer; public float timer;
public GameObject scoreText; public GameObject scoreText;
public GameObject scoreTextBG;
public GameObject timeText; public GameObject timeText;
public GameObject minusTimerText; public GameObject minusTimerText;
public GameObject Results;
public int MaxComboAccquired { get; set; }
public int finalTime { get; set; }
public int finalScore { get; set; }
//mulitpler info //mulitpler info
public GameObject multiplierText; public GameObject multiplierText;
public float maxMultiplierDuration = 5.0f; public float maxMultiplierDuration = 5.0f;
@ -48,8 +53,9 @@ public class GameManager : Script
public bool itemShatter { get; set; } public bool itemShatter { get; set; }
//For scene transitions //For scene transitions
private bool goingToWin; private bool waitForTransition;
private bool goingToLose;
private bool playSpeedUp = false;
protected override void awake() protected override void awake()
{ {
@ -62,7 +68,7 @@ public class GameManager : Script
Score = 0; Score = 0;
currGameState = GameState.START; currGameState = GameState.START;
itemScored = false; itemScored = false;
currMultiplierCombo = 1; currMultiplierCombo = 0;
currMultiplierDuration = 0; currMultiplierDuration = 0;
itemShatter = false; itemShatter = false;
GamePause = false; GamePause = false;
@ -77,8 +83,7 @@ public class GameManager : Script
loseAudio.DestroyOnSceneExit = false; loseAudio.DestroyOnSceneExit = false;
AudioHandler.audioClipHandlers["BGMLose"] = loseAudio; AudioHandler.audioClipHandlers["BGMLose"] = loseAudio;
goingToWin = false; waitForTransition = false;
goingToLose = false;
if (scoreText) if (scoreText)
scoreText.GetComponent<TextRenderable>().Text = $"{Score}"; scoreText.GetComponent<TextRenderable>().Text = $"{Score}";
@ -91,6 +96,7 @@ public class GameManager : Script
AudioHandler.audioClipHandlers["SFXItemScore"] = Audio.CreateAudioClip("event:/Music/stingers/item_scored"); AudioHandler.audioClipHandlers["SFXItemScore"] = Audio.CreateAudioClip("event:/Music/stingers/item_scored");
AudioHandler.audioClipHandlers["RaccoonScored"] = Audio.CreateAudioClip("event:/Raccoon/raccoon_scored"); AudioHandler.audioClipHandlers["RaccoonScored"] = Audio.CreateAudioClip("event:/Raccoon/raccoon_scored");
Audio.SetParameterWithLabel("PlaybackSpeed", "Normal");
} }
protected override void start() protected override void start()
@ -103,16 +109,11 @@ public class GameManager : Script
AudioHandler.audioClipHandlers["KitchenAmbience"] = Audio.CreateAudioClip("event:/Ambience/roomtone_kitchen"); AudioHandler.audioClipHandlers["KitchenAmbience"] = Audio.CreateAudioClip("event:/Ambience/roomtone_kitchen");
AudioHandler.audioClipHandlers["KitchenAmbience"].Play(); AudioHandler.audioClipHandlers["KitchenAmbience"].Play();
if (SceneFadeInOut.Instance != null)
SceneFadeInOut.Instance.CallFadeOut();
GamePause = false; GamePause = false;
} }
protected override void update() protected override void update()
{ {
if (GamePause || !stealFoodPopUpDone) if (GamePause || !stealFoodPopUpDone)
{ {
return; return;
@ -121,104 +122,80 @@ public class GameManager : Script
Cheat(); Cheat();
if (currGameState == GameState.START) if (currGameState == GameState.START)
{ {
timer -= Time.DeltaTimeF; timer -= Time.DeltaTimeF;
if(scoreText)
if (timer < 30.0f && !playSpeedUp)
{
Audio.SetParameterWithLabel("PlaybackSpeed", "ToTransition");
playSpeedUp = true;
}
if (scoreText)
scoreText.GetComponent<TextRenderable>().Text = $"{Score}"; scoreText.GetComponent<TextRenderable>().Text = $"{Score}";
if(timeText) if (timeText)
timeText.GetComponent<TextRenderable>().Text = $"{timer.ToString("0.00")}"; timeText.GetComponent<TextRenderable>().Text = $"{timer.ToString("0")}";
if (itemScored) if (itemScored)
{ {
currMultiplierDuration += Time.DeltaTimeF; currMultiplierDuration += Time.DeltaTimeF;
if (currMultiplierDuration >= maxMultiplierDuration) if (currMultiplierDuration >= maxMultiplierDuration)
{ {
itemScored = false; itemScored = false;
currMultiplierCombo = 1; currMultiplierCombo = 0;
currMultiplierDuration = 0; currMultiplierDuration = 0;
} }
} }
if (!goingToLose && ((timer > 0 && totalItemCount <= 0 && !itemShatter))) if (timer <= 0 || (totalItemCount <= 0 && !itemShatter))
{ {
currGameState = GameState.WIN;
AudioHandler.StopAllSounds(false); AudioHandler.StopAllSounds(false);
AudioHandler.audioClipHandlers["BGMWin"].Play();
goingToWin = true; if (timer <= 0)
if (SceneFadeInOut.Instance != null) AudioHandler.audioClipHandlers["BGMLose"].Play();
SceneFadeInOut.Instance.CallFadeIn(); else if (totalItemCount <= 0)
} AudioHandler.audioClipHandlers["BGMWin"].Play();
else if(!goingToWin && (timer < 0))
{ currGameState = GameState.OVER;
currGameState = GameState.LOSE; finalTime = (int)timer;
AudioHandler.StopAllSounds(false); Results.SetActive(true);
AudioHandler.audioClipHandlers["BGMLose"].Play();
goingToLose = true; Input.SetMouseCentering(false);
if (SceneFadeInOut.Instance != null) Application.IsCursorVisible = true;
SceneFadeInOut.Instance.CallFadeIn(); GamePause = true;
Application.FixDeltaTime = 0;
AnimationSystem.TimeScale = 0;
} }
} }
//Handling transitions
if (SceneFadeInOut.Instance != null) if (SceneFadeInOut.Instance && SceneFadeInOut.Instance.FadeInFinished() && waitForTransition)
{ SceneManager.ChangeScene(winScene);
if (SceneFadeInOut.Instance.FadeInFinished())
{
if (goingToWin)
{
SceneManager.ChangeScene(winScene);
}
if (goingToLose)
{
SceneManager.ChangeScene(loseScene);
}
}
}
else
{
if (goingToWin)
{
SceneManager.ChangeScene(winScene);
}
if (goingToLose)
{
SceneManager.ChangeScene(loseScene);
}
}
} }
public void RacoonCaught() public void RacoonCaught()
{
timer -= 10.0f;
if (minusTimerText != GameObject.Null)
{ {
timer -= 10.0f; MinusTimerText text = minusTimerText.GetScript<MinusTimerText>();
if(minusTimerText != GameObject.Null) if (text)
{ {
MinusTimerText text =minusTimerText.GetScript<MinusTimerText>(); text.Reset();
if(text) }
{
text.Reset();
}
}
} }
}
private void Cheat() private void Cheat()
{ {
if (Input.GetKeyUp(Input.KeyCode.F1)) if (Input.GetKeyUp(Input.KeyCode.F1))
{ {
currGameState = GameState.WIN; currGameState = GameState.OVER;
AudioHandler.audioClipHandlers["BGMWin"].Play(); AudioHandler.audioClipHandlers["BGMWin"].Play();
AudioHandler.StopAllSounds(false); AudioHandler.StopAllSounds(false);
goingToWin = true; waitForTransition = true;
if (SceneFadeInOut.Instance != null)
SceneFadeInOut.Instance.CallFadeIn();
}
else if (Input.GetKeyUp(Input.KeyCode.F2))
{
currGameState = GameState.LOSE;
AudioHandler.audioClipHandlers["BGMLose"].Play();
AudioHandler.StopAllSounds(false);
goingToLose = true;
if (SceneFadeInOut.Instance != null) if (SceneFadeInOut.Instance != null)
SceneFadeInOut.Instance.CallFadeIn(); SceneFadeInOut.Instance.CallFadeIn();
} }
@ -245,23 +222,35 @@ public class GameManager : Script
currMultiplierDuration = 0; currMultiplierDuration = 0;
if (currMultiplierCombo < maxMultiplierCombo) if (currMultiplierCombo < maxMultiplierCombo)
{
currMultiplierCombo += 1; currMultiplierCombo += 1;
if (currMultiplierCombo > MaxComboAccquired)
MaxComboAccquired = currMultiplierCombo;
}
Audio.SetParameter("Multiplier", currMultiplierCombo); Audio.SetParameter("Multiplier", currMultiplierCombo);
AudioHandler.audioClipHandlers["SFXItemScore"].Play(); AudioHandler.audioClipHandlers["SFXItemScore"].Play();
AudioHandler.audioClipHandlers["RaccoonScored"].Play(); AudioHandler.audioClipHandlers["RaccoonScored"].Play();
MultiplierTextFx fx = multiplierText.GetScript<MultiplierTextFx>(); SingleScaleBounce textBounce = scoreText.GetScript<SingleScaleBounce>();
SingleScaleBounce textBGBounce = scoreTextBG.GetScript<SingleScaleBounce>();
/*
if (textBounce)
textBounce.ScaleBounceOnce();*/
if (textBGBounce)
textBGBounce.ScaleBounceOnce();
MultiplierTextFx fx = multiplierText.GetScript<MultiplierTextFx>();
if (fx) if (fx)
{ {
fx.ShowMultiplier(currMultiplierCombo, maxMultiplierDuration); fx.ShowMultiplier(currMultiplierCombo, maxMultiplierDuration);
} }
SingleScaleBounce sb = scoreText.GetScript<SingleScaleBounce>();
if(sb)
{
sb.ScaleBounceOnce();
}
} }

View File

@ -9,6 +9,7 @@ namespace SHADE_Scripting.UI
public class PreviewLevel : Script public class PreviewLevel : Script
{ {
private List<Camera> listOfCamera; private List<Camera> listOfCamera;
public GameObject levelTransistion;
public Vector3 endPoint1; public Vector3 endPoint1;
public Vector3 endPoint2; public Vector3 endPoint2;
@ -56,7 +57,7 @@ namespace SHADE_Scripting.UI
protected override void update() protected override void update()
{ {
if (SceneFadeInOut.Instance && !SceneFadeInOut.Instance.FadeOutFinished() && !point1Done) if (SceneFadeInOut.Instance && !levelTransistion.GetScript<LevelTransistion>().complete && !point1Done)
{ {
moveToEndPoint1.Reset(); moveToEndPoint1.Reset();
return; return;

View File

@ -22,7 +22,11 @@ public class ScoringZone : Script
{ {
if (GameManager.Instance && info.GameObject.GetScript<Item>() && info.GameObject.IsActiveSelf && !info.GameObject.GetComponent<Collider>().GetCollisionShape(0).IsTrigger ) if (GameManager.Instance && info.GameObject.GetScript<Item>() && info.GameObject.IsActiveSelf && !info.GameObject.GetComponent<Collider>().GetCollisionShape(0).IsTrigger )
{ {
GameManager.Instance.Score += info.GameObject.GetScript<Item>().Score * GameManager.Instance.currMultiplierCombo; if (GameManager.Instance.currMultiplierCombo > 1)
GameManager.Instance.Score += info.GameObject.GetScript<Item>().Score * GameManager.Instance.currMultiplierCombo;
else
GameManager.Instance.Score += info.GameObject.GetScript<Item>().Score;
GameManager.Instance.ItemScored(); GameManager.Instance.ItemScored();
particle.EmissionCount = startingParticleCount * GameManager.Instance.currMultiplierCombo; particle.EmissionCount = startingParticleCount * GameManager.Instance.currMultiplierCombo;
particle.Emit(); particle.Emit();

View File

@ -1,18 +1,20 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
public enum EASING_METHOD public enum EASING_METHOD
{ {
EASE_IN_SINE, EASE_IN_SINE,
EASE_OUT_SINE, EASE_OUT_SINE,
EASE_OUT_BOUNCE, EASE_OUT_BOUNCE,
EASE_IN_BOUNCE, EASE_IN_BOUNCE,
EASE_INOUT_BOUNCE, EASE_INOUT_BOUNCE,
LINEAR EASE_OUT_CIRCLE,
} EASE_OUT_BACK,
LINEAR
}
public static class EasingHelper public static class EasingHelper
{ {
@ -25,33 +27,41 @@ public static class EasingHelper
{ {
return EaseInSine(value); return EaseInSine(value);
} }
case EASING_METHOD.EASE_OUT_SINE: case EASING_METHOD.EASE_OUT_SINE:
{ {
return EaseOutSine(value); return EaseOutSine(value);
} }
case EASING_METHOD.EASE_OUT_BOUNCE: case EASING_METHOD.EASE_OUT_BOUNCE:
{ {
return EaseOutBounce(value); return EaseOutBounce(value);
} }
case EASING_METHOD.EASE_IN_BOUNCE: case EASING_METHOD.EASE_IN_BOUNCE:
{ {
return EaseInBounce(value); return EaseInBounce(value);
} }
case EASING_METHOD.EASE_INOUT_BOUNCE: case EASING_METHOD.EASE_INOUT_BOUNCE:
{ {
return EaseInOutBounce(value); return EaseInOutBounce(value);
} }
case EASING_METHOD.LINEAR: case EASING_METHOD.LINEAR:
{ {
return value; return value;
} }
case EASING_METHOD.EASE_OUT_CIRCLE:
default: {
return EaseOutCircle(value);
}
case EASING_METHOD.EASE_OUT_BACK:
{
return EaseOutBack(value);
}
default:
return 0.0f; return 0.0f;
} }
} }
@ -102,5 +112,18 @@ public static class EasingHelper
: (1.0f + EaseOutBounce(2.0f * value - 1.0f)) / 2.0f; : (1.0f + EaseOutBounce(2.0f * value - 1.0f)) / 2.0f;
} }
private static float EaseOutCircle(float value)
{
return (float)Math.Sqrt(1.0f - (float)Math.Pow(value - 1.0f, 2.0f));
}
private static float EaseOutBack(float value)
{
const float c1 = 1.70158f;
const float c3 = c1 + 1.0f;
return 1.0f + c3 * (float)Math.Pow(value - 1.0f, 3.0f) + c1 * (float)Math.Pow(value - 1.0f, 2.0f);
}
} }

View File

@ -54,7 +54,7 @@ namespace SHADE_Scripting.UI
protected override void start() protected override void start()
{ {
thread = TweenManager.CreateTweenThread(0.1f, 0.9f, 1.0f, EASING_METHOD.EASE_IN_SINE); thread = TweenManager.CreateTweenThread(0.1f, 0.9f, 1.0f, EASING_METHOD.EASE_OUT_BACK);
Transform transform = GetComponent<Transform>(); Transform transform = GetComponent<Transform>();

View File

@ -5,43 +5,43 @@ using SHADE_Scripting.UI;
public class ChangeSceneButton : Script public class ChangeSceneButton : Script
{ {
public uint sceneID = 0; public uint sceneID = 0;
//Whether the scene changing button has been clicked public GameObject levelTransistion;
private bool clickedFlag;
protected override void awake() private bool clickedFlag;
{
clickedFlag = false;
}
protected override void start() protected override void awake()
{
clickedFlag = false;
}
protected override void start()
{
UIElement ui = GetComponent<UIElement>();
if (ui != null)
{ {
UIElement ui = GetComponent<UIElement>(); ui.OnRelease.RegisterAction(() =>
if (ui != null) {
if (sceneID != 0)
{ {
ui.OnRelease.RegisterAction(() => Audio.PlaySFXOnce2D("event:/UI/success");
{ Audio.StopAllSounds();
if (sceneID != 0) clickedFlag = true;
{ levelTransistion.SetActive(true);
Audio.PlaySFXOnce2D("event:/UI/success");
Audio.StopAllSounds();
if (SceneFadeInOut.Instance != null)
SceneFadeInOut.Instance.CallFadeIn();
clickedFlag = true;
}
});
}
else
{
Debug.LogError("Failed to register button action for ChangeSceneButton.");
} }
});
} }
protected override void update() else
{ {
if (clickedFlag && sceneID != 0 && SceneFadeInOut.Instance.FadeInFinished()) Debug.LogError("Failed to register button action for ChangeSceneButton.");
{
SceneManager.ChangeScene(sceneID);
}
} }
}
protected override void update()
{
if (levelTransistion.GetScript<LevelTransistion>().complete && clickedFlag)
{
SceneManager.ChangeScene(sceneID);
}
}
} }

View File

@ -54,6 +54,9 @@ public class CutsceneEnd : Script
private bool cutscene4Done = false; private bool cutscene4Done = false;
private bool cutscene5Done = false; private bool cutscene5Done = false;
public GameObject levelTransition;
private bool waiting = false;
protected override void awake() protected override void awake()
{ {
initCutscene4(); initCutscene4();
@ -73,6 +76,9 @@ public class CutsceneEnd : Script
protected override void update() protected override void update()
{ {
if (!levelTransition.GetScript<LevelTransistion>().complete)
return;
Canvas4(); Canvas4();
Canvas5(); Canvas5();
@ -98,8 +104,12 @@ public class CutsceneEnd : Script
if (Input.GetKeyUp(Input.KeyCode.Space) && cutscene5Done && canvas5.IsActiveSelf) if (Input.GetKeyUp(Input.KeyCode.Space) && cutscene5Done && canvas5.IsActiveSelf)
{ {
SceneManager.ChangeScene(nextScene); levelTransition.GetScript<LevelTransistion>().resetToLeft();
waiting = true;
} }
if (levelTransition.GetScript<LevelTransistion>().complete && waiting)
SceneManager.ChangeScene(nextScene);
} }
private void Canvas4() private void Canvas4()

View File

@ -82,6 +82,9 @@ public class CutsceneIntro : Script
private bool cutscene2Done = false; private bool cutscene2Done = false;
private bool cutscene3Done = false; private bool cutscene3Done = false;
public GameObject levelTransition;
private bool waiting = false;
protected override void awake() protected override void awake()
{ {
initCutscene1(); initCutscene1();
@ -109,6 +112,9 @@ public class CutsceneIntro : Script
protected override void update() protected override void update()
{ {
if (!levelTransition.GetScript<LevelTransistion>().complete)
return;
Canvas1(); Canvas1();
Canvas2(); Canvas2();
Canvas3(); Canvas3();
@ -148,8 +154,12 @@ public class CutsceneIntro : Script
if (Input.GetKeyUp(Input.KeyCode.Space) && cutscene3Done && canvas3.IsActiveSelf) if (Input.GetKeyUp(Input.KeyCode.Space) && cutscene3Done && canvas3.IsActiveSelf)
{ {
SceneManager.ChangeScene(nextScene); levelTransition.GetScript<LevelTransistion>().resetToLeft();
waiting = true;
} }
if (levelTransition.GetScript<LevelTransistion>().complete && waiting)
SceneManager.ChangeScene(nextScene);
} }
private void Canvas1() private void Canvas1()

View File

@ -0,0 +1,57 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SHADE;
namespace SHADE_Scripting.UI
{
public class GameTimer: Script
{
private ScaleBounce scaleBounce;
private TextRenderable text;
public float criticalTime = 30;
public float timer;
protected override void awake()
{
text = GetComponent<TextRenderable>();
if(!text)
{
Debug.Log("GameTimer: No text renderable found");
}
scaleBounce = GetScript<ScaleBounce>();
if(!scaleBounce)
{
Debug.Log("GameTimer: No Scalebounce found in children");
}
else
{
scaleBounce.isActive = false;
}
}
protected override void update()
{
timer = GameManager.Instance.timer;
if (timer <= criticalTime)
{
scaleBounce.isActive = true;
text.TextColor = new Color(1.0f, 0.0f, 0.0f, 1.0f);
}
}
}
}

View File

@ -0,0 +1,3 @@
Name: SC_GameTimer
ID: 158823052
Type: 9

View File

@ -0,0 +1,91 @@
using SHADE;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
public class LevelTransistion : Script
{
public GameObject logo;
public GameObject bg;
public float duration = 2.0f;
public float bgEndPositionX = 2500;
public float logoEndPositionX = 2500;
public bool rotAndScale = true;
public float rotationAmt = 360;
public float scaleAmt = 631;
public bool complete { get; set; }
private Transform logoTran;
private Transform bgTran;
private TweenThread bgTween;
private TweenThread logoTween;
private TweenThread rot;
private TweenThread scale;
protected override void awake()
{
logoTran = logo.GetComponent<Transform>();
if (!logoTran)
Debug.LogError("MISSING LOGO TRAN");
bgTran = bg.GetComponent<Transform>();
if (!bgTran)
Debug.LogError("MISSING BG TRAN");
complete = false;
}
protected override void start()
{
bgTween = TweenManager.CreateTweenThread(duration, bgTran.LocalPosition.x, bgEndPositionX, EASING_METHOD.EASE_OUT_CIRCLE);
logoTween = TweenManager.CreateTweenThread(duration , logoTran.LocalPosition.x, logoEndPositionX, EASING_METHOD.EASE_OUT_CIRCLE);
rot = TweenManager.CreateTweenThread(duration , 0, rotationAmt, EASING_METHOD.EASE_OUT_BACK);
scale = TweenManager.CreateTweenThread(duration, 0, scaleAmt, EASING_METHOD.EASE_OUT_BACK);
}
protected override void update()
{
if (bgTween != null)
bgTran.LocalPosition = new Vector3(bgTween.GetValue(), 0, bgTran.LocalPosition.z);
if (rotAndScale)
{
logoTran.LocalScale = new Vector3(scale.GetValue(), scale.GetValue(), 1);
logoTran.LocalEulerAngles = new Vector3(0, 0, SHADE.Math.DegreesToRadians(rot.GetValue()));
}
else
{
logoTran.LocalPosition = new Vector3(logoTween.GetValue(), 0, logoTran.LocalPosition.z);
}
if (bgTween.IsCompleted() && logoTween.IsCompleted())
complete = true;
}
public void resetToLeft()
{
logoTran.LocalEulerAngles = Vector3.Zero;
logoTran.LocalPosition = Vector3.Zero;
logoTran.LocalScale = Vector3.Zero;
bgTween.duration = 0.8f;
bgTween.Reset(-3000.0f,0.0f);
logoTween.duration = 0.8f;
logoTween.Reset();
rot.duration = 0.8f;
rot.Reset();
scale.duration = 0.8f;
scale.Reset();
complete = false;
rotAndScale = true;
}
}

View File

@ -0,0 +1,3 @@
Name: SC_LevelTransistion
ID: 158044875
Type: 9

View File

@ -26,7 +26,8 @@ public class MainMenu : Script
{ {
Input.SetMouseCentering(false); Input.SetMouseCentering(false);
Application.IsCursorVisible = true; Application.IsCursorVisible = true;
SceneFadeInOut.Instance.CallFadeOut(); if(SceneFadeInOut.Instance)
SceneFadeInOut.Instance.CallFadeOut();
} }
protected override void update() protected override void update()
{ {

View File

@ -3,6 +3,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace SHADE_Scripting.UI namespace SHADE_Scripting.UI
@ -12,98 +13,70 @@ namespace SHADE_Scripting.UI
[NonSerialized] [NonSerialized]
private TweenThread sizeThread; private TweenThread sizeThread;
private TweenThread sizeInvertThread; private TweenThread sizeInvertThread;
private TweenThread alphaThread;
public float maxSize = 1.0f; public float maxSize = 1.0f;
public float minSize = 0.3f; public float minSize = 0.3f;
public float minAlpha = 0.3f;
private bool showMultiplier = false;
const float sizeUpDuration = 0.1f; const float sizeUpDuration = 0.1f;
[NonSerialized] [NonSerialized]
private Vector3 defaultScale; private Vector3 defaultScale;
private bool tweenUp = false;
protected override void start() protected override void start()
{ {
sizeThread = TweenManager.CreateTweenThread(0.0f, maxSize, minSize, EASING_METHOD.EASE_IN_SINE); sizeThread = TweenManager.CreateTweenThread(0.01f, maxSize, minSize, EASING_METHOD.EASE_IN_SINE);
sizeInvertThread = TweenManager.CreateTweenThread(sizeUpDuration, minSize, maxSize, EASING_METHOD.EASE_IN_SINE); sizeInvertThread = TweenManager.CreateTweenThread(sizeUpDuration, minSize, maxSize, EASING_METHOD.EASE_IN_SINE);
alphaThread = TweenManager.CreateTweenThread(0.0f, 1.0f, minAlpha, EASING_METHOD.EASE_OUT_SINE);
Transform transform = GetComponent<Transform>(); Transform transform = GetComponent<Transform>();
if (transform != null) if (transform != null)
{ {
defaultScale = transform.LocalScale; defaultScale = transform.LocalScale;
transform.LocalScale = Vector3.Zero; transform.LocalScale = Vector3.Zero;
} }
showMultiplier = false;
} }
protected override void update() protected override void update()
{
if (sizeThread == null || sizeInvertThread == null)
return;
Transform transform = GetComponent<Transform>();
GetComponent<TextRenderable>().Text = $"X {GameManager.Instance.currMultiplierCombo}";
if (transform != null)
{
if (tweenUp == false)
{ {
Transform transform = GetComponent<Transform>(); transform.LocalScale = defaultScale * sizeThread.GetValue();
if (transform != null && showMultiplier == true)
{
if(!sizeInvertThread.IsCompleted())
{
transform.LocalScale = defaultScale * sizeInvertThread.GetValue();
Renderable rend = GetComponentInChildren<Renderable>();
if(rend)
{
rend.Material.SetProperty<float>("data.alpha", 1.0f);
}
TextRenderable text = GetComponent<TextRenderable>();
if (text)
{
Color clr = text.TextColor;
text.TextColor = new Color(clr.r, clr.g, clr.b, 1.0f);
}
return;
}
if(sizeThread.IsCompleted())
{
transform.LocalScale = Vector3.Zero;
showMultiplier = false;
}
else
{
transform.LocalScale = defaultScale * sizeThread.GetValue();
Renderable rend = GetComponentInChildren<Renderable>();
if (rend)
{
rend.Material.SetProperty<float>("data.alpha", alphaThread.GetValue());
}
TextRenderable text = GetComponent<TextRenderable>();
if(text)
{
Color clr = text.TextColor;
text.TextColor = new Color(clr.r,clr.g,clr.b,alphaThread.GetValue() * 1.3f);
}
}
}
} }
else
{
if (sizeInvertThread.IsCompleted())
{
tweenUp = false;
sizeThread.Reset();
}
transform.LocalScale = defaultScale * sizeInvertThread.GetValue();
}
}
}
public void ShowMultiplier(int multiplier, float duration) public void ShowMultiplier(int multiplier, float duration)
{ {
GetComponent<TextRenderable>().Text = $"X {multiplier}";
sizeThread.duration = duration + sizeUpDuration; sizeThread.duration = duration + sizeUpDuration;
alphaThread.duration = duration + sizeUpDuration;
sizeInvertThread.Reset(); sizeInvertThread.Reset();
sizeThread.Reset(); sizeThread.Reset();
alphaThread.Reset(); tweenUp = true;
showMultiplier = true;
} }

View File

@ -0,0 +1,111 @@
using SHADE;
using SHADE_Scripting.UI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
public class Results : Script
{
public GameObject score;
public GameObject timeLeft;
public GameObject maxCombo;
public GameObject finalScore;
public GameObject contiuneBtn;
public GameObject levelTransition;
public uint nextScene;
public float scoreTweenDur = 2.0f;
private TextRenderable scoreText;
private TextRenderable timeLeftText;
private TextRenderable maxComboText;
private TextRenderable finalScoreText;
private int scoreCount = 0;
private bool once = true;
[NonSerialized]
private TweenThread scoreTween;
private bool waitForTransition;
protected override void awake()
{
scoreText = score.GetComponent<TextRenderable>();
if (!scoreText)
Debug.LogError("MISSING SCORE TEXT");
timeLeftText = timeLeft.GetComponent<TextRenderable>();
if (!timeLeftText)
Debug.LogError("MISSING TIME LEFT TEXT");
maxComboText = maxCombo.GetComponent<TextRenderable>();
if (!maxComboText)
Debug.LogError("MISSING MAX COMBO TEXT");
finalScoreText = finalScore.GetComponent<TextRenderable>();
if (!finalScoreText)
Debug.LogError("MISSING FINAL SCORE TEXT");
if (!contiuneBtn)
Debug.LogError("MISSING CONTIUNE BTN");
else
contiuneBtn.SetActive(false);
waitForTransition = false;
}
protected override void start()
{
scoreCount = GameManager.Instance.Score + (GameManager.Instance.finalTime * 100);
if(scoreText)
scoreText.Text = $"{GameManager.Instance.Score}";
if (timeLeftText)
timeLeftText.Text = $"{GameManager.Instance.finalTime}s";
if (maxComboText)
maxComboText.Text = $"X{GameManager.Instance.MaxComboAccquired}";
if (finalScoreText)
finalScoreText.Text = $"{scoreCount}";
UIElement contiune = contiuneBtn.GetComponent<UIElement>();
if (contiune != null)
{
contiune.OnRelease.RegisterAction(() =>
{
levelTransition.GetScript<LevelTransistion>().resetToLeft();
waitForTransition = true;
GameManager.Instance.GamePause = false;
Application.FixDeltaTime = Time.DefaultFixDeltaTime;
AnimationSystem.TimeScale = AnimationSystem.DefaultTimeScale;
});
}
else
{
Debug.LogError("Failed to register contiune button.");
}
scoreTween = TweenManager.CreateTweenThread(scoreTweenDur, 0, scoreCount, EASING_METHOD.EASE_IN_SINE);
}
protected override void update()
{
if (levelTransition.GetScript<LevelTransistion>().complete && waitForTransition)
{
Audio.StopAllSounds();
SceneManager.ChangeScene(nextScene);
}
if (finalScoreText && !scoreTween.IsCompleted())
finalScoreText.Text = $"{(int)scoreTween.GetValue()}";
else if(scoreTween.IsCompleted() && once)
{
contiuneBtn.SetActive(true);
finalScoreText.Text = $"{scoreCount}";
once = false;
}
}
}

View File

@ -0,0 +1,3 @@
Name: SC_Results
ID: 154482040
Type: 9

View File

@ -1,4 +1,4 @@
using SHADE; using SHADE;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -7,41 +7,55 @@ using System.Threading.Tasks;
namespace SHADE_Scripting.UI namespace SHADE_Scripting.UI
{ {
public class ScaleBounce:Script public class ScaleBounce : Script
{
[NonSerialized]
private TweenThread thread;
public float minScale = 1.0f;
public float maxScale = 1.2f;
public float duration = 1.0f;
private Vector3 defaultScale;
public bool isActive = false;
private bool lastActive = false;
protected override void start()
{ {
[NonSerialized] thread = TweenManager.CreateTweenThread(duration, minScale, maxScale, EASING_METHOD.EASE_IN_SINE);
private TweenThread thread; Transform trans = GetComponent<Transform>();
if (trans != null)
public float minScale = 1.0f; {
public float maxScale = 1.2f; defaultScale = trans.LocalScale;
public float duration = 1.0f; }
private Vector3 defaultScale;
protected override void start()
{
thread = TweenManager.CreateTweenThread(duration, minScale, maxScale, EASING_METHOD.EASE_IN_SINE);
Transform trans = GetComponent<Transform>();
if(trans != null)
{
defaultScale = trans.LocalScale;
}
}
protected override void update()
{
Transform trans = GetComponent<Transform>();
if(trans != null)
{
trans.LocalScale = defaultScale * thread.GetValue();
}
if(thread.IsCompleted())
{
thread.ResetInvert();
}
}
} }
protected override void update()
{
if (thread == null)
return;
if (isActive != lastActive && isActive == true)
{
thread.Reset();
}
lastActive = isActive;
Transform trans = GetComponent<Transform>();
if (trans != null && isActive)
{
trans.LocalScale = defaultScale * thread.GetValue();
}
if (thread.IsCompleted())
{
thread.ResetInvert();
}
}
}
} }

View File

@ -7,44 +7,43 @@ using System.Threading.Tasks;
namespace SHADE_Scripting.UI namespace SHADE_Scripting.UI
{ {
public class ScrollingCredits: Script public class ScrollingCredits : Script
{
public float endY = 4000.0f;
public float duration = 30.0f;
public GameObject levelTransition;
[NonSerialized]
TweenThread thread;
protected override void awake()
{
base.awake();
}
protected override void start()
{ {
public float endY = 4000.0f; Transform transform = GetComponent<Transform>();
public float duration = 30.0f; if (transform != null)
{
thread = TweenManager.CreateTweenThread(duration, transform.LocalPosition.y, endY, EASING_METHOD.LINEAR);
[NonSerialized] thread.SetResetOnInactive(GameObject);
TweenThread thread; }
protected override void awake()
{
base.awake();
}
protected override void start()
{
base.start();
Transform transform = GetComponent<Transform>();
if(transform != null)
{
thread = TweenManager.CreateTweenThread(duration, transform.LocalPosition.y, endY, EASING_METHOD.LINEAR);
thread.SetResetOnInactive(GameObject);
}
}
protected override void update()
{
base.update();
Transform transform = GetComponent<Transform>();
if(thread != null && transform != null)
{
transform.LocalPosition = new Vector3( transform.LocalPosition.x ,thread.GetValue() , transform.LocalPosition.z);
}
}
} }
protected override void update()
{
Transform transform = GetComponent<Transform>();
if (thread != null && transform != null)
{
transform.LocalPosition = new Vector3(transform.LocalPosition.x, thread.GetValue(), transform.LocalPosition.z);
}
}
}
} }

View File

@ -7,67 +7,73 @@ using System.Threading.Tasks;
namespace SHADE_Scripting.UI namespace SHADE_Scripting.UI
{ {
public class SingleScaleBounce: Script public class SingleScaleBounce : Script
{
[NonSerialized]
TweenThread thread;
[NonSerialized]
Vector3 defaultScale;
public float durationUp = 0.15f;
public float durationDown = 0.3f;
public float scaleSize = 1.2f;
[NonSerialized]
private bool scaleUp = false;
private Transform trans;
protected override void awake()
{ {
[NonSerialized] trans = GetComponent<Transform>();
TweenThread thread; if (trans != null)
{
[NonSerialized] defaultScale = trans.LocalScale;
Vector3 defaultScale; }
public float durationUp = 0.15f;
public float durationDown = 0.3f;
public float scaleSize = 1.2f;
[NonSerialized]
private bool scaleUp = false;
protected override void awake()
{
Transform trans = GetComponent<Transform>();
if(trans != null)
{
defaultScale = trans.LocalScale;
}
}
protected override void start()
{
thread = TweenManager.CreateTweenThread(0.0f,1.0f,1.0f,EASING_METHOD.EASE_IN_SINE);
}
protected override void update()
{
if(scaleUp)
{
if(thread.IsCompleted())
{
scaleUp = false;
thread.duration = durationDown;
thread.ResetInvert();
}
}
Transform trans = GetComponent<Transform>();
if(trans != null)
{
trans.LocalScale = defaultScale * thread.GetValue();
}
}
public void ScaleBounceOnce()
{
scaleUp = true;
thread.duration = durationUp;
thread.Reset(1.0f, scaleSize);
}
} }
protected override void start()
{
thread = TweenManager.CreateTweenThread(0.0f, 1.0f, 1.0f, EASING_METHOD.LINEAR);
}
protected override void update()
{
if (scaleUp)
{
if (thread != null && thread.IsCompleted())
{
scaleUp = false;
thread.duration = durationDown;
thread.method = EASING_METHOD.LINEAR;
thread.ResetInvert();
}
}
if (trans && thread != null)
trans.LocalScale = defaultScale * thread.GetValue();
}
public void ScaleBounceOnce()
{
scaleUp = true;
if (thread != null)
{
thread.duration = durationUp;
thread.Reset(1.0f, scaleSize);
thread.method = EASING_METHOD.EASE_OUT_BACK;
}
else
{
Debug.Log("Single Scale Bounce: thread is null");
}
}
}
} }

View File

@ -0,0 +1,70 @@
using SHADE;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SHADE_Scripting.UI
{
public class SliderFX : Script
{
public string onClickSound = "event:/UI/button_success";
public string onReleaseSound = "event:/UI/button_fail";
[NonSerialized]
private AudioClipHandler onClickACHandler;
[NonSerialized]
private AudioClipHandler onReleaseACHandler;
protected override void awake()
{
if (onClickSound != "Empty")
onClickACHandler = SHADE.Audio.CreateAudioClip(onClickSound);
if (onReleaseSound != "Empty")
onReleaseACHandler = SHADE.Audio.CreateAudioClip(onReleaseSound);
}
protected override void start()
{
Transform transform = GetComponent<Transform>();
if (transform == null)
return;
UIElement ui = GetComponent<UIElement>();
if (ui == null)
return;
ui.OnClick.RegisterAction(() =>
{
if (onClickSound != "Empty")
onClickACHandler.Play();
});
ui.OnRelease.RegisterAction(() =>
{
if (onReleaseSound != "Empty")
onReleaseACHandler.Play();
});
}
protected override void update()
{
}
}
}

View File

@ -0,0 +1,3 @@
Name: SC_SliderFX
ID: 157251414
Type: 9

View File

@ -35,9 +35,9 @@ public class StealFoodPopUp : Script
protected override void start() protected override void start()
{ {
rot = TweenManager.CreateTweenThread(popInDuration, 0, rotationAmt, EASING_METHOD.EASE_IN_SINE); rot = TweenManager.CreateTweenThread(popInDuration * 0.4f, 0, rotationAmt, EASING_METHOD.LINEAR);
scaleX = TweenManager.CreateTweenThread(popInDuration, 0, scaleAmtX, EASING_METHOD.EASE_IN_SINE); scaleX = TweenManager.CreateTweenThread(popInDuration, 0, scaleAmtX, EASING_METHOD.EASE_OUT_BACK);
scaleY = TweenManager.CreateTweenThread(popInDuration, 0, scaleAmtY, EASING_METHOD.EASE_IN_SINE); scaleY = TweenManager.CreateTweenThread(popInDuration, 0, scaleAmtY, EASING_METHOD.EASE_OUT_BACK);
tran = GetComponent<Transform>(); tran = GetComponent<Transform>();
if (!tran) if (!tran)

View File

@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SHADE;
namespace SHADE_Scripting.UI
{
public class TransitToMainMenu: Script
{
public float timeToTransit = 0.0f;
public uint sceneToChange = 0;
private float timer = 0.0f;
private bool sceneChanged = false;
protected override void start()
{
timer = timeToTransit;
sceneChanged = false;
}
protected override void update()
{
timer -= Time.DeltaTimeF;
if(timer <= 0.0f && sceneChanged == false)
{
SceneManager.ChangeScene(sceneToChange);
sceneChanged = true;
}
if(Input.GetKeyDown(Input.KeyCode.Space))
{
timer = 0.0f;
}
}
}
}

View File

@ -0,0 +1,3 @@
Name: TransitToMainMenu
ID: 159865134
Type: 9

Binary file not shown.

View File

@ -14,6 +14,8 @@ struct EmitterParameters
float rotationDecay; float rotationDecay;
vec4 lifeAndSizeRange; // min life, max life, min size, max size vec4 lifeAndSizeRange; // min life, max life, min size, max size
vec4 colorTint; vec4 colorTint;
vec4 colorTintRange;
vec4 colorDecay;
float sizeDecay; float sizeDecay;
uint textureIndex; uint textureIndex;
float padding[2]; float padding[2];
@ -27,6 +29,7 @@ struct ParticleData
vec4 acceleration; vec4 acceleration;
vec4 scaleAndDecay; vec4 scaleAndDecay;
vec4 colorTint; vec4 colorTint;
vec4 colorDecay;
float life; float life;
uint textureIndex; uint textureIndex;
}; };
@ -175,9 +178,18 @@ void main()
particle.scaleAndDecay.y = particleSize; particle.scaleAndDecay.y = particleSize;
particle.scaleAndDecay.z = emitterParams.data.sizeDecay; particle.scaleAndDecay.z = emitterParams.data.sizeDecay;
particle.scaleAndDecay.w = emitterParams.data.sizeDecay; particle.scaleAndDecay.w = emitterParams.data.sizeDecay;
particle.colorDecay = emitterParams.data.colorDecay;
float randRange = rand(seed) * 2.0f - 1.0f;
// Set particle color tint // Set particle color tint
particle.colorTint = emitterParams.data.colorTint; particle.colorTint = emitterParams.data.colorTint + vec4 (randRange * emitterParams.data.colorTintRange.x,
randRange * emitterParams.data.colorTintRange.y,
randRange * emitterParams.data.colorTintRange.z,
randRange * emitterParams.data.colorTintRange.w);
// particle.colorTint = emitterParams.data.colorTint;
// Set the texture for the particle // Set the texture for the particle
particle.textureIndex = emitterParams.data.textureIndex; particle.textureIndex = emitterParams.data.textureIndex;

View File

@ -0,0 +1,27 @@
#version 460 core
#extension GL_EXT_nonuniform_qualifier : require
layout (location = 0) out vec4 fragColor;
layout (set = 0, binding = 1) uniform sampler2D textures[]; // for textures (global)
// between shader stages
layout(location = 0) in struct
{
vec2 uv; // location = 0
} In;
// material stuff
layout(location = 1) flat in struct
{
uint textureIndex;
vec4 color;
} InFlat;
void main ()
{
fragColor = vec4 (texture(textures [nonuniformEXT(InFlat.textureIndex)], In.uv)) * InFlat.color;
if (fragColor.a < 0.01f)
discard;
}

Binary file not shown.

View File

@ -0,0 +1,3 @@
Name: ParticleRounded_FS
ID: 42315398
Type: 2

View File

@ -0,0 +1,107 @@
#version 460 core
struct GenericData
{
//! Delta time
float dt;
//! Elapsed time of the application
float elapsedTime;
//! Viewport width of the scene (excluding imgui, that means smaller than window)
uint viewportWidth;
//! Ditto but for height
uint viewportHeight;
};
struct ParticleData
{
vec4 position;
vec4 orientationSpeedDecay;
vec4 velocity;
vec4 acceleration;
vec4 scaleAndDecay;
vec4 colorTint;
vec4 colorDecay;
float life;
uint textureIndex;
};
layout (set = 0, binding = 0) uniform GenericDataBuffer
{
GenericData data;
} genericDataBuffer;
layout(set = 1, binding = 0) uniform CameraData
{
vec4 position;
mat4 vpMat;
mat4 viewMat;
mat4 projMat;
} cameraData;
// output buffer not needed
layout (std430, set = 2, binding = 2) coherent restrict buffer ParticlesOutputBuffer
{
ParticleData data[];
} outputParticles;
layout (std430, set = 2, binding = 4) coherent restrict buffer IndicesData
{
uint indices[];
};
// between shader stages
layout(location = 0) out struct
{
vec2 uv; // location = 0
} Out;
// material stuff
layout(location = 1) out struct
{
uint textureIndex; // location = 1
vec4 color; // location = 2
} OutFlat;
vec2 CreateQuad (in uint vertexID)
{
uint b = 1 << vertexID;
return vec2 ((0x3 & b) != 0, (0x9 & b) != 0);
}
void main()
{
// Create a quad and its texture coordinates
Out.uv = CreateQuad (gl_VertexIndex);
vec3 vertexPos = vec3 (Out.uv - vec2(0.5f), 0.0f);
vertexPos.y *= 0.5f;
ParticleData particle = outputParticles.data[indices[gl_InstanceIndex]];
vec3 normalized = normalize (vec3 (particle.velocity.xyz));
float pitch = acos (dot (normalized.xyz, normalize (vec3 (normalized.x, 0.0f, normalized.z))));
float angle = pitch;
// float angle = atan (normalized.y, normalized.x);
vec2 particleScaleData = particle.scaleAndDecay.xy; // x and y
mat3 rotate = mat3 (1.0f);
rotate[0][0] = cos(angle);
rotate[0][1] = sin(angle);
rotate[1][0] = -sin(angle);
rotate[1][1] = cos(angle);
vec3 particlePos = rotate * vertexPos;
vec3 viewRight = normalize (vec3 (cameraData.viewMat[0][0], cameraData.viewMat[1][0], cameraData.viewMat[2][0]));
vec3 viewUp = normalize(vec3 (cameraData.viewMat[0][1], cameraData.viewMat[1][1], cameraData.viewMat[2][1]));
particlePos = particle.position.xyz + (viewRight * particlePos.x * particleScaleData.x) + (viewUp * particlePos.y * particleScaleData.y);
OutFlat.textureIndex = particle.textureIndex;
OutFlat.color = particle.colorTint;
gl_Position = cameraData.vpMat * vec4(particlePos, 1.0f);
}

Binary file not shown.

View File

@ -0,0 +1,3 @@
Name: ParticleRounded_VS
ID: 44202416
Type: 2

View File

@ -18,6 +18,7 @@ struct ParticleData
vec4 acceleration; vec4 acceleration;
vec4 scaleAndDecay; vec4 scaleAndDecay;
vec4 colorTint; vec4 colorTint;
vec4 colorDecay;
float life; float life;
uint textureIndex; uint textureIndex;
}; };

View File

@ -17,6 +17,8 @@ struct ParticleData
vec4 velocity; vec4 velocity;
vec4 acceleration; vec4 acceleration;
vec4 scaleAndDecay; vec4 scaleAndDecay;
vec4 colorTint;
vec4 colorDecay;
float life; float life;
uint textureIndex; uint textureIndex;
}; };

View File

@ -18,6 +18,7 @@ struct ParticleData
vec4 acceleration; vec4 acceleration;
vec4 scaleAndDecay; vec4 scaleAndDecay;
vec4 colorTint; vec4 colorTint;
vec4 colorDecay;
float life; float life;
uint textureIndex; uint textureIndex;
}; };

View File

@ -18,6 +18,7 @@ struct ParticleData
vec4 acceleration; vec4 acceleration;
vec4 scaleAndDecay; vec4 scaleAndDecay;
vec4 colorTint; vec4 colorTint;
vec4 colorDecay;
float life; float life;
uint textureIndex; uint textureIndex;
}; };
@ -126,6 +127,7 @@ void main()
particle.orientationSpeedDecay.x += particle.orientationSpeedDecay.y; particle.orientationSpeedDecay.x += particle.orientationSpeedDecay.y;
particle.scaleAndDecay.x *= particle.scaleAndDecay.z; particle.scaleAndDecay.x *= particle.scaleAndDecay.z;
particle.scaleAndDecay.y *= particle.scaleAndDecay.w; particle.scaleAndDecay.y *= particle.scaleAndDecay.w;
particle.colorTint -= particle.colorDecay * genericDataBuffer.data.dt;
if (particle.orientationSpeedDecay.y > 0.0f) if (particle.orientationSpeedDecay.y > 0.0f)
{ {

View File

@ -15,7 +15,6 @@ struct GenericData
uint viewportHeight; uint viewportHeight;
}; };
struct ParticleData struct ParticleData
{ {
vec4 position; vec4 position;
@ -24,6 +23,7 @@ struct ParticleData
vec4 acceleration; vec4 acceleration;
vec4 scaleAndDecay; vec4 scaleAndDecay;
vec4 colorTint; vec4 colorTint;
vec4 colorDecay;
float life; float life;
uint textureIndex; uint textureIndex;
}; };

Binary file not shown.

Binary file not shown.

View File

@ -8,6 +8,7 @@ struct MatPropData
int textureIndex; int textureIndex;
float alpha; float alpha;
float sliderThreshold; float sliderThreshold;
float borderThickness;
vec4 sliderStartColor; vec4 sliderStartColor;
vec4 sliderEndColor; vec4 sliderEndColor;
vec4 sliderBarColor; vec4 sliderBarColor;
@ -43,6 +44,8 @@ void main()
{ {
//fragColor = texture(textures[nonuniformEXT(MatProp.data[In2.materialIndex].textureIndex)], In.uv); //fragColor = texture(textures[nonuniformEXT(MatProp.data[In2.materialIndex].textureIndex)], In.uv);
if (In.uv.x > MatProp.data[In2.materialIndex].sliderThreshold) if (In.uv.x > MatProp.data[In2.materialIndex].sliderThreshold)
fragColor = MatProp.data[In2.materialIndex].sliderBarColor; fragColor = MatProp.data[In2.materialIndex].sliderBarColor;
else else

View File

@ -42,19 +42,21 @@ layout(location = 1) out uint outEntityID;
void main() void main()
{ {
//fragColor = texture(textures[nonuniformEXT(MatProp.data[In2.materialIndex].textureIndex)], In.uv); //fragColor = texture(textures[nonuniformEXT(MatProp.data[In2.materialIndex].textureIndex)], In.uv);
fragColor = texture(textures[nonuniformEXT(MatProp.data[In2.materialIndex].textureIndex)], In.uv);
if (In.uv.x > MatProp.data[In2.materialIndex].sliderThreshold)
fragColor = MatProp.data[In2.materialIndex].sliderBarColor;
else
//fragColor = (1.0f - In.uv.x) * MatProp.data[In2.materialIndex].sliderStartColor + In.uv.x * MatProp.data[In2.materialIndex].sliderEndColor;
fragColor = texture(textures[nonuniformEXT(MatProp.data[In2.materialIndex].textureIndex)], In.uv);
if (fragColor.a < 0.01f) if (fragColor.a < 0.01f)
{ {
discard; discard;
} }
if (In.uv.x > MatProp.data[In2.materialIndex].sliderThreshold)
fragColor = MatProp.data[In2.materialIndex].sliderBarColor;
if (fragColor.xyz == vec3(0.0f, 0.0f, 0.0f))
fragColor.xyz = MatProp.data[In2.materialIndex].sliderStartColor.xyz;
fragColor.a = MatProp.data[In2.materialIndex].alpha; fragColor.a = MatProp.data[In2.materialIndex].alpha;
// fragColor.a = 1.0f; // fragColor.a = 1.0f;

View File

@ -0,0 +1,41 @@
#version 450
#extension GL_ARB_separate_shader_objects : enable
#extension GL_ARB_shading_language_420pack : enable
#extension GL_EXT_nonuniform_qualifier : require
struct MatPropData
{
int textureIndex;
float alpha;
};
layout(location = 0) in struct
{
vec4 vertPos; // location 0
vec2 uv; // location = 1
vec4 normal; // location = 2
} In;
// material stuff
layout(location = 3) flat in struct
{
int materialIndex;
uint eid;
uint lightLayerIndex;
} In2;
layout (set = 0, binding = 1) uniform sampler2D textures[]; // for textures (global)
layout (std430, set = 2, binding = 0) buffer MaterialProperties // For materials
{
MatPropData data[];
} MatProp;
layout(location = 0) out vec4 fragColor;
layout(location = 1) out uint outEntityID;
void main()
{
fragColor = texture(textures[nonuniformEXT(MatProp.data[In2.materialIndex].textureIndex)], In.uv);
outEntityID = In2.eid;
}

Binary file not shown.

View File

@ -0,0 +1,3 @@
Name: UI_TRANSISTION_FS
ID: 40208610
Type: 2

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,3 @@
Name: Score_hover
ID: 55195346
Type: 3

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More