Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
man-in-the-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
4
Issues
4
List
Boards
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
MIM
man-in-the-mirror
Commits
bf23684a
Commit
bf23684a
authored
Jul 04, 2019
by
18손재민
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
이제 스테이지는 Resources에서 로드함. 스테이지 선택 씬 별도로 만들었고 이에 따라 MapManager는 더 이상 stage들을 로드하지 않음
parent
5414358c
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
72 additions
and
107 deletions
+72
-107
Maps.meta
Assets/Maps.meta
+8
-0
GameManager.prefab
Assets/Prefabs/GameManager.prefab
+1
-2
MapManager.prefab
Assets/Prefabs/MapManager.prefab
+0
-4
Stage Select.prefab
Assets/Prefabs/Stage Select.prefab
+2
-1
Stages.meta
Assets/Resources/Stages.meta
+8
-0
stage1.json
Assets/Resources/Stages/stage1.json
+0
-0
stage1.json.meta
Assets/Resources/Stages/stage1.json.meta
+1
-1
stage2.json
Assets/Resources/Stages/stage2.json
+1
-0
stage2.json.meta
Assets/Resources/Stages/stage2.json.meta
+7
-0
stage3.json
Assets/Resources/Stages/stage3.json
+1
-0
stage3.json.meta
Assets/Resources/Stages/stage3.json.meta
+7
-0
PlayStage.unity
Assets/Scenes/PlayStage.unity
+1
-1
SelectStage.unity
Assets/Scenes/SelectStage.unity
+0
-69
Briefcase.cs
Assets/Scripts/Interactors/Briefcase.cs
+5
-0
CameraTurret.cs
Assets/Scripts/Interactors/CameraTurret.cs
+5
-0
GameManager.cs
Assets/Scripts/Managers/GameManager.cs
+8
-22
MapManager.cs
Assets/Scripts/Managers/MapManager.cs
+0
-2
MapEditor.cs
Assets/Scripts/MapEditor.cs
+1
-0
StageSelector.cs
Assets/Scripts/StageSelector.cs
+16
-5
No files found.
Assets/Maps.meta
0 → 100644
View file @
bf23684a
fileFormatVersion: 2
guid: 47baf9abe59c90a4d914127b0527c24f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Assets/Prefabs/GameManager.prefab
View file @
bf23684a
...
...
@@ -46,5 +46,4 @@ MonoBehaviour:
uiGenerator
:
{
fileID
:
0
}
clearIndex
:
000000000000000000000000000000000000000000000000000000000000000000000000
clearCounter
:
0
currentStage
:
0
totalStageCount
:
3
currentStage
:
{
fileID
:
0
}
Assets/Prefabs/MapManager.prefab
View file @
bf23684a
...
...
@@ -69,7 +69,3 @@ MonoBehaviour:
-
{
fileID
:
87051754405567689
,
guid
:
2a2831d520acdd3408d8a04673423e2a
,
type
:
3
}
player
:
{
fileID
:
494213313239918027
,
guid
:
449b2ca4d925da541bb45c84b63aab98
,
type
:
3
}
players
:
[]
stage
:
-
{
fileID
:
4900000
,
guid
:
e4921fa87e2b8fe44b2246f2b275c88a
,
type
:
3
}
-
{
fileID
:
4900000
,
guid
:
e4921fa87e2b8fe44b2246f2b275c88a
,
type
:
3
}
-
{
fileID
:
4900000
,
guid
:
e4921fa87e2b8fe44b2246f2b275c88a
,
type
:
3
}
Assets/Prefabs/Stage Select.prefab
View file @
bf23684a
...
...
@@ -538,6 +538,7 @@ MonoBehaviour:
m_Name
:
m_EditorClassIdentifier
:
stageIndex
:
{
fileID
:
6319119020849879011
}
stage
:
[]
---
!u!1
&6319119020285146382
GameObject
:
m_ObjectHideFlags
:
0
...
...
@@ -827,4 +828,4 @@ MonoBehaviour:
m_HorizontalOverflow
:
0
m_VerticalOverflow
:
0
m_LineSpacing
:
1
m_Text
:
'
Stage
:
'
m_Text
:
'
Stage
:
0
'
Assets/Resources/Stages.meta
0 → 100644
View file @
bf23684a
fileFormatVersion: 2
guid: 9c461e467311d5b44adb80593e57c448
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Assets/
2019-07-02-18-55-46
.json
→
Assets/
Resources/Stages/stage1
.json
View file @
bf23684a
File moved
Assets/
2019-07-02-18-55-46
.json.meta
→
Assets/
Resources/Stages/stage1
.json.meta
View file @
bf23684a
fileFormatVersion: 2
guid:
e4921fa87e2b8fe44b2246f2b275c88a
guid:
882d04a3f25e01644b2a1385ad0b2a9b
TextScriptImporter:
externalObjects: {}
userData:
...
...
Assets/Resources/Stages/stage2.json
0 → 100644
View file @
bf23684a
{
"objects"
:[{
"tag"
:
0
,
"xPos"
:
25.0
,
"yPos"
:
0.0
},{
"tag"
:
2
,
"xPos"
:
-2.0
,
"yPos"
:
1.5
},{
"tag"
:
2
,
"xPos"
:
-1.0
,
"yPos"
:
1.5
},{
"tag"
:
3
,
"xPos"
:
0.0
,
"yPos"
:
1.5
},{
"tag"
:
3
,
"xPos"
:
1.0
,
"yPos"
:
1.5
},{
"tag"
:
1
,
"xPos"
:
0.0
,
"yPos"
:
0.0
},{
"tag"
:
1
,
"xPos"
:
0.0
,
"yPos"
:
-1.0
},{
"tag"
:
1
,
"xPos"
:
1.0
,
"yPos"
:
-1.0
},{
"tag"
:
1
,
"xPos"
:
1.0
,
"yPos"
:
0.0
},{
"tag"
:
1
,
"xPos"
:
-2.0
,
"yPos"
:
2.0
},{
"tag"
:
1
,
"xPos"
:
-2.0
,
"yPos"
:
1.0
},{
"tag"
:
1
,
"xPos"
:
-1.0
,
"yPos"
:
1.0
},{
"tag"
:
1
,
"xPos"
:
-1.0
,
"yPos"
:
2.0
},{
"tag"
:
1
,
"xPos"
:
0.0
,
"yPos"
:
2.0
},{
"tag"
:
1
,
"xPos"
:
0.0
,
"yPos"
:
1.0
},{
"tag"
:
1
,
"xPos"
:
1.0
,
"yPos"
:
1.0
},{
"tag"
:
1
,
"xPos"
:
1.0
,
"yPos"
:
2.0
},{
"tag"
:
1
,
"xPos"
:
2.0
,
"yPos"
:
2.0
},{
"tag"
:
1
,
"xPos"
:
2.0
,
"yPos"
:
1.0
},{
"tag"
:
1
,
"xPos"
:
2.0
,
"yPos"
:
0.0
},{
"tag"
:
1
,
"xPos"
:
2.0
,
"yPos"
:
-1.0
},{
"tag"
:
1
,
"xPos"
:
2.0
,
"yPos"
:
-2.0
},{
"tag"
:
1
,
"xPos"
:
1.0
,
"yPos"
:
-2.0
},{
"tag"
:
1
,
"xPos"
:
0.0
,
"yPos"
:
-2.0
},{
"tag"
:
1
,
"xPos"
:
-1.0
,
"yPos"
:
-2.0
},{
"tag"
:
1
,
"xPos"
:
-1.0
,
"yPos"
:
-1.0
},{
"tag"
:
1
,
"xPos"
:
-2.0
,
"yPos"
:
-1.0
},{
"tag"
:
9
,
"xPos"
:
-2.0
,
"yPos"
:
-1.0
},{
"tag"
:
1
,
"xPos"
:
-2.0
,
"yPos"
:
-2.0
},{
"tag"
:
1
,
"xPos"
:
-2.0
,
"yPos"
:
0.0
},{
"tag"
:
9
,
"xPos"
:
-2.0
,
"yPos"
:
0.0
},{
"tag"
:
1
,
"xPos"
:
-1.0
,
"yPos"
:
0.0
},{
"tag"
:
4
,
"xPos"
:
-2.0
,
"yPos"
:
-2.0
},{
"tag"
:
4
,
"xPos"
:
-1.0
,
"yPos"
:
-2.0
},{
"tag"
:
6
,
"xPos"
:
2.0
,
"yPos"
:
2.0
},{
"tag"
:
7
,
"xPos"
:
2.0
,
"yPos"
:
1.0
},{
"tag"
:
8
,
"xPos"
:
2.0
,
"yPos"
:
0.0
},{
"tag"
:
5
,
"xPos"
:
1.0
,
"yPos"
:
1.0
},{
"tag"
:
5
,
"xPos"
:
1.0
,
"yPos"
:
0.0
},{
"tag"
:
5
,
"xPos"
:
1.0
,
"yPos"
:
-1.0
},{
"tag"
:
5
,
"xPos"
:
1.0
,
"yPos"
:
-2.0
}],
"clears"
:[],
"cases"
:[
3
,
0
,
1
,
2
],
"bullets"
:[
0
,
1
,
2
]}
\ No newline at end of file
Assets/Resources/Stages/stage2.json.meta
0 → 100644
View file @
bf23684a
fileFormatVersion: 2
guid: b65159d8e62109d4990676399736ddbf
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Assets/Resources/Stages/stage3.json
0 → 100644
View file @
bf23684a
{
"objects"
:[{
"tag"
:
0
,
"xPos"
:
25.0
,
"yPos"
:
0.0
},{
"tag"
:
2
,
"xPos"
:
-2.0
,
"yPos"
:
1.5
},{
"tag"
:
2
,
"xPos"
:
-1.0
,
"yPos"
:
1.5
},{
"tag"
:
3
,
"xPos"
:
0.0
,
"yPos"
:
1.5
},{
"tag"
:
3
,
"xPos"
:
1.0
,
"yPos"
:
1.5
},{
"tag"
:
1
,
"xPos"
:
0.0
,
"yPos"
:
0.0
},{
"tag"
:
1
,
"xPos"
:
0.0
,
"yPos"
:
-1.0
},{
"tag"
:
1
,
"xPos"
:
1.0
,
"yPos"
:
-1.0
},{
"tag"
:
1
,
"xPos"
:
1.0
,
"yPos"
:
0.0
},{
"tag"
:
1
,
"xPos"
:
-2.0
,
"yPos"
:
2.0
},{
"tag"
:
1
,
"xPos"
:
-2.0
,
"yPos"
:
1.0
},{
"tag"
:
1
,
"xPos"
:
-1.0
,
"yPos"
:
1.0
},{
"tag"
:
1
,
"xPos"
:
-1.0
,
"yPos"
:
2.0
},{
"tag"
:
1
,
"xPos"
:
0.0
,
"yPos"
:
2.0
},{
"tag"
:
1
,
"xPos"
:
0.0
,
"yPos"
:
1.0
},{
"tag"
:
1
,
"xPos"
:
1.0
,
"yPos"
:
1.0
},{
"tag"
:
1
,
"xPos"
:
1.0
,
"yPos"
:
2.0
},{
"tag"
:
1
,
"xPos"
:
2.0
,
"yPos"
:
2.0
},{
"tag"
:
1
,
"xPos"
:
2.0
,
"yPos"
:
1.0
},{
"tag"
:
1
,
"xPos"
:
2.0
,
"yPos"
:
0.0
},{
"tag"
:
1
,
"xPos"
:
2.0
,
"yPos"
:
-1.0
},{
"tag"
:
1
,
"xPos"
:
2.0
,
"yPos"
:
-2.0
},{
"tag"
:
1
,
"xPos"
:
1.0
,
"yPos"
:
-2.0
},{
"tag"
:
1
,
"xPos"
:
0.0
,
"yPos"
:
-2.0
},{
"tag"
:
1
,
"xPos"
:
-1.0
,
"yPos"
:
-2.0
},{
"tag"
:
1
,
"xPos"
:
-1.0
,
"yPos"
:
-1.0
},{
"tag"
:
1
,
"xPos"
:
-2.0
,
"yPos"
:
-1.0
},{
"tag"
:
9
,
"xPos"
:
-2.0
,
"yPos"
:
-1.0
},{
"tag"
:
1
,
"xPos"
:
-2.0
,
"yPos"
:
-2.0
},{
"tag"
:
1
,
"xPos"
:
-2.0
,
"yPos"
:
0.0
},{
"tag"
:
9
,
"xPos"
:
-2.0
,
"yPos"
:
0.0
},{
"tag"
:
1
,
"xPos"
:
-1.0
,
"yPos"
:
0.0
},{
"tag"
:
4
,
"xPos"
:
-2.0
,
"yPos"
:
-2.0
},{
"tag"
:
4
,
"xPos"
:
-1.0
,
"yPos"
:
-2.0
},{
"tag"
:
6
,
"xPos"
:
2.0
,
"yPos"
:
2.0
},{
"tag"
:
7
,
"xPos"
:
2.0
,
"yPos"
:
1.0
},{
"tag"
:
8
,
"xPos"
:
2.0
,
"yPos"
:
0.0
},{
"tag"
:
5
,
"xPos"
:
1.0
,
"yPos"
:
1.0
},{
"tag"
:
5
,
"xPos"
:
1.0
,
"yPos"
:
0.0
},{
"tag"
:
5
,
"xPos"
:
1.0
,
"yPos"
:
-1.0
},{
"tag"
:
5
,
"xPos"
:
1.0
,
"yPos"
:
-2.0
}],
"clears"
:[],
"cases"
:[
3
,
0
,
1
,
2
],
"bullets"
:[
0
,
1
,
2
]}
\ No newline at end of file
Assets/Resources/Stages/stage3.json.meta
0 → 100644
View file @
bf23684a
fileFormatVersion: 2
guid: a0bbdbca5d3d3904b8af6f4f7266190d
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Assets/Scenes/PlayStage.unity
View file @
bf23684a
...
...
@@ -622,7 +622,7 @@ PrefabInstance:
-
target
:
{
fileID
:
52444459818764334
,
guid
:
42247a938bb6e554eb00dc08303a72d6
,
type
:
3
}
propertyPath
:
m_IsActive
value
:
0
value
:
1
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
52444459818764335
,
guid
:
42247a938bb6e554eb00dc08303a72d6
,
type
:
3
}
...
...
Assets/Scenes/SelectStage.unity
View file @
bf23684a
...
...
@@ -211,75 +211,6 @@ Transform:
m_Father
:
{
fileID
:
0
}
m_RootOrder
:
1
m_LocalEulerAnglesHint
:
{
x
:
50
,
y
:
-30
,
z
:
0
}
---
!u!1001
&704223974
PrefabInstance
:
m_ObjectHideFlags
:
0
serializedVersion
:
2
m_Modification
:
m_TransformParent
:
{
fileID
:
0
}
m_Modifications
:
-
target
:
{
fileID
:
52444459818764334
,
guid
:
42247a938bb6e554eb00dc08303a72d6
,
type
:
3
}
propertyPath
:
m_Name
value
:
GameManager
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
52444459818764335
,
guid
:
42247a938bb6e554eb00dc08303a72d6
,
type
:
3
}
propertyPath
:
m_LocalPosition.x
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
52444459818764335
,
guid
:
42247a938bb6e554eb00dc08303a72d6
,
type
:
3
}
propertyPath
:
m_LocalPosition.y
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
52444459818764335
,
guid
:
42247a938bb6e554eb00dc08303a72d6
,
type
:
3
}
propertyPath
:
m_LocalPosition.z
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
52444459818764335
,
guid
:
42247a938bb6e554eb00dc08303a72d6
,
type
:
3
}
propertyPath
:
m_LocalRotation.x
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
52444459818764335
,
guid
:
42247a938bb6e554eb00dc08303a72d6
,
type
:
3
}
propertyPath
:
m_LocalRotation.y
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
52444459818764335
,
guid
:
42247a938bb6e554eb00dc08303a72d6
,
type
:
3
}
propertyPath
:
m_LocalRotation.z
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
52444459818764335
,
guid
:
42247a938bb6e554eb00dc08303a72d6
,
type
:
3
}
propertyPath
:
m_LocalRotation.w
value
:
1
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
52444459818764335
,
guid
:
42247a938bb6e554eb00dc08303a72d6
,
type
:
3
}
propertyPath
:
m_RootOrder
value
:
4
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
52444459818764335
,
guid
:
42247a938bb6e554eb00dc08303a72d6
,
type
:
3
}
propertyPath
:
m_LocalEulerAnglesHint.x
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
52444459818764335
,
guid
:
42247a938bb6e554eb00dc08303a72d6
,
type
:
3
}
propertyPath
:
m_LocalEulerAnglesHint.y
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
52444459818764335
,
guid
:
42247a938bb6e554eb00dc08303a72d6
,
type
:
3
}
propertyPath
:
m_LocalEulerAnglesHint.z
value
:
0
objectReference
:
{
fileID
:
0
}
m_RemovedComponents
:
[]
m_SourcePrefab
:
{
fileID
:
100100000
,
guid
:
42247a938bb6e554eb00dc08303a72d6
,
type
:
3
}
---
!u!1
&1484773285
GameObject
:
m_ObjectHideFlags
:
0
...
...
Assets/Scripts/Interactors/Briefcase.cs
View file @
bf23684a
...
...
@@ -69,4 +69,9 @@ public class Briefcase : MonoBehaviour, IObject, IPlayerInteractor
{
return
ObjType
.
Briefcase
;
}
private
void
OnDestroy
()
{
if
(
PlayerController
.
inst
!=
null
)
PlayerController
.
inst
.
OnPlayerMove
-=
Interact
;
}
}
Assets/Scripts/Interactors/CameraTurret.cs
View file @
bf23684a
...
...
@@ -48,4 +48,9 @@ public class CameraTurret : MonoBehaviour, IObject, IBreakable, IPlayerInteracto
{
return
ObjType
.
Camera
;
}
private
void
OnDestroy
()
{
if
(
PlayerController
.
inst
!=
null
)
PlayerController
.
inst
.
OnPlayerMove
-=
Interact
;
}
}
Assets/Scripts/Managers/GameManager.cs
View file @
bf23684a
...
...
@@ -14,11 +14,7 @@ public class GameManager : SingletonBehaviour<GameManager>
/// <summary>
/// The index of the current stage.
/// </summary>
public
int
currentStage
;
/// <summary>
/// Max number of stages.
/// </summary>
public
int
totalStageCount
;
public
TextAsset
currentStage
;
public
void
ResetClearIndex
()
{
...
...
@@ -46,13 +42,11 @@ public class GameManager : SingletonBehaviour<GameManager>
black
=
clearIndex
[(
int
)
ClearType
.
Black
];
}
public
void
StartStage
(
int
_stageIndex
)
public
void
StartStage
()
{
currentStage
=
_stageIndex
;
SceneManager
.
LoadScene
(
"PlayStage"
);
MapManager
.
inst
.
LoadMap
(
MapManager
.
inst
.
stage
[
currentStage
]);
MapManager
.
inst
.
LoadMap
(
currentStage
);
}
public
void
ClearStage
()
{
Debug
.
Log
(
"Stage Clear!"
);
...
...
@@ -72,22 +66,14 @@ public class GameManager : SingletonBehaviour<GameManager>
Debug
.
Log
(
"Game Restart!"
);
yield
return
new
WaitForSeconds
(
0.5f
);
GameOver
();
MapManager
.
inst
.
LoadMap
(
MapManager
.
inst
.
stage
[
currentStage
]);
}
void
Awake
()
{
StartStage
();
}
// Start is called before the first frame update
void
Start
()
{
SetStatic
();
/*if (MapManager.inst.isMapEditingOn)
{
//Reset clear index to -1.
ResetClearIndex();
}*/
currentStage
=
Resources
.
Load
<
TextAsset
>(
"Stages/"
+
"stage"
+
(
StageSelector
.
selectedStage
+
1
));
StartStage
();
Destroy
(
FindObjectOfType
<
StageSelector
>().
gameObject
);
}
}
Assets/Scripts/Managers/MapManager.cs
View file @
bf23684a
...
...
@@ -21,8 +21,6 @@ public class MapManager : SingletonBehaviour<MapManager>
public
GameObject
player
;
[
Header
(
"All players"
)]
public
List
<
GameObject
>
players
;
[
Header
(
"All stages"
)]
public
TextAsset
[]
stage
;
public
BulletFactory
bulletFactory
;
/// <summary>
...
...
Assets/Scripts/MapEditor.cs
View file @
bf23684a
...
...
@@ -192,6 +192,7 @@ public class MapEditor : SingletonBehaviour<MapEditor>
// Start is called before the first frame update
void
Start
()
{
GameManager
.
inst
.
ResetClearIndex
();
StartMap
(
currentMap
);
SwitchMode
(
0
);
SwitchBulletMode
((
int
)
BulletCode
.
None
);
...
...
Assets/Scripts/StageSelector.cs
View file @
bf23684a
...
...
@@ -2,27 +2,38 @@
using
System.Collections.Generic
;
using
UnityEngine
;
using
UnityEngine.UI
;
using
UnityEngine.SceneManagement
;
public
class
StageSelector
:
MonoBehaviour
{
public
Text
stageIndex
;
public
static
int
selectedStage
;
public
TextAsset
[]
stage
;
int
totalStageCount
;
public
void
ChangeStage
(
int
i
)
{
if
(
i
<
0
&&
GameManager
.
inst
.
currentStage
==
0
)
GameManager
.
inst
.
currentStage
=
GameManager
.
inst
.
totalStageCount
-
1
;
else
GameManager
.
inst
.
currentStage
=
(
GameManager
.
inst
.
currentStage
+
i
)
%
GameManager
.
inst
.
totalStageCount
;
stageIndex
.
text
=
"Stage : "
+
GameManager
.
inst
.
current
Stage
;
if
(
i
<
0
&&
selectedStage
==
0
)
selectedStage
=
totalStageCount
-
1
;
else
selectedStage
=
(
selectedStage
+
i
)
%
totalStageCount
;
stageIndex
.
text
=
"Stage : "
+
selected
Stage
;
}
public
void
StartSelectedStage
()
{
GameManager
.
inst
.
StartStage
(
GameManager
.
inst
.
currentStage
);
SceneManager
.
LoadScene
(
"PlayStage"
);
}
void
Awake
()
{
DontDestroyOnLoad
(
this
);
stage
=
Resources
.
LoadAll
<
TextAsset
>(
"Stages"
);
}
// Start is called before the first frame update
void
Start
()
{
selectedStage
=
0
;
totalStageCount
=
stage
.
Length
;
}
// Update is called once per frame
...
...
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