Subversion Repositories AndroidProjects

Rev

Rev 1481 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1461 chris 1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Text;
5
using System.Threading.Tasks;
6
using System.Windows.Forms;
1481 chris 7
using System.IO;
1461 chris 8
 
9
using BurutaruEditor.file;
10
using BurutaruEditor.file.elements;
11
using BurutaruEditor.file.enemies;
12
 
1481 chris 13
using BauzoidNET.graphics.sprite;
14
 
1461 chris 15
namespace BurutaruEditor.interaction
16
{
17
    public class CreateObject : Interaction
18
    {
1481 chris 19
        private bool mIsMouseInside = false;
1461 chris 20
 
1481 chris 21
        private string mFileName = null;
22
 
23
        private Sprite mPreviewSprite = null;
24
        private SpriteInstance mPreviewSpriteInstance = null;
25
 
26
        private float mLastX = 0;
27
        private float mLastY = 0;
1461 chris 28
 
29
        public CreateObject(MainForm owner)
30
            : base(owner)
31
        {
32
 
33
        }
34
 
1481 chris 35
        public bool Load(string filename)
36
        {
37
            Destroy();
38
 
39
            string atlasFile = Path.ChangeExtension(filename, "txt");
40
 
41
            if (!File.Exists(atlasFile))
42
                atlasFile = null;
43
 
44
            mPreviewSprite = new Sprite(MainForm.App.getGraphics(), filename, atlasFile);
45
            mPreviewSprite.init();
46
 
47
            mPreviewSpriteInstance = mPreviewSprite.createSpriteInstanceForAll();
48
 
1483 chris 49
            mFileName = filename;
50
 
1481 chris 51
            return true;
52
        }
53
 
54
        public void Destroy()
55
        {
56
            if (mPreviewSprite != null)
57
            {
58
                mPreviewSprite.dispose();
59
                mPreviewSprite = null;
60
            }
61
            mPreviewSpriteInstance = null;
62
        }
63
 
1461 chris 64
        public override void MouseDown(MouseEventArgs e)
65
        {
66
            if (e.Button == MouseButtons.Left)
67
            {
68
                if (Owner.CurrentObjectMode == MainForm.ObjectMode.CHECKPOINTS)
69
                {
70
                    // create Checkpoint
71
                    Owner.Doc.CreateCheckPoint(e.X, e.Y);
72
                }
1478 chris 73
                else if (Owner.CurrentObjectMode == MainForm.ObjectMode.SPAWNERS)
74
                {
75
                    Owner.Doc.CreateEnemySpawner(e.X, e.Y);
76
                }
77
                else if (Owner.CurrentObjectMode == MainForm.ObjectMode.ELEMENTS)
78
                {
1481 chris 79
                    if (mFileName != null)
80
                        Owner.Doc.CreateLevelElement(e.X, e.Y, mFileName);
1478 chris 81
                }
1461 chris 82
            }
1481 chris 83
 
84
            mLastX = e.X;
85
            mLastY = e.Y;
1461 chris 86
        }
87
 
88
        public override void MouseMove(MouseEventArgs e)
89
        {
1480 chris 90
            Owner.GlView.Cursor = Cursors.Cross;
1481 chris 91
 
92
            mLastX = e.X;
93
            mLastY = e.Y;
1461 chris 94
        }
95
 
96
        public override void MouseUp(MouseEventArgs e)
97
        {
98
        }
99
 
1481 chris 100
        public override void MouseEnter(EventArgs e)
101
        {
102
            mIsMouseInside = true;
103
        }
104
 
105
        public override void MouseLeave(EventArgs e)
106
        {
107
            mIsMouseInside = false;
1483 chris 108
            Owner.GlView.Refresh();
1481 chris 109
        }
110
 
1463 chris 111
        public override void Render()
112
        {
1483 chris 113
            if ((mIsMouseInside) && (mPreviewSpriteInstance != null))
1481 chris 114
            {
115
                float tx, ty;
116
                Owner.View.TransformToWorldSpace(out tx, out ty, mLastX, mLastY);
117
 
118
                mPreviewSpriteInstance.transform.x = tx;
119
                mPreviewSpriteInstance.transform.y = ty;
120
 
121
                mPreviewSpriteInstance.transform.w = mPreviewSpriteInstance.getSpriteRegion().getWidth() * mPreviewSpriteInstance.getSprite().getTextureWidth();
122
                mPreviewSpriteInstance.transform.h = mPreviewSpriteInstance.getSpriteRegion().getHeight() * mPreviewSpriteInstance.getSprite().getTextureHeight();
123
 
124
                mPreviewSpriteInstance.centerPivot();
125
 
126
                mPreviewSpriteInstance.render();
127
            }
1463 chris 128
        }
129
 
1461 chris 130
    }
131
}