Rev 1483 |
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 System.Windows.Forms;
using System.IO;
using BurutaruEditor.file;
using BurutaruEditor.file.elements;
using BurutaruEditor.file.enemies;
using BauzoidNET.graphics.sprite;
namespace BurutaruEditor
.interaction
{
public class CreateObject
: Interaction
{
private bool mIsMouseInside
= false;
private string mFileName
= null;
private Sprite mPreviewSprite
= null;
private SpriteInstance mPreviewSpriteInstance
= null;
private float mLastX
= 0;
private float mLastY
= 0;
public CreateObject
(MainForm owner
)
: base(owner
)
{
}
public bool Load
(string filename
)
{
Destroy
();
string atlasFile
= Path
.ChangeExtension(filename,
"txt");
if (!File
.Exists(atlasFile
))
atlasFile
= null;
mPreviewSprite
= new Sprite
(MainForm
.App.getGraphics(), filename, atlasFile
);
mPreviewSprite
.init();
mPreviewSpriteInstance
= mPreviewSprite
.createSpriteInstanceForAll();
mFileName
= filename
;
return true;
}
public void Destroy
()
{
if (mPreviewSprite
!= null)
{
mPreviewSprite
.dispose();
mPreviewSprite
= null;
}
mPreviewSpriteInstance
= null;
}
public override void MouseDown
(MouseEventArgs e
)
{
if (e
.Button == MouseButtons
.Left)
{
if (Owner
.CurrentObjectMode == MainForm
.ObjectMode.CHECKPOINTS)
{
// create Checkpoint
Owner
.Doc.CreateCheckPoint(e
.X, e
.Y);
}
else if (Owner
.CurrentObjectMode == MainForm
.ObjectMode.SPAWNERS)
{
Owner
.Doc.CreateEnemySpawner(e
.X, e
.Y);
}
else if (Owner
.CurrentObjectMode == MainForm
.ObjectMode.ELEMENTS)
{
if (mFileName
!= null)
Owner
.Doc.CreateLevelElement(e
.X, e
.Y, mFileName
);
}
else if (Owner
.CurrentObjectMode == MainForm
.ObjectMode.SCRIPTING)
{
Owner
.Doc.CreateScripting(e
.X, e
.Y);
}
}
mLastX
= e
.X;
mLastY
= e
.Y;
}
public override void MouseMove
(MouseEventArgs e
)
{
Owner
.GlView.Cursor = Cursors
.Cross;
mLastX
= e
.X;
mLastY
= e
.Y;
}
public override void MouseUp
(MouseEventArgs e
)
{
}
public override void MouseEnter
(EventArgs e
)
{
mIsMouseInside
= true;
}
public override void MouseLeave
(EventArgs e
)
{
mIsMouseInside
= false;
Owner
.GlView.Refresh();
}
public override void Render
()
{
if ((mIsMouseInside
) && (mPreviewSpriteInstance
!= null))
{
float tx, ty
;
Owner
.View.TransformToWorldSpace(out tx,
out ty, mLastX, mLastY
);
mPreviewSpriteInstance
.transform.x = tx
;
mPreviewSpriteInstance
.transform.y = ty
;
mPreviewSpriteInstance
.transform.w = mPreviewSpriteInstance
.getSpriteRegion().getWidth() * mPreviewSpriteInstance
.getSprite().getTextureWidth();
mPreviewSpriteInstance
.transform.h = mPreviewSpriteInstance
.getSpriteRegion().getHeight() * mPreviewSpriteInstance
.getSprite().getTextureHeight();
mPreviewSpriteInstance
.centerPivot();
mPreviewSpriteInstance
.render();
}
}
}
}