Subversion Repositories AndroidProjects

Rev

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
}