Subversion Repositories AndroidProjects

Rev

Rev 1588 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1423 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.ComponentModel;
1493 chris 7
using System.IO;
1423 chris 8
 
9
using BauzoidNET.math;
10
using BauzoidNET.parser;
11
 
1448 chris 12
using BurutaruEditor.view;
13
 
1423 chris 14
namespace BurutaruEditor.file
15
{
16
    public class CheckPoint : LevelObject
17
    {
1448 chris 18
        public const float INTERACTION_SIZE = DocumentView.CHECKPOINT_SIZE;
1423 chris 19
 
1588 chris 20
        //=================================================================================================================================
21
 
22
        public enum StarFieldControlStatus
23
        {
24
            DISABLED,
25
            NORMAL,
26
            WARP,
27
        }
28
 
29
        //=================================================================================================================================
1423 chris 30
        [TypeConverter(typeof(ExpandableObjectConverter))]
1477 chris 31
        [Category("Basic Parameters")]
1423 chris 32
        public Vector2 Position { get; set; }
33
 
34
        [TypeConverter(typeof(ExpandableObjectConverter))]
1477 chris 35
        [Category("Basic Parameters")]
1423 chris 36
        public Vector2 FreeScroll { get; set; }
37
 
1477 chris 38
        [Category("Basic Parameters")]
1423 chris 39
        public float ScrollSpeed { get; set; }
40
 
1477 chris 41
        [Category("Conditions")]
1423 chris 42
        public string ContinueCondition { get; set; }
43
 
1588 chris 44
        [Category("Basic Parameters")]
45
        public StarFieldControlStatus StarFieldStatus { get; set; }
1423 chris 46
 
1588 chris 47
        [Category("Basic Parameters")]
48
        public float StarFieldStatusSwitchTime { get; set; }
49
 
50
        //=================================================================================================================================
1423 chris 51
        public CheckPoint(Document doc, string name)
52
            : base(doc, name)
53
        {
1461 chris 54
            Position = new Vector2();
55
            FreeScroll = new Vector2();
56
            ScrollSpeed = 10;
57
            ContinueCondition = "";
1588 chris 58
            StarFieldStatus = StarFieldControlStatus.DISABLED;
59
            StarFieldStatusSwitchTime = 0.0f;
1423 chris 60
        }
61
 
1463 chris 62
        public override void RenderSelected(int selectedPart, bool forHover = false)
1460 chris 63
        {
64
            float posX = Position.x + Document.VIRTUAL_WIDTH / 2 + Doc.View.CurrentPosition.x;
65
            float posY = Position.y + Document.VIRTUAL_HEIGHT / 2 + Doc.View.CurrentPosition.y;
66
            float halfSize = INTERACTION_SIZE / 2 + DocumentView.SELECTION_FRAME_OFFSET;
67
 
1463 chris 68
            if (forHover)
69
                Doc.View.RenderSelectionFrame(posX - halfSize, posY - halfSize, posX + halfSize, posY + halfSize, DocumentView.SELECTION_FRAME_HOVER_ALPHA);
70
            else
71
                Doc.View.RenderSelectionFrame(posX - halfSize, posY - halfSize, posX + halfSize, posY + halfSize);
1460 chris 72
        }
73
 
1459 chris 74
        public override bool IsInside(float x, float y, out int selectedPart)
1423 chris 75
        {
1459 chris 76
            selectedPart = -1;
1441 chris 77
            if ((Math.Abs(x - Position.x) <= INTERACTION_SIZE) && (Math.Abs(y - Position.y) <= INTERACTION_SIZE))
78
                return true;
79
            return false;
80
        }
81
 
1459 chris 82
        public override void MoveBy(float dx, float dy, int selectedPart)
1441 chris 83
        {
84
            Position.x += (dx / Doc.View.ZoomFactor);
85
            Position.y += (dy / Doc.View.ZoomFactor);
86
        }
87
 
1477 chris 88
        public override string GetPropertiesType()
89
        {
1493 chris 90
            return "CheckPoint";
1477 chris 91
        }
92
 
1493 chris 93
        public override void WriteData(TextWriter tw)
94
        {
1607 chris 95
            LevelUtil.WriteProperty(tw, "position", Position, 1);
96
            LevelUtil.WriteProperty(tw, "freeScroll", FreeScroll, 1);
97
            LevelUtil.WriteProperty(tw, "continueCondition", ContinueCondition, 1);
98
            LevelUtil.WriteProperty(tw, "scrollSpeed", ScrollSpeed, 1);
99
            LevelUtil.WriteProperty(tw, "starFieldStatus", (int)StarFieldStatus, 1);
100
            LevelUtil.WriteProperty(tw, "starFieldStatusSwitchTime", StarFieldStatusSwitchTime, 1);
101
 
102
            /*tw.WriteLine("\tposition " + Position.x.ToString("F") + ", " + Position.y.ToString("F") + ";");
1493 chris 103
            tw.WriteLine("\tfreeScroll " + FreeScroll.x + ", " + FreeScroll.y + ";");
104
            tw.WriteLine("\tcontinueCondition \"" + ContinueCondition + "\";");
105
            tw.WriteLine("\tscrollSpeed " + ScrollSpeed + ";");
1588 chris 106
            tw.WriteLine("\tstarFieldStatus " + (int)StarFieldStatus + ";");
1607 chris 107
            tw.WriteLine("\tstarFieldStatusSwitchTime " + StarFieldStatusSwitchTime + ";");*/
1493 chris 108
        }
109
 
1607 chris 110
        public override void WriteData(Serializer s)
111
        {
112
            s.Write("position"); s.Write(Position);
113
            s.Write("freeScroll"); s.Write(FreeScroll);
114
            s.Write("continueCondition"); s.Write(ContinueCondition);
115
            s.Write("scrollSpeed"); s.Write(ScrollSpeed);
116
            s.Write("starFieldStatus"); s.Write((int)StarFieldStatus);
117
            s.Write("starFieldStatusSwitchTime"); s.Write(StarFieldStatusSwitchTime);            
118
        }
119
 
1441 chris 120
        public override bool ReadParameter(Tokenizer t, string id)
121
        {
1423 chris 122
            if (id.Equals("position", StringComparison.OrdinalIgnoreCase))
123
            {
124
                Position = ParseUtil.readVector2(t);
125
            }
126
            else if (id.Equals("freeScroll", StringComparison.OrdinalIgnoreCase))
127
            {
128
                FreeScroll = ParseUtil.readVector2(t);
129
            }
130
            else if (id.Equals("continueCondition", StringComparison.OrdinalIgnoreCase))
131
            {
132
                ContinueCondition = t.readString();
133
            }
134
            else if (id.Equals("scrollSpeed", StringComparison.OrdinalIgnoreCase))
135
            {
136
                ScrollSpeed = t.readNumber();
137
            }
1588 chris 138
            else if (id.Equals("starFieldStatus", StringComparison.OrdinalIgnoreCase))
139
            {
140
                int status = (int)t.readNumber();
141
                StarFieldStatus = (StarFieldControlStatus)status;
142
            }
143
            else if (id.Equals("starFieldStatusSwitchTime", StringComparison.OrdinalIgnoreCase))
144
            {
145
                StarFieldStatusSwitchTime = t.readNumber();
146
            }
1423 chris 147
            else
148
            {
149
                return base.ReadParameter(t, id);
150
            }
151
 
152
            t.readToken(";");
153
            return true;
154
        }
155
 
156
 
157
    }
158
}