Rev 1823 | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 1676 | 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.IO; |
||
| 7 | |||
| 8 | using BurutaruEditor.file; |
||
| 9 | |||
| 10 | using BauzoidNET.parser; |
||
| 1822 | chris | 11 | using BauzoidNET.math; |
| 12 | using BurutaruEditor.view; |
||
| 13 | using BauzoidNET.graphics.sprite; |
||
| 1676 | chris | 14 | |
| 15 | namespace BurutaruEditor.file.conditions |
||
| 16 | { |
||
| 17 | public class BaseCondition: LevelObject |
||
| 18 | { |
||
| 1823 | chris | 19 | public const float CONDITION_SIZE = 32; |
| 1822 | chris | 20 | |
| 1823 | chris | 21 | public Vector2 Position { get { return mPosition; } } |
| 22 | |||
| 1822 | chris | 23 | private Vector2 mPosition = new Vector2(); |
| 24 | |||
| 1676 | chris | 25 | public BaseCondition(Document doc, string name) |
| 26 | : base(doc, name) |
||
| 27 | { |
||
| 28 | } |
||
| 29 | |||
| 30 | public override void WriteData(TextWriter tw) |
||
| 31 | { |
||
| 1824 | chris | 32 | LevelUtil.WriteProperty(tw, "position", Position, 1); |
| 1676 | chris | 33 | /* |
| 34 | LevelUtil.WriteProperty(tw, "position", Position, 1); |
||
| 35 | LevelUtil.WriteProperty(tw, "freeScroll", FreeScroll, 1); |
||
| 36 | LevelUtil.WriteProperty(tw, "continueCondition", ContinueCondition, 1); |
||
| 37 | LevelUtil.WriteProperty(tw, "scrollSpeed", ScrollSpeed, 1); |
||
| 38 | LevelUtil.WriteProperty(tw, "starFieldStatus", (int)StarFieldStatus, 1); |
||
| 39 | LevelUtil.WriteProperty(tw, "starFieldStatusSwitchTime", StarFieldStatusSwitchTime, 1);*/ |
||
| 40 | } |
||
| 41 | |||
| 42 | public override void WriteData(Serializer s) |
||
| 43 | { |
||
| 1824 | chris | 44 | s.Write("position"); s.Write(Position); |
| 1676 | chris | 45 | /*s.Write("position"); s.Write(Position); |
| 46 | s.Write("freeScroll"); s.Write(FreeScroll); |
||
| 47 | s.Write("continueCondition"); s.Write(ContinueCondition); |
||
| 48 | s.Write("scrollSpeed"); s.Write(ScrollSpeed); |
||
| 49 | s.Write("starFieldStatus"); s.Write((int)StarFieldStatus); |
||
| 50 | s.Write("starFieldStatusSwitchTime"); s.Write(StarFieldStatusSwitchTime);*/ |
||
| 51 | } |
||
| 52 | |||
| 53 | public override bool ReadParameter(Tokenizer t, string id) |
||
| 54 | { |
||
| 1824 | chris | 55 | if (id.Equals("position", StringComparison.OrdinalIgnoreCase)) |
| 1676 | chris | 56 | { |
| 1824 | chris | 57 | mPosition = ParseUtil.readVector2(t); |
| 1676 | chris | 58 | } |
| 1824 | chris | 59 | else |
| 1676 | chris | 60 | { |
| 61 | return base.ReadParameter(t, id); |
||
| 62 | } |
||
| 63 | |||
| 64 | t.readToken(";"); |
||
| 65 | return true; |
||
| 66 | } |
||
| 67 | |||
| 1822 | chris | 68 | public virtual void Render() |
| 69 | { |
||
| 70 | SpriteTransform t = DocumentView.Resources.ScriptingSprite.getSpriteTransform(); |
||
| 1823 | chris | 71 | t.x = Position.x + Doc.View.CurrentPosition.x; |
| 72 | t.y = Position.y + Doc.View.CurrentPosition.y; |
||
| 1822 | chris | 73 | t.w = CONDITION_SIZE; |
| 74 | t.h = CONDITION_SIZE; |
||
| 75 | t.centerPivot(); |
||
| 76 | DocumentView.Resources.ScriptingSprite.render(); |
||
| 1823 | chris | 77 | |
| 78 | float w = MainForm.App.getGraphics().getFont().getTextWidth(this.Name, Document.TEXT_SCALE); |
||
| 79 | MainForm.App.getGraphics().getFont().drawTextDirect(this.Name, t.x - w / 2, t.y + CONDITION_SIZE / 2, Document.TEXT_COLOR, Document.TEXT_SCALE); |
||
| 1822 | chris | 80 | } |
| 81 | |||
| 1676 | chris | 82 | public override void RenderSelected(int selectedPart, bool forHover) |
| 83 | { |
||
| 1823 | chris | 84 | float triggerX = Position.x + Doc.View.CurrentPosition.x; |
| 85 | float triggerY = Position.y + Doc.View.CurrentPosition.y; |
||
| 86 | |||
| 87 | float halfSize = (CONDITION_SIZE / 2 + DocumentView.SELECTION_FRAME_OFFSET); |
||
| 88 | |||
| 89 | if (forHover) |
||
| 90 | Doc.View.RenderSelectionFrame(triggerX - halfSize, triggerY - halfSize, triggerX + halfSize, triggerY + halfSize, DocumentView.SELECTION_FRAME_HOVER_ALPHA); |
||
| 91 | else |
||
| 92 | Doc.View.RenderSelectionFrame(triggerX - halfSize, triggerY - halfSize, triggerX + halfSize, triggerY + halfSize); |
||
| 1676 | chris | 93 | } |
| 94 | |||
| 95 | public override bool IsInside(float x, float y, out int selectedPart) |
||
| 96 | { |
||
| 97 | selectedPart = -1; |
||
| 1823 | chris | 98 | float px = Position.x + Doc.View.CurrentPosition.x; |
| 99 | float py = Position.y + Doc.View.CurrentPosition.y; |
||
| 1822 | chris | 100 | |
| 101 | if ((Math.Abs(px - x) <= (CONDITION_SIZE / 2)) && (Math.Abs(py - y) < (CONDITION_SIZE / 2))) |
||
| 102 | { |
||
| 103 | return true; |
||
| 104 | } |
||
| 105 | |||
| 1676 | chris | 106 | return false; |
| 107 | } |
||
| 108 | |||
| 1822 | chris | 109 | public override void MoveBy(float dx, float dy, int selectedPart) |
| 1676 | chris | 110 | { |
| 1823 | chris | 111 | Position.x += (dx / Doc.View.ZoomFactor); |
| 112 | Position.y += (dy / Doc.View.ZoomFactor); |
||
| 1676 | chris | 113 | } |
| 1824 | chris | 114 | |
| 115 | public static BaseCondition createCondition(Document doc, string condType, string condName) |
||
| 116 | { |
||
| 117 | if (condType.Equals("EnemyDestroyCondition")) |
||
| 118 | { |
||
| 119 | return new EnemyDestroyCondition(doc, condName); |
||
| 120 | } |
||
| 121 | |||
| 122 | return null; |
||
| 123 | } |
||
| 1676 | chris | 124 | } |
| 125 | } |