Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
3
3D Fruit
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanqing
3D Fruit
Commits
c639ce83
Commit
c639ce83
authored
Apr 27, 2021
by
wanqing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改预制体
parent
4bffc45c
Changes
11
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
392 additions
and
3151 deletions
+392
-3151
BattleUI.cs
3D Fruit/Assets/#A2_Scripts/Battle/UI/BattleUI.cs
+4
-3
FruitItemView.cs
3D Fruit/Assets/#A2_Scripts/Battle/View/FruitItemView.cs
+70
-47
FruitView.cs
3D Fruit/Assets/#A2_Scripts/Battle/View/FruitView.cs
+61
-51
GlassView.cs
3D Fruit/Assets/#A2_Scripts/Battle/View/GlassView.cs
+15
-15
GlobalConfig.cs
3D Fruit/Assets/#A2_Scripts/Services/GlobalConfig.cs
+11
-2
Lemon.prefab
3D Fruit/Assets/#A3_Prefabs/FruitPrefab/Lemon.prefab
+8
-327
Orange.prefab
3D Fruit/Assets/#A3_Prefabs/FruitPrefab/Orange.prefab
+8
-327
Strawberry.prefab
3D Fruit/Assets/#A3_Prefabs/FruitPrefab/Strawberry.prefab
+8
-327
Level0.prefab
3D Fruit/Assets/Res/Levels/Level0.prefab
+78
-677
Level1.prefab
3D Fruit/Assets/Res/Levels/Level1.prefab
+97
-696
Level2.prefab
3D Fruit/Assets/Res/Levels/Level2.prefab
+32
-679
No files found.
3D Fruit/Assets/#A2_Scripts/Battle/UI/BattleUI.cs
View file @
c639ce83
...
...
@@ -299,6 +299,7 @@ public class BattleUI : MonoBehaviour
m_bResult
=
false
;
//153,212
//水果位置
GlobalConfig
.
SetFruitRandomNum
();
Vector2
varPos
=
m_fruitGroupRT
.
anchoredPosition
;
if
(
BattleCtrl
.
instance
.
levelManager
.
CurLevelIndex
==
LevelEnum
.
levelOneIndex
)
{
...
...
@@ -528,17 +529,17 @@ public class BattleUI : MonoBehaviour
//设置草莓数量
public
void
SetStrawberryNum
(
int
num
)
{
m_strawGoalNum
.
text
=
string
.
Format
(
"{0:d}"
,
GlobalConfig
.
FruitMoveTotal
Num
-
num
);
m_strawGoalNum
.
text
=
string
.
Format
(
"{0:d}"
,
GlobalConfig
.
StrawberryRandom
Num
-
num
);
}
//设置柠檬数量
public
void
SetLemonNum
(
int
num
)
{
m_lemonGoalNum
.
text
=
string
.
Format
(
"{0:d}"
,
GlobalConfig
.
FruitMoveTotal
Num
-
num
);
m_lemonGoalNum
.
text
=
string
.
Format
(
"{0:d}"
,
GlobalConfig
.
LemonRandom
Num
-
num
);
}
//设置橙子数量
public
void
SetOrangeNum
(
int
num
)
{
m_orangeGoalNum
.
text
=
string
.
Format
(
"{0:d}"
,
GlobalConfig
.
FruitMoveTotal
Num
-
num
);
m_orangeGoalNum
.
text
=
string
.
Format
(
"{0:d}"
,
GlobalConfig
.
OrangeRandom
Num
-
num
);
}
private
void
OnDestroy
()
{
...
...
3D Fruit/Assets/#A2_Scripts/Battle/View/FruitItemView.cs
View file @
c639ce83
...
...
@@ -6,7 +6,8 @@ using UnitySimpleLiquid;
public
class
FruitItemView
:
MonoBehaviour
{
public
FruitType
m_type
;
public
EndlessContainer
m_container
;
//public EndlessContainer m_container;
public
GameObject
m_effect
;
public
FruitType
type
=>
m_type
;
private
Vector3
m_size
;
...
...
@@ -35,12 +36,18 @@ public class FruitItemView : MonoBehaviour
m_fragPos
.
Add
(
varTrans
.
localPosition
);
m_fragQua
.
Add
(
varTrans
.
localRotation
);
}
if
(
m_container
)
//if (m_container)
//{
// m_liquidContainer = m_container.gameObject.GetComponent<LiquidContainer>();
// m_liquidStartPos = m_container.transform.localPosition;
// m_liquidStartQua = m_container.transform.localRotation;
// m_liquidStartScale = m_container.transform.localScale;
//}
if
(
m_effect
)
{
m_liquidContainer
=
m_container
.
gameObject
.
GetComponent
<
LiquidContainer
>();
m_liquidStartPos
=
m_container
.
transform
.
localPosition
;
m_liquidStartQua
=
m_container
.
transform
.
localRotation
;
m_liquidStartScale
=
m_container
.
transform
.
localScale
;
m_liquidStartPos
=
m_effect
.
transform
.
localPosition
;
m_liquidStartQua
=
m_effect
.
transform
.
localRotation
;
m_liquidStartScale
=
m_effect
.
transform
.
localScale
;
}
}
//变大动画
...
...
@@ -54,47 +61,46 @@ public class FruitItemView : MonoBehaviour
transform
.
localScale
=
Vector3
.
Lerp
(
transform
.
localScale
,
m_size
,
1.0f
);
}
//生成流体特效
public
void
SetLiquidEffect
()
{
//m_container.transform.SetParent(transform);
m_container
.
gameObject
.
SetActive
(
false
);
Transform
varObj
=
m_container
.
transform
.
Find
(
"LiquidParticles(Clone)"
);
if
(
varObj
)
{
Destroy
(
varObj
.
gameObject
);
}
m_container
.
enabled
=
true
;
m_liquidContainer
.
FillAmountPercent
=
1.0f
;
if
(
m_liquidContainer
)
{
if
(
m_type
==
FruitType
.
Strawberry
)
{
m_liquidContainer
.
LiquidColor
=
m_strawberryColor
;
}
else
if
(
m_type
==
FruitType
.
Lemon
)
{
m_liquidContainer
.
LiquidColor
=
m_lemonColor
;
}
else
if
(
m_type
==
FruitType
.
Orange
)
{
m_liquidContainer
.
LiquidColor
=
m_orangeColor
;
}
}
m_container
.
transform
.
SetParent
(
null
);
Vector3
varVec
=
transform
.
position
;
varVec
.
z
=
0
;
varVec
.
y
+=
1.0f
;
m_container
.
transform
.
localPosition
=
varVec
;
m_container
.
transform
.
localRotation
=
m_liquidStartQua
;
m_container
.
transform
.
localScale
=
Vector3
.
one
*
2
;
m_container
.
gameObject
.
SetActive
(
true
);
Invoke
(
"DelayStopLiquidEffect"
,
0.5f
);
}
//延迟停止流体特效
void
DelayStopLiquidEffect
()
{
m_container
.
enabled
=
false
;
}
//public void SetLiquidEffect()
//{
// m_container.gameObject.SetActive(false);
// Transform varObj = m_container.transform.Find("LiquidParticles(Clone)");
// if(varObj)
// {
// Destroy(varObj.gameObject);
// }
// m_container.enabled = true;
// m_liquidContainer.FillAmountPercent = 1.0f;
// if (m_liquidContainer)
// {
// if(m_type == FruitType.Strawberry)
// {
// m_liquidContainer.LiquidColor = m_strawberryColor;
// }
// else if(m_type == FruitType.Lemon)
// {
// m_liquidContainer.LiquidColor = m_lemonColor;
// }
// else if(m_type == FruitType.Orange)
// {
// m_liquidContainer.LiquidColor = m_orangeColor;
// }
// }
// m_container.transform.SetParent(null);
// Vector3 varVec = transform.position;
// varVec.z = 0;
// varVec.y += 1.0f;
// m_container.transform.localPosition = varVec;
// m_container.transform.localRotation = m_liquidStartQua;
// m_container.transform.localScale = Vector3.one * 2;
// m_container.gameObject.SetActive(true);
// Invoke("DelayStopLiquidEffect", 0.5f);
//}
////延迟停止流体特效
//void DelayStopLiquidEffect()
//{
// m_container.enabled = false;
//}
//生成碎块
public
void
SetFrag
()
{
...
...
@@ -106,6 +112,19 @@ public class FruitItemView : MonoBehaviour
{
m_childObj
.
SetActive
(
true
);
}
//显示特效
if
(
m_effect
)
{
m_effect
.
transform
.
SetParent
(
null
);
Vector3
varVec
=
transform
.
position
;
varVec
.
z
=
0
;
varVec
.
y
+=
1.0f
;
m_effect
.
transform
.
position
=
transform
.
position
;
m_effect
.
transform
.
localRotation
=
m_liquidStartQua
;
m_effect
.
transform
.
localScale
=
m_liquidStartScale
;
m_effect
.
SetActive
(
false
);
m_effect
.
SetActive
(
true
);
}
}
//重置碎块状态
public
void
ResetFragState
()
...
...
@@ -123,5 +142,9 @@ public class FruitItemView : MonoBehaviour
m_fragTrans
[
i
].
transform
.
localPosition
=
m_fragPos
[
i
];
m_fragTrans
[
i
].
transform
.
localRotation
=
m_fragQua
[
i
];
}
//if (m_effect)
//{
// m_effect.SetActive(false);
//}
}
}
3D Fruit/Assets/#A2_Scripts/Battle/View/FruitView.cs
View file @
c639ce83
...
...
@@ -14,6 +14,9 @@ public class FruitView : MonoBehaviour
public
float
m_cutSpeed
=
3.0f
;
//旋转速度
//public EndlessContainer m_containerLeft;//左边流体控制
//public EndlessContainer m_containerRight;//右边流体控制
public
GameObject
m_strawberryEffect
;
//草莓特效
public
GameObject
m_lemonEffect
;
//柠檬特效
public
GameObject
m_orangeEffect
;
//橙子特效
private
List
<
FruitItemView
>
m_selectLst
=
new
List
<
FruitItemView
>();
//选中的水果
private
int
m_lineIndex
=
0
;
//线段计数
private
FruitItemView
m_curSelectItem
;
//当前选中的
...
...
@@ -136,7 +139,7 @@ public class FruitView : MonoBehaviour
BattleCtrl
.
instance
.
battleUI
.
SetMoveNum
(
m_moveNum
);
if
(
m_moveNum
<=
0
)
{
Invoke
(
"DelayFail"
,
2.
5
f
);
Invoke
(
"DelayFail"
,
2.
8
f
);
}
}
//if(!IsConnectRight())
...
...
@@ -147,7 +150,7 @@ public class FruitView : MonoBehaviour
for
(
int
i
=
0
;
i
<
m_selectLst
.
Count
;
i
++)
{
m_selectLst
[
i
].
SetFrag
();
m_selectLst
[
i
].
SetLiquidEffect
();
//
m_selectLst[i].SetLiquidEffect();
//播放爆汁特效
GameObject
varEffectObj
=
null
;
int
varRand
=
Random
.
Range
(
0
,
2
);
...
...
@@ -250,77 +253,84 @@ public class FruitView : MonoBehaviour
}
//计算总的切的水果数量
m_strawberryTotalNum
+=
varStrawberryNum
;
if
(
m_strawberryTotalNum
>=
GlobalConfig
.
FruitMoveTotal
Num
)
if
(
m_strawberryTotalNum
>=
GlobalConfig
.
StrawberryRandom
Num
)
{
m_strawberryTotalNum
=
GlobalConfig
.
FruitMoveTotal
Num
;
m_strawberryTotalNum
=
GlobalConfig
.
StrawberryRandom
Num
;
BattleCtrl
.
instance
.
battleUI
.
SetStrawberryState
(
true
);
}
m_lemonTotalNum
+=
varLemonNum
;
if
(
m_lemonTotalNum
>=
GlobalConfig
.
FruitMoveTotal
Num
)
if
(
m_lemonTotalNum
>=
GlobalConfig
.
LemonRandom
Num
)
{
m_lemonTotalNum
=
GlobalConfig
.
FruitMoveTotal
Num
;
m_lemonTotalNum
=
GlobalConfig
.
LemonRandom
Num
;
BattleCtrl
.
instance
.
battleUI
.
SetLemonState
(
true
);
}
m_orangeTotalNum
+=
varOrangeNum
;
if
(
m_orangeTotalNum
>=
GlobalConfig
.
FruitMoveTotal
Num
)
if
(
m_orangeTotalNum
>=
GlobalConfig
.
OrangeRandom
Num
)
{
m_orangeTotalNum
=
GlobalConfig
.
FruitMoveTotal
Num
;
m_orangeTotalNum
=
GlobalConfig
.
OrangeRandom
Num
;
BattleCtrl
.
instance
.
battleUI
.
SetOrangeState
(
true
);
}
BattleCtrl
.
instance
.
battleUI
.
SetStrawberryNum
(
m_strawberryTotalNum
);
BattleCtrl
.
instance
.
battleUI
.
SetLemonNum
(
m_lemonTotalNum
);
BattleCtrl
.
instance
.
battleUI
.
SetOrangeNum
(
m_orangeTotalNum
);
//播放特效
m_strawberryEffect
.
SetActive
(
false
);
m_strawberryEffect
.
SetActive
(
varStrawberryNum
>
0
);
m_lemonEffect
.
SetActive
(
false
);
m_lemonEffect
.
SetActive
(
varLemonNum
>
0
);
m_orangeEffect
.
SetActive
(
false
);
m_orangeEffect
.
SetActive
(
varOrangeNum
>
0
);
GameServices
.
timerServices
.
Push
(
this
,
0.4f
,
delegate
{
if
(
m_glassView
)
{
m_glassView
.
SetFruitNum
(
varStrawberryNum
,
varLemonNum
,
varOrangeNum
);
}
});
//if(m_glass1View)
//{
// m_glass1View.SetFruitNum(varStrawberryNum, varLemonNum, varOrangeNum);
//}
//计算左边数量水果
int
varStrawberryLeftNum
=
0
;
int
varLemonLeftNum
=
0
;
int
varOrangeLeftNum
=
0
;
for
(
int
i
=
0
;
i
<
m_leftLst
.
Count
;
i
++)
{
if
(
m_leftLst
[
i
].
type
==
FruitType
.
Strawberry
)
{
varStrawberryLeftNum
++;
}
else
if
(
m_leftLst
[
i
].
type
==
FruitType
.
Lemon
)
{
varLemonLeftNum
++;
}
else
if
(
m_leftLst
[
i
].
type
==
FruitType
.
Orange
)
{
varOrangeLeftNum
++;
}
}
int
varStrawberryRightNum
=
0
;
int
varLemonRightNum
=
0
;
int
varOrangeRightNum
=
0
;
for
(
int
i
=
0
;
i
<
m_rightLst
.
Count
;
i
++)
{
if
(
m_rightLst
[
i
].
type
==
FruitType
.
Strawberry
)
{
varStrawberryRightNum
++;
}
else
if
(
m_rightLst
[
i
].
type
==
FruitType
.
Lemon
)
{
varLemonRightNum
++;
}
else
if
(
m_rightLst
[
i
].
type
==
FruitType
.
Orange
)
{
varOrangeRightNum
++;
}
}
//
int varStrawberryLeftNum = 0;
//
int varLemonLeftNum = 0;
//
int varOrangeLeftNum = 0;
//
for (int i = 0; i < m_leftLst.Count; i++)
//
{
//
if (m_leftLst[i].type == FruitType.Strawberry)
//
{
//
varStrawberryLeftNum++;
//
}
//
else if (m_leftLst[i].type == FruitType.Lemon)
//
{
//
varLemonLeftNum++;
//
}
//
else if (m_leftLst[i].type == FruitType.Orange)
//
{
//
varOrangeLeftNum++;
//
}
//
}
//
int varStrawberryRightNum = 0;
//
int varLemonRightNum = 0;
//
int varOrangeRightNum = 0;
//
for (int i = 0; i < m_rightLst.Count; i++)
//
{
//
if (m_rightLst[i].type == FruitType.Strawberry)
//
{
//
varStrawberryRightNum++;
//
}
//
else if (m_rightLst[i].type == FruitType.Lemon)
//
{
//
varLemonRightNum++;
//
}
//
else if (m_rightLst[i].type == FruitType.Orange)
//
{
//
varOrangeRightNum++;
//
}
//
}
//流体控制
//ShowLiquidEffect(varStrawberryLeftNum, varLemonLeftNum, varOrangeLeftNum, varStrawberryRightNum, varLemonRightNum
// , varOrangeRightNum, varStrawberryNum, varLemonNum, varOrangeNum);
GameServices
.
timerServices
.
Push
(
this
,
1.0f
,
delegate
{
if
(
m_glassView
)
{
m_glassView
.
SetFruitNum
(
varStrawberryNum
,
varLemonNum
,
varOrangeNum
);
}
});
m_selectLst
.
Clear
();
...
...
3D Fruit/Assets/#A2_Scripts/Battle/View/GlassView.cs
View file @
c639ce83
...
...
@@ -18,9 +18,9 @@ public class GlassView : MonoBehaviour
private
float
m_lemonNum
;
private
float
m_orangeNum
;
private
float
m_strawberryMaxNum
=
10.0f
;
private
float
m_lemonMaxNum
=
10.0f
;
private
float
m_orangeMaxNum
=
10.0f
;
//
private float m_strawberryMaxNum = 10.0f;
//
private float m_lemonMaxNum = 10.0f;
//
private float m_orangeMaxNum = 10.0f;
private
bool
m_bControl
=
true
;
private
float
m_speed
=
2.0f
;
...
...
@@ -50,21 +50,21 @@ public class GlassView : MonoBehaviour
public
void
SetFruitNum
(
int
num1
,
int
num2
,
int
num3
)
{
m_strawberryNum
+=
num1
;
if
(
m_strawberryNum
>=
m_strawberryMax
Num
)
if
(
m_strawberryNum
>=
GlobalConfig
.
StrawberryRandom
Num
)
{
m_strawberryNum
=
m_strawberryMax
Num
;
m_strawberryNum
=
GlobalConfig
.
StrawberryRandom
Num
;
//BattleCtrl.instance.battleUI.SetStrawberryState(true);
}
m_lemonNum
+=
num2
;
if
(
m_lemonNum
>=
m_lemonMax
Num
)
if
(
m_lemonNum
>=
GlobalConfig
.
LemonRandom
Num
)
{
m_lemonNum
=
m_lemonMax
Num
;
m_lemonNum
=
GlobalConfig
.
LemonRandom
Num
;
//BattleCtrl.instance.battleUI.SetLemonState(true);
}
m_orangeNum
+=
num3
;
if
(
m_orangeNum
>=
m_orangeMax
Num
)
if
(
m_orangeNum
>=
GlobalConfig
.
OrangeRandom
Num
)
{
m_orangeNum
=
m_orangeMax
Num
;
m_orangeNum
=
GlobalConfig
.
OrangeRandom
Num
;
//BattleCtrl.instance.battleUI.SetOrangeState(true);
}
//BattleCtrl.instance.battleUI.SetStrawberryNum((int)m_strawberryNum);
...
...
@@ -83,7 +83,7 @@ public class GlassView : MonoBehaviour
m_strawberryOffest
+=
Time
.
deltaTime
*
m_speed
;
Vector3
varSize
=
m_strawberry
.
localScale
;
varSize
.
y
=
m_strawberryOffest
/
m_rateMod
;
varSize
.
y
=
m_strawberryOffest
/
((
float
)
GlobalConfig
.
StrawberryRandomNum
/
0.3f
)
;
m_strawberry
.
localScale
=
varSize
;
//草莓位置
...
...
@@ -112,7 +112,7 @@ public class GlassView : MonoBehaviour
m_lemonOffest
+=
Time
.
deltaTime
*
m_speed
;
Vector3
varSize
=
m_lemon
.
localScale
;
varSize
.
y
=
m_lemonOffest
/
m_rateMod
;
varSize
.
y
=
m_lemonOffest
/
((
float
)
GlobalConfig
.
LemonRandomNum
/
0.3f
)
;
m_lemon
.
localScale
=
varSize
;
Vector3
varPos
=
m_lemon
.
localPosition
;
...
...
@@ -134,7 +134,7 @@ public class GlassView : MonoBehaviour
m_orangeOffest
+=
Time
.
deltaTime
*
m_speed
;
Vector3
varSize
=
m_orange
.
localScale
;
varSize
.
y
=
m_orangeOffest
/
m_rateMod
;
varSize
.
y
=
m_orangeOffest
/
((
float
)
GlobalConfig
.
OrangeRandomNum
/
0.3f
)
;
m_orange
.
localScale
=
varSize
;
Vector3
varPos
=
m_orange
.
localPosition
;
...
...
@@ -149,7 +149,7 @@ public class GlassView : MonoBehaviour
//{
// m_fruitView.HideAnimator();
//}
if
(
m_strawberryOffest
>=
m_strawberryMaxNum
&&
m_lemonOffest
>=
m_lemonMax
Num
if
(
m_strawberryOffest
>=
GlobalConfig
.
StrawberryRandomNum
&&
m_lemonOffest
>=
GlobalConfig
.
LemonRandom
Num
&&
m_bControl
)
{
m_bControl
=
false
;
...
...
@@ -164,8 +164,8 @@ public class GlassView : MonoBehaviour
//{
// m_fruitView.HideAnimator();
//}
if
(
m_strawberryOffest
>=
m_strawberryMaxNum
&&
m_lemonOffest
>=
m_lemonMax
Num
&&
m_orangeOffest
>=
m_orangeMax
Num
&&
m_bControl
)
if
(
m_strawberryOffest
>=
GlobalConfig
.
StrawberryRandomNum
&&
m_lemonOffest
>=
GlobalConfig
.
LemonRandom
Num
&&
m_orangeOffest
>=
GlobalConfig
.
OrangeRandom
Num
&&
m_bControl
)
{
m_bControl
=
false
;
BattleCtrl
.
instance
.
OnBattleWin
();
...
...
3D Fruit/Assets/#A2_Scripts/Services/GlobalConfig.cs
View file @
c639ce83
...
...
@@ -36,9 +36,18 @@ public class GlobalConfig
public
static
float
CanvaUIScaleX
=
BattleCtrl
.
instance
.
battleUI
.
gameObject
.
transform
.
localScale
.
x
;
//uicanva适配大小
//水果可以切的次数
public
static
int
FruitMoveTotalNum
=
10
;
public
static
int
FruitMoveTotalNum
=
5
;
//水果可以切的次数
public
static
int
StrawberryRandomNum
=
0
;
//关卡随机目标草莓
public
static
int
LemonRandomNum
=
0
;
//关卡随机目标柠檬
public
static
int
OrangeRandomNum
=
0
;
//关卡随机目标橙子
//设置水果随机数
public
static
void
SetFruitRandomNum
()
{
StrawberryRandomNum
=
Random
.
Range
(
5
,
16
);
LemonRandomNum
=
Random
.
Range
(
5
,
16
);
OrangeRandomNum
=
Random
.
Range
(
5
,
16
);
}
//通过当前关卡返回总的数量
public
static
int
TotalNum
()
{
...
...
3D Fruit/Assets/#A3_Prefabs/FruitPrefab/Lemon.prefab
View file @
c639ce83
This diff is collapsed.
Click to expand it.
3D Fruit/Assets/#A3_Prefabs/FruitPrefab/Orange.prefab
View file @
c639ce83
This diff is collapsed.
Click to expand it.
3D Fruit/Assets/#A3_Prefabs/FruitPrefab/Strawberry.prefab
View file @
c639ce83
This diff is collapsed.
Click to expand it.
3D Fruit/Assets/Res/Levels/Level0.prefab
View file @
c639ce83
This diff is collapsed.
Click to expand it.
3D Fruit/Assets/Res/Levels/Level1.prefab
View file @
c639ce83
This diff is collapsed.
Click to expand it.
3D Fruit/Assets/Res/Levels/Level2.prefab
View file @
c639ce83
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
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