Ejemplo n.º 1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="str"></param>
 public void SetStruct(HSDStruct str, SubactionGroup subGroup)
 {
     Struct   = str;
     Commands = GetCommands(Struct, subGroup);
     ResetState();
     SetFrame(0);
 }
Ejemplo n.º 2
0
    // Update is called once per frame
    public virtual void Update()
    {
        /*
         * if (sprite_rate != 0) // if it's zero, no need to animate
         * {
         *  int sprite_number = Mathf.FloorToInt(current_frame / sprite_rate);
         *  if (sprite_rate < 0)
         *      sprite_number = Mathf.FloorToInt(current_frame / sprite_rate) - 1;
         *  if (loop)
         *      actor.SendMessage("ChangeSubimageWithLoop", sprite_number,SendMessageOptions.RequireReceiver);
         *  else
         *      actor.SendMessage("ChangeSubimage", sprite_number,SendMessageOptions.RequireReceiver);
         * }
         */
        executeSubGroup(SubactionGroup.BEFORE);
        actor.SendMessage("ChangeSubimage", current_frame);
        executeSubGroup(SubactionGroup.ONFRAME(current_frame));
        executeSubGroup(SubactionGroup.AFTER);

        //Sometimes, we might end up AFTER the last frame. For all intents and purposes, every frame after the last frame is also the last frame
        if (current_frame >= last_frame)
        {
            executeSubGroup(SubactionGroup.LAST);
            if (!isInBuilder)
            {
                if (exit_action != null && exit_action != "")
                {
                    actor.SendMessage("DoAction", exit_action);
                }
            }
        }
    }
Ejemplo n.º 3
0
        public static void EditSubactionData(ref byte[] data, EditSubaction edit, SubactionGroup group)
        {
            for (int i = 0; i < data.Length;)
            {
                var sa = SubactionManager.GetSubaction(data[i], group);

                if (data[i] == 0)
                {
                    break;
                }

                // get parameters
                var p = sa.GetParameters(data, i);

                // make changes
                edit(sa, ref p);

                // recompile
                var test = sa.Compile(p);
                for (int j = 0; j < test.Length; j++)
                {
                    data[i + j] = test[j];
                }

                // advance to next action
                i += sa.ByteSize;
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        public static Subaction GetSubaction(byte code, SubactionGroup group)
        {
            var sa = CustomSubactions.Find(e => e.Code == code && e.IsCustom);

            if (sa == null)
            {
                sa = GetGroup(group).Find(e => e.Code == (code & 0xFC) && !e.IsCustom);
            }

            return(sa);
        }
Ejemplo n.º 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="group"></param>
        /// <returns></returns>
        public static List <Subaction> GetGroup(SubactionGroup group)
        {
            switch (group)
            {
            case SubactionGroup.Item:
                return(ItemSubactions);

            case SubactionGroup.Color:
                return(ColorSubactions);

            default:
                return(FighterSubactions);
            }
        }
    public override void execute()
    {
        actionToModify   = LegacyEditorData.instance.currentAction;
        subGroupToModify = LegacyEditorData.instance.subactionGroup;
        if (subGroupToModify == "Current Frame")
        {
            subGroupToModify = SubactionGroup.ONFRAME(LegacyEditorData.instance.currentFrame);
        }

        previousList = actionToModify.subactionCategories.GetIfKeyExists(subGroupToModify);
        actionToModify.subactionCategories.Set(subGroupToModify, nextList);

        LegacyEditorData.ChangedActionData();
    }
Ejemplo n.º 7
0
 public ConversationAction(ScriptedEvent parentEvent, XElement element) : base(parentEvent, element)
 {
     actionCount++;
     Identifier = actionCount;
     Options    = new List <SubactionGroup>();
     foreach (XElement elem in element.Elements())
     {
         if (elem.Name.LocalName.Equals("option", StringComparison.InvariantCultureIgnoreCase))
         {
             Options.Add(new SubactionGroup(ParentEvent, elem));
         }
         else if (elem.Name.LocalName.Equals("interrupt", StringComparison.InvariantCultureIgnoreCase))
         {
             Interrupted = new SubactionGroup(ParentEvent, elem);
         }
     }
 }
Ejemplo n.º 8
0
 public override void execute()
 {
     actionToAddTo = LegacyEditorData.instance.currentAction;
     groupToAddTo  = LegacyEditorData.instance.subactionGroup;
     Debug.Log("CreateNewSubaction actionToAddTo: " + actionToAddTo);
     Debug.Log("CreateNewSubaction groupToAddTo: " + groupToAddTo);
     //Since we don't want to add THIS subactionData, but a copy of it, we reinstance the scriptable object
     //subDataToAdd = Instantiate(subDataMaster) as SubactionData;
     if (groupToAddTo == "Current Frame")
     {
         groupToAddTo = SubactionGroup.ONFRAME(LegacyEditorData.instance.currentFrame);
         Debug.Log("Current Group: " + groupToAddTo);
     }
     subDataToAdd = subDataMaster.CreateSubactionData();
     actionToAddTo.subactionCategories.GetIfKeyExists(groupToAddTo).Add(subDataToAdd);
     Debug.Log(actionToAddTo.subactionCategories);
     LegacyEditorData.ChangedActionData();
 }
Ejemplo n.º 9
0
    void UpdateCard()
    {
        //If we're updating, set the flags so we don't update multiple times in a row
        lastKnownAction = editor.currentAction;
        lastKnownFrame  = editor.currentFrame;
        lastKnownGroup  = editor.subactionGroup;


        //Get rid of our old list
        foreach (GameObject child in children)
        {
            child.SendMessage("UnregisterListeners");
            NGUITools.Destroy(child);
        }
        children.Clear(); //Empty the list for future use

        //Create all the new buttons
        DynamicAction action   = LegacyEditorData.instance.currentAction;
        string        subGroup = LegacyEditorData.instance.subactionGroup;

        if (subGroup == "Current Frame")
        {
            subGroup = SubactionGroup.ONFRAME(LegacyEditorData.instance.currentFrame);
        }
        if (action != null)
        {
            int index = 0;
            //Create all the new buttons
            foreach (SubactionData subData in action.subactionCategories.GetIfKeyExists(subGroup))
            {
                instantiateButton(subData, index);
                index++;
            }

            //Realign the grid
            grid.Reposition();
            dragPanel.ResetPosition();
        }
    }
Ejemplo n.º 10
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="name"></param>
 /// <returns></returns>
 public static Subaction GetSubaction(string name, SubactionGroup group)
 {
     return(GetGroup(group).Find(e => e.Name == name));
 }
Ejemplo n.º 11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="data"></param>
        private List <Command> GetCommands(HSDStruct str, SubactionGroup subGroup, Dictionary <HSDStruct, List <Command> > structToComman = null)
        {
            if (subGroup != SubactionGroup.Fighter)
            {
                return(new List <Command>());
            }

            if (structToComman == null)
            {
                structToComman = new Dictionary <HSDStruct, List <Command> >();
            }

            if (structToComman.ContainsKey(str))
            {
                return(structToComman[str]);
            }

            var data = str.GetData();

            var Commands = new List <Command>();

            structToComman.Add(str, Commands);

            for (int i = 0; i < data.Length;)
            {
                var sa = SubactionManager.GetSubaction(data[i], subGroup);

                var cmd = new Command();

                foreach (var r in str.References)
                {
                    if (r.Key >= i && r.Key < i + sa.ByteSize)
                    {
                        if (cmd.Reference != null)
                        {
                            throw new NotSupportedException("Multiple References not supported");
                        }
                        else
                        {
                            if (r.Value != str) // prevent self reference
                            {
                                cmd.Reference         = r.Value;
                                cmd.ReferenceCommands = GetCommands(cmd.Reference, subGroup, structToComman);
                            }
                        }
                    }
                }

                var sub = new byte[sa.ByteSize];

                if (i + sub.Length > data.Length)
                {
                    break;
                }

                for (int j = 0; j < sub.Length; j++)
                {
                    sub[j] = data[i + j];
                }

                cmd.Parameters = sa.GetParameters(sub);
                cmd.Action     = sa;
                Commands.Add(cmd);

                i += sa.ByteSize;

                if (sa.Code == 0)
                {
                    break;
                }
            }

            return(Commands);
        }