Example #1
0
        public void CreateScript(MapScript OriginalToCopy)
        {
            MapScript NewScript = OriginalToCopy.CopyScript();

            InitScript(NewScript);
            ListMapScript.Add(NewScript);
        }
Example #2
0
        public static List <MapScript> LoadMapScripts(BinaryReader BR,
                                                      Dictionary <string, MapEvent> DicMapEvent, Dictionary <string, MapCondition> DicMapCondition, Dictionary <string, MapTrigger> DicMapTrigger,
                                                      out List <MapEvent> ListMapEvent)
        {
            ListMapEvent = new List <MapEvent>();
            MapScript      NewScript = null;
            int            PosX, PosY;
            MapScriptTypes NewScriptType;

            int ListMapScriptCount         = BR.ReadInt32();
            List <MapScript> ListMapScript = new List <MapScript>(ListMapScriptCount);

            for (int S = 0; S < ListMapScriptCount; S++)
            {
                PosX          = BR.ReadInt32();
                PosY          = BR.ReadInt32();
                NewScriptType = (MapScriptTypes)BR.ReadByte();

                switch (NewScriptType)
                {
                    #region Event

                case MapScriptTypes.Event:
                    NewScript = DicMapEvent[BR.ReadString()].CopyScript();
                    ListMapEvent.Add((MapEvent)NewScript);
                    break;

                    #endregion

                case MapScriptTypes.Condition:
                    NewScript = DicMapCondition[BR.ReadString()].CopyScript();
                    break;

                case MapScriptTypes.Trigger:
                    NewScript = DicMapTrigger[BR.ReadString()].CopyScript();
                    break;
                }

                NewScript.Load(BR);
                int ArrayEventCount;
                //Load the Events
                for (int E = 0; E < (NewScript).ArrayEvents.Count(); E++)
                {
                    ArrayEventCount = BR.ReadInt32();//Number of Scripts linked to the Event.
                    for (int i = 0; i < ArrayEventCount; i++)
                    {
                        (NewScript).ArrayEvents[E].Add(new EventInfo(BR.ReadInt32(), BR.ReadInt32()));
                    }
                }
                ListMapScript.Add(NewScript);

                NewScript.ScriptSize.X = PosX;
                NewScript.ScriptSize.Y = PosY;
            }

            return(ListMapScript);
        }
Example #3
0
        public void Select(System.Drawing.Point e)
        {
            System.Drawing.Rectangle MouseRec = new System.Drawing.Rectangle(e.X + ScriptStartingPos.X, e.Y + ScriptStartingPos.Y, 1, 1);
            MousePosOld = e;

            for (int S = ListMapScript.Count - 1; S >= 0; --S)
            {
                if (MouseRec.IntersectsWith(ListMapScript[S].ScriptSize))
                {
                    OnSelect(ListMapScript[S], false);
                    ActiveScriptIndex = S;
                    return;
                }
                else
                {
                    //Triggers.
                    for (int T = ListMapScript[S].ArrayNameTrigger.Length - 1; T >= 0; --T)
                    {
                        if (MouseRec.X >= ListMapScript[S].ScriptSize.X - 10 && MouseRec.X <= ListMapScript[S].ScriptSize.X - 5 &&
                            MouseRec.Y >= ListMapScript[S].ScriptSize.Y + 19 + T * 12 && MouseRec.Y <= ListMapScript[S].ScriptSize.Y + 24 + T * 12)
                        {
                            ScriptLink           = ListMapScript[S];
                            ScriptLinkIndex      = S;
                            ScriptLinkType       = ScriptLinkTypes.Trigger;
                            ScriptLinkEventIndex = T;
                            ScriptLinkStartPos   = new Point(ListMapScript[S].ScriptSize.X - 7, ListMapScript[S].ScriptSize.Y + 21 + T * 12);
                            return;
                        }
                    }
                    //Events.
                    for (int E = ListMapScript[S].ArrayNameCondition.Length - 1; E >= 0; --E)
                    {
                        if (MouseRec.X >= ListMapScript[S].ScriptSize.X + ListMapScript[S].ScriptSize.Width + 5 &&
                            MouseRec.X <= ListMapScript[S].ScriptSize.X + ListMapScript[S].ScriptSize.Width + 10 &&
                            MouseRec.Y >= ListMapScript[S].ScriptSize.Y + ListMapScript[S].ScriptSize.Height - ListMapScript[S].ArrayNameCondition.Length * 12 + 1 + E * 12 &&
                            MouseRec.Y <= ListMapScript[S].ScriptSize.Y + ListMapScript[S].ScriptSize.Height - ListMapScript[S].ArrayNameCondition.Length * 12 + 6 + E * 12)
                        {
                            ScriptLink           = ListMapScript[S];
                            ScriptLinkIndex      = S;
                            ScriptLinkType       = ScriptLinkTypes.Event;
                            ScriptLinkEventIndex = E;
                            ScriptLinkStartPos   = new Point(ListMapScript[S].ScriptSize.X + ListMapScript[S].ScriptSize.Width + 7, ListMapScript[S].ScriptSize.Y + ListMapScript[S].ScriptSize.Height - ListMapScript[S].ArrayNameCondition.Length * 12 + 3 + E * 12);
                            return;
                        }
                    }
                }
            }
        }
Example #4
0
        public void InitScript(MapScript NewScript)
        {
            RenderTarget2D ScriptBuffer = new RenderTarget2D(GraphicsDevice, NewScript.ScriptSize.Width, NewScript.ScriptSize.Height);

            GraphicsDevice.SetRenderTarget(ScriptBuffer);
            GraphicsDevice.Clear(Color.Transparent);
            g.Begin();

            g.Draw(imgScriptTopLeft, Vector2.Zero, Color.White);
            g.Draw(imgScriptMiddleLeft, new Rectangle(0, imgScriptTopLeft.Height, 1, NewScript.ScriptSize.Height - imgScriptTopMiddle.Height - imgScriptBottomMiddle.Height - 1), Color.White);
            g.Draw(imgScriptBottomLeft, new Vector2(0, NewScript.ScriptSize.Height - imgScriptBottomLeft.Height), Color.White);

            g.Draw(imgScriptTopMiddle, new Rectangle(imgScriptTopLeft.Width, 0, NewScript.ScriptSize.Width - imgScriptTopRight.Width - 1, imgScriptTopMiddle.Height), Color.White);

            g.Draw(imgScriptMiddleMiddle, new Rectangle(imgScriptMiddleLeft.Width,
                                                        imgScriptTopLeft.Height,
                                                        NewScript.ScriptSize.Width - imgScriptMiddleLeft.Width - imgScriptMiddleRight.Width,
                                                        NewScript.ScriptSize.Height - imgScriptTopMiddle.Height - imgScriptBottomMiddle.Height), Color.White);

            g.Draw(imgScriptBottomMiddle, new Rectangle(imgScriptBottomLeft.Width,
                                                        NewScript.ScriptSize.Height - imgScriptBottomMiddle.Height,
                                                        NewScript.ScriptSize.Width - imgScriptBottomLeft.Width - imgScriptBottomRight.Width,
                                                        imgScriptBottomMiddle.Height), Color.White);

            g.Draw(imgScriptTopRight, new Vector2(NewScript.ScriptSize.Width - imgScriptTopRight.Width, 0), Color.White);
            g.Draw(imgScriptMiddleRight, new Rectangle(NewScript.ScriptSize.Width - imgScriptMiddleRight.Width, imgScriptTopRight.Height, 1, NewScript.ScriptSize.Height - imgScriptTopMiddle.Height - imgScriptBottomMiddle.Height), Color.White);
            g.Draw(imgScriptBottomRight, new Vector2(NewScript.ScriptSize.Width - imgScriptBottomRight.Width, NewScript.ScriptSize.Height - imgScriptBottomRight.Height), Color.White);

            g.DrawString(fntScriptName, NewScript.ToString(), Vector2.Zero, Color.Black);

            for (int T = NewScript.ArrayNameTrigger.Length - 1; T >= 0; --T)
            {
                g.DrawString(fntScriptName, NewScript.ArrayNameTrigger[T], new Vector2(0, 15 + T * 12), Color.Black);
            }
            for (int E = NewScript.ArrayNameCondition.Length - 1; E >= 0; --E)
            {
                g.DrawString(fntScriptName, NewScript.ArrayNameCondition[E], new Vector2(
                                 NewScript.ScriptSize.Width - 5 - fntScriptName.MeasureString(NewScript.ArrayNameCondition[E]).X,
                                 NewScript.ScriptSize.Height - NewScript.ArrayNameCondition.Length * 12 - 4 + E * 12), Color.Black);
            }
            g.End();

            NewScript.ScriptTexture = ScriptBuffer;
            GraphicsDevice.SetRenderTarget(null);
        }
Example #5
0
        public void Scripting_MouseUp(System.Drawing.Point e, bool LeftClick, bool RightClick)
        {
            System.Drawing.Rectangle MouseRec = new System.Drawing.Rectangle(e.X + ScriptStartingPos.X, e.Y + ScriptStartingPos.Y, 1, 1);

            #region Action Scripts

            for (int S = ListMapScript.Count - 1; S >= 0; --S)
            {
                if (MouseRec.IntersectsWith(ListMapScript[S].ScriptSize))
                {
                    if (LeftClick)
                    {
                        ActiveScriptIndex = -1;
                        return;
                    }
                    else if (RightClick)
                    {
                        OnSelect(ListMapScript[S], true);
                        return;
                    }
                }

                #region Linking

                else
                {
                    #region Triggers

                    for (int T = ListMapScript[S].ArrayNameTrigger.Length - 1; T >= 0; --T)
                    {
                        if (MouseRec.X >= ListMapScript[S].ScriptSize.X - 10 && MouseRec.X <= ListMapScript[S].ScriptSize.X - 5 &&
                            MouseRec.Y >= ListMapScript[S].ScriptSize.Y + 19 + T * 12 && MouseRec.Y <= ListMapScript[S].ScriptSize.Y + 24 + T * 12)
                        {
                            EventInfo NewEvent = new EventInfo(S, T);
                            if (LeftClick)
                            {
                                if (ScriptLink != null && ScriptLink != ListMapScript[S])
                                {//Event to Trigger.
                                    if (ScriptLinkType == ScriptLinkTypes.Event && !ScriptLink.ArrayEvents[ScriptLinkEventIndex].Contains(NewEvent))
                                    {
                                        ScriptLink.ArrayEvents[ScriptLinkEventIndex].Add(NewEvent);
                                    }
                                    ScriptLink           = null;
                                    ScriptLinkIndex      = -1;
                                    ScriptLinkEventIndex = -1;
                                    ScriptLinkType       = ScriptLinkTypes.None;
                                    return;
                                }
                            }
                            else if (RightClick)
                            {
                                for (int i = ListMapScript.Count - 1; i >= 0; --i)
                                {
                                    for (int E = ListMapScript[i].ArrayEvents.Length - 1; E >= 0; --E)
                                    {
                                        ListMapScript[i].ArrayEvents[0].Remove(NewEvent);
                                    }
                                }
                            }
                        }
                    }

                    #endregion

                    #region Events

                    for (int E = ListMapScript[S].ArrayNameCondition.Length - 1; E >= 0; --E)
                    {
                        if (MouseRec.X >= ListMapScript[S].ScriptSize.X + ListMapScript[S].ScriptSize.Width + 5 &&
                            MouseRec.X <= ListMapScript[S].ScriptSize.X + ListMapScript[S].ScriptSize.Width + 10 &&
                            MouseRec.Y >= ListMapScript[S].ScriptSize.Y + ListMapScript[S].ScriptSize.Height - ListMapScript[S].ArrayNameCondition.Length * 12 + 1 + E * 12 &&
                            MouseRec.Y <= ListMapScript[S].ScriptSize.Y + ListMapScript[S].ScriptSize.Height - ListMapScript[S].ArrayNameCondition.Length * 12 + 6 + E * 12)
                        {
                            if (LeftClick)
                            {
                                if (ScriptLink != null && ScriptLink != ListMapScript[S])
                                {//Trigger to Event.
                                    if (ScriptLinkType == ScriptLinkTypes.Trigger)
                                    {
                                        ListMapScript[S].ArrayEvents[E].Add(new EventInfo(ScriptLinkIndex, ScriptLinkEventIndex));
                                    }
                                    ScriptLink           = null;
                                    ScriptLinkIndex      = -1;
                                    ScriptLinkEventIndex = -1;
                                    ScriptLinkType       = ScriptLinkTypes.None;
                                    return;
                                }
                            }
                            else if (RightClick)
                            {
                                ListMapScript[S].ArrayEvents[E].Clear();
                            }
                            return;
                        }
                    }

                    #endregion
                }

                #endregion
            }

            #endregion

            ScriptLink           = null;
            ScriptLinkIndex      = -1;
            ScriptLinkEventIndex = -1;
            OnSelect(null, false);
            ScriptLinkType    = ScriptLinkTypes.None;
            ActiveScriptIndex = -1;
        }