void DisplayHeader(CGME.Action action, CGME.ActionGroup parent)
        {
            EditorGUILayout.BeginHorizontal();

            if (parent != null)
            {
                EditorGUILayout.LabelField(action.CGType);
            }
            else
            {
                EditorGUILayout.LabelField(action.CGType + " (root)");
            }

            if (action is CGME.ActionGroup && GUILayout.Button("+child " + action.CGType))
            {
                AddChild(action as CGME.ActionGroup, GetAction(action_components[index]));
                //(action as CGME.ActionGroup).AddAction(GetAction (secondary_options[index2]));
            }

            if (parent != null && GUILayout.Button("delete " + action.CGType))
            {
                RemoveChild(parent, action);
                //parent.RemoveAction(action);
            }

            EditorGUILayout.EndHorizontal();
        }
Beispiel #2
0
        void AddChildrenToSerializedNodes(CGME.ActionGroup parent_action, SerialNode parent_node)
        {
            // Create a NODE for each ACTION CHILD and add them to the list
            // save the index of each CHILDREN NODE to the PARENT NODE
            foreach (CGME.Action child in parent_action.Children)
            {
                //parent_node.children_indexes.Add(serial_nodes.Count);
                AddNode(child, parent_node);
            }

            // For every child that can have children (actiongroup),
            // call the funcion again sending its index
            int i = 0;

            foreach (CGME.Action child in parent_action.Children)
            {
                int        child_index = parent_node.children_indexes[i++];
                SerialNode child_node  = serial_nodes[child_index];
                if (child is CGME.ActionGroup)
                {
                    AddChildrenToSerializedNodes(child as CGME.ActionGroup, child_node);
                }
                else if (child is CGME.ActionIfThenElse)
                {
                    //CGME.ActionIfThenElse child_ite =
                    AddChildrenToSerializedNodes(child as CGME.ActionIfThenElse, child_node);
                }
                //ind++;
            }
        }
Beispiel #3
0
 protected override void CleanUp()
 {
     if (CGME_action_root.Cleanup() == true)
     {
         CGME_action_root = null;
         Destroy(gameObject);
     }
 }
        void DisplayAction(CGME.Action action, CGME.ActionGroup parent)
        {
            DisplayHeader(action, parent);

            if (action is CGME.ActionSelect)
            {
                DisplayBody(action    as CGME.ActionSelect);
            }

            else if (action is CGME.ActionTransferObject)
            {
                DisplayBody(action        as CGME.ActionTransferObject);
            }

            else if (action is CGME.ActionDestroyObject)
            {
                DisplayBody(action        as CGME.ActionDestroyObject);
            }

            else if (action is CGME.ActionModifyResource)
            {
                DisplayBody(action        as CGME.ActionModifyResource);
            }

            else if (action is CGME.ActionIfThenElse)
            {
                DisplayBody(action        as CGME.ActionIfThenElse);
            }

            else if (action is CGME.ActionConditionIsValid)
            {
                DisplayBody(action        as CGME.ActionConditionIsValid);
            }

            else if (action is CGME.ActionConditionCompareResource)
            {
                DisplayBody(action        as CGME.ActionConditionCompareResource);
            }

            else if (action is CGME.ActionConditionCompareParent)
            {
                DisplayBody(action        as CGME.ActionConditionCompareParent);
            }

            else if (action is CGME.ActionEvent)
            {
                DisplayBody(action        as CGME.ActionEvent);                //
            }
            DisplayFoot(action, parent);

            // STANDARD
        }
Beispiel #5
0
        CGME.Action InstantiateNodes()
        {
            List <CGME.Action> actions = new List <CGME.Action>();


            //INSTANTIATE
            int i = 0;

            foreach (SerialNode node in serial_nodes)
            {
                CGME.Action act = CGME.CGFactory.CreateCGInstance(node.type_string) as CGME.Action;
                act.Read(node.data);


                actions.Add(act);
            }

            foreach (SerialNode node in serial_nodes)
            {
                if (node.children_indexes.Count > 0)
                {
                    //Debug.Log ("3");

                    if (actions[node.index] is CGME.ActionGroup)
                    {
                        CGME.ActionGroup actiongroup = actions[node.index] as CGME.ActionGroup;

                        foreach (int index in node.children_indexes)
                        {
                            //	Debug.Log ("4");
                            actiongroup.AddAction(actions[index]);
                        }
                    }
                    else if (actions[node.index] is CGME.ActionIfThenElse)
                    {
                        CGME.ActionIfThenElse action_ite = actions[node.index] as CGME.ActionIfThenElse;

                        action_ite.SetIF(actions[node.children_indexes[0]] as CGME.ActionGroup);
                        action_ite.SetTHEN(actions[node.children_indexes[1]] as CGME.ActionGroup);
                        action_ite.SetELSE(actions[node.children_indexes[2]] as CGME.ActionGroup);
                    }
                }
            }


            if (actions.Count > 0)
            {
                return(actions[0]);
            }

            return(null);
        }
        void DisplayFoot(CGME.Action action, CGME.ActionGroup parent)
        {
            if (action is CGME.ActionGroup)
            {
                CGME.ActionGroup group = (CGME.ActionGroup)action;

                EditorGUI.indentLevel++;
                {
                    for (int i = 0; i < group.Actions_Size; i++)
                    {
                        DisplayAction(group.GetAction(i), group);
                    }
                }
                EditorGUI.indentLevel--;
            }
        }
Beispiel #7
0
        protected void Register(Game game)
        {
            RegisterResources();

            game.CGME_Game.AddPhase(CGME_phase);
            manager = FindObjectOfType <GameManager>();

//			for (int i = 0; i<transform.childCount; i++){
//				transform.GetChild(i).SendMessage("Register", this, SendMessageOptions.DontRequireReceiver);
//			}
            foreach (int action_index in action_sequence)
            {
                CGME.ActionGroup new_action = new CGME.ActionGroup();

                //if (manager.Actions[action_index].CGME_ActionRoot == null) Debug.Log ("Action null");

                new_action.CopyFrom(manager.CGME_Lib.actionLibrary[action_index]);
                CGME_phase.AddAction(new_action);
            }

            SetListener();
        }
 void RemoveChild(CGME.ActionGroup parent, CGME.Action child)
 {
     parent.RemoveAction(child);
     Target.SetSerialize(true);
 }
 void AddChild(CGME.ActionGroup parent, CGME.Action child)
 {
     parent.AddAction(child);
     Target.SetSerialize(true);
 }
Beispiel #10
0
 public override void SetObject(CGME.CGObject cgobj)
 {
     CGME_action_root = (CGME.ActionGroup)cgobj;
 }
Beispiel #11
0
 void ISerializationCallbackReceiver.OnAfterDeserialize()
 {
     CGME_action_root = InstantiateNodes() as CGME.ActionGroup;
 }
Beispiel #12
0
 //ISerializationCallbackReceiver.
 public void OnAfterDeserialize()
 {
     CGME_action_root = InstantiateNodes() as CGME.ActionGroup;
 }