Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
GDW-SS-18
to-the-surface
Commits
0aa11835
Commit
0aa11835
authored
Sep 28, 2018
by
Jan Meissner
Browse files
LevelSelect is now even more dynamic. Wow.
parent
4d78f2d6
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Assets/_Game/Prefabs/Page.prefab
0 → 100644
View file @
0aa11835
This diff is collapsed.
Click to expand it.
Assets/_Game/Prefabs/Page.prefab.meta
0 → 100644
View file @
0aa11835
fileFormatVersion: 2
guid: 9e17a0d4a71e81e459bf89deb0ba7bef
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 100100000
userData:
assetBundleName:
assetBundleVariant:
Assets/_Game/Scenes/MainMenu.unity
View file @
0aa11835
...
...
@@ -1039,9 +1039,27 @@ Prefab:
value
:
objectReference
:
{
fileID
:
1114752654
}
-
target
:
{
fileID
:
1112563719743610
,
guid
:
4bbfb22c52b83fb408f6cccb5da7c286
,
type
:
2
}
propertyPath
:
m_IsActive
value
:
1
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
1867206183319644
,
guid
:
4bbfb22c52b83fb408f6cccb5da7c286
,
type
:
2
}
propertyPath
:
m_IsActive
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
1566005370909688
,
guid
:
4bbfb22c52b83fb408f6cccb5da7c286
,
type
:
2
}
propertyPath
:
m_IsActive
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
1238292703456030
,
guid
:
4bbfb22c52b83fb408f6cccb5da7c286
,
type
:
2
}
propertyPath
:
m_IsActive
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
114980597269810140
,
guid
:
4bbfb22c52b83fb408f6cccb5da7c286
,
type
:
2
}
propertyPath
:
pagePrefab
value
:
objectReference
:
{
fileID
:
1953451430673868
,
guid
:
9e17a0d4a71e81e459bf89deb0ba7bef
,
type
:
2
}
m_RemovedComponents
:
[]
m_SourcePrefab
:
{
fileID
:
100100000
,
guid
:
4bbfb22c52b83fb408f6cccb5da7c286
,
type
:
2
}
m_IsPrefabAsset
:
0
...
...
@@ -1576,7 +1594,7 @@ GameObject:
m_Icon
:
{
fileID
:
0
}
m_NavMeshLayer
:
0
m_StaticEditorFlags
:
0
m_IsActive
:
1
m_IsActive
:
0
---
!u!114
&1284376702
MonoBehaviour
:
m_ObjectHideFlags
:
0
...
...
Assets/_Game/Scripts/LevelSelectController.cs
View file @
0aa11835
using
UnityEngine
;
using
System
;
using
TMPro
;
using
UnityEngine
;
using
UnityEngine.UI
;
public
class
LevelSelectController
:
MonoBehaviour
{
//[SerializeField] private GameObject levelButtonPrefab;
[
SerializeField
]
private
GameObject
pagePrefab
;
[
SerializeField
]
private
int
nonPageObjects
=
3
;
private
int
highestLevel
;
private
int
lastLevel
;
private
void
Start
()
{
ActivateAllPages
();
UpdateLevelSelect
();
DisablePagesAfterFirst
();
InitalizeLevelSelect
();
}
/// <summary>
/// Locks all currently not unlocked levels
/// </summary>
public
void
UpdateLevelSelect
()
{
int
highestLevel
=
GameManager
.
Instance
.
HighestLevel
;
int
lastLevel
=
GameManager
.
Instance
.
LastLevel
;
public
void
InitalizeLevelSelect
()
{
highestLevel
=
GameManager
.
Instance
.
HighestLevel
;
lastLevel
=
GameManager
.
Instance
.
LastLevel
;
int
pagesNeeded
=
lastLevel
/
6
+
1
;
int
buttonsOnLastPage
=
lastLevel
%
6
;
GameObject
currentPage
;
for
(
int
i
=
1
;
i
<=
18
;
i
++)
{
string
buttonName
=
"ButtonLevel"
+
i
;
if
(
GameObject
.
Find
(
buttonName
)
!=
null
)
{
GameObject
button
=
GameObject
.
Find
(
buttonName
);
Image
image
=
button
.
transform
.
Find
(
"Image"
).
GetComponent
<
Image
>();
// Level unlocked
if
(
i
<=
highestLevel
)
{
string
loadStr
=
i
<
10
?
"LevelSelect/Level0"
+
i
:
"LevelSelect/Level"
+
i
;
image
.
sprite
=
Resources
.
Load
(
loadStr
,
typeof
(
Sprite
))
as
Sprite
;
button
.
GetComponent
<
Button
>().
interactable
=
true
;
}
// Level locked
else
if
(
i
<=
lastLevel
)
{
image
.
sprite
=
Resources
.
Load
(
"LevelSelect/lockedTEMP"
,
typeof
(
Sprite
))
as
Sprite
;
button
.
GetComponent
<
Button
>().
interactable
=
false
;
}
// Level doesn't exist
else
{
button
.
SetActive
(
false
);
for
(
int
i
=
1
;
i
<=
pagesNeeded
;
i
++)
{
currentPage
=
GameObject
.
Instantiate
(
pagePrefab
,
transform
.
GetChild
(
0
));
currentPage
.
GetComponent
<
LevelSelectPageController
>().
PageNr
=
i
;
//Load images for buttons
for
(
int
j
=
1
;
j
<=
6
;
j
++)
{
String
buttonName
=
"ButtonLevel"
+
j
;
int
levelNr
=
j
+
(
currentPage
.
GetComponent
<
LevelSelectPageController
>().
PageNr
-
1
)
*
6
;
// Deactivates NextPageButton because there isnt' a next page
if
(
button
.
transform
.
parent
.
Find
(
"ButtonNextPage"
)
!=
null
)
if
(
GameObject
.
Find
(
buttonName
)
!=
null
)
{
GameObject
button
=
currentPage
.
transform
.
Find
(
buttonName
).
gameObject
;
Image
image
=
button
.
transform
.
Find
(
"Image"
).
GetComponent
<
Image
>();
// Level unlocked
if
(
levelNr
<=
highestLevel
)
{
GameObject
nextPage
=
button
.
transform
.
parent
.
Find
(
"ButtonNextPage"
).
gameObject
;
nextPage
.
SetActive
(
false
);
string
loadStr
=
levelNr
<
10
?
"LevelSelect/Level0"
+
levelNr
:
"LevelSelect/Level"
+
levelNr
;
image
.
sprite
=
Resources
.
Load
(
loadStr
,
typeof
(
Sprite
))
as
Sprite
;
button
.
transform
.
Find
(
"Text"
).
gameObject
.
GetComponent
<
TextMeshProUGUI
>().
text
=
levelNr
+
""
;
button
.
GetComponent
<
Button
>().
interactable
=
true
;
}
// Level locked
else
if
(
levelNr
<=
lastLevel
)
{
image
.
sprite
=
Resources
.
Load
(
"LevelSelect/lockedTEMP"
,
typeof
(
Sprite
))
as
Sprite
;
button
.
GetComponent
<
Button
>().
interactable
=
false
;
}
}
}
// Deactivate not needed NextPage- & PreviousPage-Buttons
if
(
i
==
1
)
{
currentPage
.
transform
.
Find
(
"ButtonPrevPage"
).
gameObject
.
SetActive
(
false
);
}
if
(
i
==
pagesNeeded
)
{
currentPage
.
transform
.
Find
(
"ButtonNextPage"
).
gameObject
.
SetActive
(
false
);
// Deactivate not needed buttons
if
(
buttonsOnLastPage
!=
0
)
{
for
(
int
j
=
6
;
j
>
buttonsOnLastPage
;
j
--)
{
String
buttonName
=
"ButtonLevel"
+
j
;
currentPage
.
transform
.
Find
(
buttonName
).
gameObject
.
SetActive
(
false
);
}
// Next page can't be opened so buttons on it don't have to be changed
if
(
i
%
6
==
0
)
return
;
}
}
}
DisablePagesAfterFirst
();
}
/// <summary>
...
...
@@ -79,9 +107,17 @@ public class LevelSelectController : MonoBehaviour {
GameManager
.
Instance
.
LoadLevel
(
level
);
}
public
void
OpenLevelSelect
()
{
ActivateAllPages
();
UpdateLevelSelect
();
DisablePagesAfterFirst
();
public
void
ShowNextPage
(
int
pageNr
)
{
GameObject
canvas
=
transform
.
Find
(
"Canvas"
).
gameObject
;
canvas
.
transform
.
GetChild
(
pageNr
+
nonPageObjects
-
1
).
gameObject
.
SetActive
(
false
);
canvas
.
transform
.
GetChild
(
pageNr
+
nonPageObjects
).
gameObject
.
SetActive
(
true
);
}
public
void
ShowPrevPage
(
int
pageNr
)
{
GameObject
canvas
=
transform
.
Find
(
"Canvas"
).
gameObject
;
canvas
.
transform
.
GetChild
(
pageNr
+
nonPageObjects
-
1
).
gameObject
.
SetActive
(
false
);
canvas
.
transform
.
GetChild
(
pageNr
+
nonPageObjects
-
2
).
gameObject
.
SetActive
(
true
);
}
}
Assets/_Game/Scripts/LevelSelectPageController.cs
0 → 100644
View file @
0aa11835
using
System.Collections
;
using
System.Collections.Generic
;
using
UnityEngine
;
public
class
LevelSelectPageController
:
MonoBehaviour
{
public
int
PageNr
{
get
;
set
;
}
public
void
LoadLevel
(
int
level
)
{
level
+=
(
PageNr
-
1
)
*
6
;
Debug
.
Log
(
"Load level "
+
level
);
GameManager
.
Instance
.
LoadLevel
(
level
);
}
public
void
ShowNextPage
()
{
transform
.
parent
.
parent
.
gameObject
.
GetComponent
<
LevelSelectController
>().
ShowNextPage
(
PageNr
);
}
public
void
ShowPrevPage
()
{
transform
.
parent
.
parent
.
gameObject
.
GetComponent
<
LevelSelectController
>().
ShowPrevPage
(
PageNr
);
}
}
Assets/_Game/Scripts/LevelSelectPageController.cs.meta
0 → 100644
View file @
0aa11835
fileFormatVersion: 2
guid: bdb116d84d8e7ae4ab53801430dcd6b1
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment