Rev 1443 |
Rev 1467 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BurutaruEditor.file.elements;
using BurutaruEditor.file.enemies;
using BurutaruEditor.view;
using BauzoidNET.math;
using BauzoidNET.parser;
namespace BurutaruEditor
.file
{
public class Document
{
//=================================================================================================================================
public const float VIRTUAL_WIDTH
= 800;
public const float VIRTUAL_HEIGHT
= 480;
public static readonly Vector4 TEXT_COLOR
= new Vector4
(1,
1,
1,
1);
public const float TEXT_SCALE
= 0
.8f
;
//=================================================================================================================================
private MainForm mOwner
= null;
public MainForm Owner
{ get
{ return mOwner
; } }
public DocumentView View
{ get
{ return Owner
.View; } }
private bool mIsDirty
= false;
private String mFilename
= null;
private List
<CheckPoint
> mCheckPoints
= new List
<CheckPoint
>();
public List
<CheckPoint
> CheckPoints
{ get
{ return mCheckPoints
; } }
private List
<EnemySpawner
> mSpawners
= new List
<EnemySpawner
>();
public List
<EnemySpawner
> Spawners
{ get
{ return mSpawners
; } }
private List
<LevelElement
> mLevelElements
= new List
<LevelElement
>();
public List
<LevelElement
> LevelElements
{ get
{ return mLevelElements
; } }
public string LevelTitle
{ get
; set
; }
public Vector2 mStartPosition
= new Vector2
();
public Vector2 StartPosition
{ get
{ return mStartPosition
; } }
//=================================================================================================================================
public Document
(MainForm owner
)
{
mOwner
= owner
;
ResetDocument
();
}
public void Init
()
{
ResetDocument
();
}
public void Exit
()
{
ResetDocument
();
}
public void ResetDocument
()
{
mFilename
= null;
LevelTitle
= "Level Title";
mIsDirty
= false;
mSpawners
.Clear();
for (int i
= 0; i
< mLevelElements
.Count; i
++)
mLevelElements
.ElementAt(i
).Exit();
mLevelElements
.Clear();
mCheckPoints
.Clear();
}
public bool NewDocument
()
{
ResetDocument
();
return true;
}
public bool LoadDocument
(String filename
)
{
ResetDocument
();
mFilename
= filename
;
// fill mLevelElements from file
if (!LevelUtil
.LoadLevel(mFilename,
this))
return false;
Owner
.GlView.Refresh();
return true;
}
public bool SaveDocument
()
{
// save mLevelElements
return LevelUtil
.SaveLevel(mFilename,
this);
}
public bool SaveDocument
(String filename
)
{
mFilename
= filename
;
return SaveDocument
();
}
public void AddCheckPoint
(CheckPoint checkPoint
)
{
mCheckPoints
.Add(checkPoint
);
Owner
.CheckPoints.Items.Add(checkPoint
);
Owner
.CheckPoints.SelectedIndex = Owner
.CheckPoints.Items.Count - 1;
}
public void AddEnemySpawner
(EnemySpawner spawner
)
{
mSpawners
.Add(spawner
);
Owner
.Spawners.Items.Add(spawner
);
Owner
.Spawners.SelectedIndex = Owner
.Spawners.Items.Count - 1;
}
public void AddLevelElement
(LevelElement element
)
{
mLevelElements
.Add(element
);
Owner
.LevelElements.Items.Add(element
);
Owner
.LevelElements.SelectedIndex = Owner
.LevelElements.Items.Count - 1;
}
//=================================================================================================================================
public void SetDirty
(bool dirty
)
{
mIsDirty
= dirty
;
}
public bool IsDirty
()
{
return mIsDirty
;
}
public String GetFilename
()
{
return mFilename
;
}
public void SetFilename
(String filename
)
{
mFilename
= filename
;
}
public bool IsFilenameSet
()
{
return (mFilename
!= null);
}
public bool ReadParameter
(Tokenizer t,
string id
)
{
if (id
.Equals("name", StringComparison
.OrdinalIgnoreCase))
{
LevelTitle
= t
.readString();
}
else if (id
.Equals("startPosition", StringComparison
.OrdinalIgnoreCase))
{
mStartPosition
= ParseUtil
.readVector2(t
);
}
else
{
// unsupported id
return false;
}
t
.readToken(";");
return true;
}
}
}