Subversion Repositories AndroidProjects

Rev

Rev 1548 | Go to most recent revision | 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
        {
1548 chris 95
            tw.WriteLine("\tposition " + Position.x.ToString("F") + ", " + Position.y.ToString("F") + ";");
1493 chris 96
            tw.WriteLine("\tfreeScroll " + FreeScroll.x + ", " + FreeScroll.y + ";");
97
            tw.WriteLine("\tcontinueCondition \"" + ContinueCondition + "\";");
98
            tw.WriteLine("\tscrollSpeed " + ScrollSpeed + ";");
1588 chris 99
            tw.WriteLine("\tstarFieldStatus " + (int)StarFieldStatus + ";");
100
            tw.WriteLine("\tstarFieldStatusSwitchTime " + StarFieldStatusSwitchTime + ";");
1493 chris 101
        }
102
 
1441 chris 103
        public override bool ReadParameter(Tokenizer t, string id)
104
        {
1423 chris 105
            if (id.Equals("position", StringComparison.OrdinalIgnoreCase))
106
            {
107
                Position = ParseUtil.readVector2(t);
108
            }
109
            else if (id.Equals("freeScroll", StringComparison.OrdinalIgnoreCase))
110
            {
111
                FreeScroll = ParseUtil.readVector2(t);
112
            }
113
            else if (id.Equals("continueCondition", StringComparison.OrdinalIgnoreCase))
114
            {
115
                ContinueCondition = t.readString();
116
            }
117
            else if (id.Equals("scrollSpeed", StringComparison.OrdinalIgnoreCase))
118
            {
119
                ScrollSpeed = t.readNumber();
120
            }
1588 chris 121
            else if (id.Equals("starFieldStatus", StringComparison.OrdinalIgnoreCase))
122
            {
123
                int status = (int)t.readNumber();
124
                StarFieldStatus = (StarFieldControlStatus)status;
125
            }
126
            else if (id.Equals("starFieldStatusSwitchTime", StringComparison.OrdinalIgnoreCase))
127
            {
128
                StarFieldStatusSwitchTime = t.readNumber();
129
            }
1423 chris 130
            else
131
            {
132
                return base.ReadParameter(t, id);
133
            }
134
 
135
            t.readToken(";");
136
            return true;
137
        }
138
 
139
 
140
    }
141
}