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 | } |