Rev 1483 |
Rev 1493 |
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 System.ComponentModel;
using System.IO;
using System.Windows.Forms;
using System.Windows.Forms.Design;
using BauzoidNET.graphics.sprite;
using BauzoidNET.parser;
using BauzoidNET.math;
using BurutaruEditor.view;
namespace BurutaruEditor
.file.elements
{
public class BackgroundElement
: LevelElement
{
private string mTextureFile
= null;
public class SpriteFileNameEditor
: FileNameEditor
{
protected override void InitializeDialog
(OpenFileDialog openFileDialog
)
{
base.InitializeDialog(openFileDialog
);
String s
= Path
.Combine(Application
.StartupPath,
@"..\\..\\..\\..\\..\\BauzoidApps\\BurutaruZ_v2\\burutaru-android\\assets\\data");
openFileDialog
.InitialDirectory = Path
.GetFullPath(s
) + "\\textures";
openFileDialog
.Filter = "Image files|*.png|All files|*.*";
}
}
[System.ComponentModel.Editor(typeof(SpriteFileNameEditor
),
typeof(System.Drawing.Design.UITypeEditor))]
[Category
("Basic Parameters")]
public string TextureFile
{
get
{
return mTextureFile
;
}
set
{
LoadSprite
(value
);
}
}
private SpriteTransform mTransform
= new SpriteTransform
();
private Vector2 mScrollFactor
= new Vector2
(1,
1);
private SimpleSprite mSprite
= null;
[Browsable
(false)]
public SimpleSprite Sprite
{ get
{ return mSprite
; } }
[TypeConverter
(typeof(ExpandableObjectConverter
))]
[Category
("Basic Parameters")]
public SpriteTransform Transform
{
get
{ return mTransform
; }
}
[TypeConverter
(typeof(ExpandableObjectConverter
))]
[Category
("Basic Parameters")]
public Vector2 ScrollFactor
{
get
{ return mScrollFactor
; }
}
public BackgroundElement
(Document doc,
string name
)
: base(doc, name
)
{
}
public override void Init
()
{
string s
= Path
.Combine(Application
.StartupPath,
@"..\\..\\..\\..\\..\\BauzoidApps\\BurutaruZ_v2\\burutaru-android\\assets");
string fullPath
= Path
.GetFullPath(s
) + "\\" + mTextureFile
;
mSprite
= new SimpleSprite
(MainForm
.App.getGraphics(), fullPath
);
mSprite
.init();
}
public override void Exit
()
{
if (mSprite
!= null)
{
mSprite
.dispose();
mSprite
= null;
}
}
public void LoadSprite
(string filename
)
{
Exit
();
string path
= Path
.GetFullPath(Path
.Combine(Application
.StartupPath,
@"..\\..\\..\\..\\..\\BauzoidApps\\BurutaruZ_v2\\burutaru-android\\assets\\"));
System.Uri uri1
= new Uri
(path, UriKind
.Absolute);
System.Uri uri2
= new Uri
(filename, UriKind
.Absolute);
mTextureFile
= uri1
.MakeRelativeUri(uri2
).ToString();
Init
();
}
public override void Render
()
{
mSprite
.getSpriteTransform().set(mTransform
);
mSprite
.getSpriteTransform().x += Doc
.View.CurrentPosition.x * mScrollFactor
.x;
mSprite
.getSpriteTransform().y += Doc
.View.CurrentPosition.y * mScrollFactor
.y;
mSprite
.render();
}
public override void RenderSelected
(int selectedPart,
bool forHover
= false)
{
/*if (selectedPart == PART_SPAWN_TRIGGER)
base.RenderSelected(selectedPart);
float posX = SpawnTrigger.x + SpawnPosition.x + Doc.View.CurrentPosition.x;
float posY = SpawnTrigger.y + SpawnPosition.y + Doc.View.CurrentPosition.y;
float halfSize = BLOB_ENEMY_SIZE / 2 + DocumentView.SELECTION_FRAME_OFFSET;
Doc.View.RenderSelectionFrame(posX - halfSize, posY - halsSize, posX + halfSize, posY + halfSize);*/
mSprite
.getSpriteTransform().set(mTransform
);
mSprite
.getSpriteTransform().x += Doc
.View.CurrentPosition.x * mScrollFactor
.x;
mSprite
.getSpriteTransform().y += Doc
.View.CurrentPosition.y * mScrollFactor
.y;
SpriteTransform t
= mSprite
.getSpriteTransform();
Vector2 min
= t
.getAABoxMin();
Vector2 max
= t
.getAABoxMax();
/*float posX = SpawnTrigger.x + SpawnPosition.x + Doc.View.CurrentPosition.x;
float posY = SpawnTrigger.y + SpawnPosition.y + Doc.View.CurrentPosition.y;
float halfSize = BLOB_ENEMY_SIZE / 2 + DocumentView.SELECTION_FRAME_OFFSET;*/
if (forHover
)
Doc
.View.RenderSelectionFrame(min
.x, min
.y, max
.x, max
.y, DocumentView
.SELECTION_FRAME_HOVER_ALPHA);
else
Doc
.View.RenderSelectionFrame(min
.x, min
.y, max
.x, max
.y);
}
public override bool IsInside
(float x,
float y,
out int selectedPart
)
{
selectedPart
= -1;
mSprite
.getSpriteTransform().set(mTransform
);
mSprite
.getSpriteTransform().x += Doc
.View.CurrentPosition.x * mScrollFactor
.x;
mSprite
.getSpriteTransform().y += Doc
.View.CurrentPosition.y * mScrollFactor
.y;
SpriteTransform t
= mSprite
.getSpriteTransform();
if (t
.isInside(x, y
))
return true;
/*Vector2 min = t.getAABoxMin();
Vector2 max = t.getAABoxMax();
if ((x >= min.x) && (y >= min.y) && (x <= max.x) && (y <= max.y))
return true;*/
return false;
}
public override void MoveBy
(float dx,
float dy,
int selectedPart
)
{
mTransform
.x += (dx
/ Doc
.View.ZoomFactor);
mTransform
.y += (dy
/ Doc
.View.ZoomFactor);
}
public override string GetPropertiesType
()
{
return "[BackgroundElement]";
}
public override bool ReadParameter
(Tokenizer t,
string id
)
{
// texture
if (id
.Equals("texture", StringComparison
.OrdinalIgnoreCase))
{
mTextureFile
= t
.readString();
}
// scroll speed
else if (id
.Equals("scrollFactor", StringComparison
.OrdinalIgnoreCase))
{
mScrollFactor
= ParseUtil
.readVector2(t
);
}
// read other parameter types
else if (!parseSpriteTransform
(t, id, mTransform
))
{
// no other parameter type, so check super-class
return base.ReadParameter(t, id
);
}
t
.readToken(";");
return true;
}
}
}