Example #1
0
    private static void ParseDataToContainer(AutoActionContainer container, JsonData content)
    {
        for (int i = 0; i < content.Count; i++)
        {
            string   key  = content[i].TryGetString("name");
            JsonData data = content[i]["data"];

            AutoAction action = null;
            switch (key)
            {
            case "Container":
                action = Parse(data);
                break;

            case "WaitScene":
                string waitSceneName = data.TryGetString("scene_name");
                action = new AutoWaitScene(waitSceneName);
                break;

            case "WaitObjectAppear":
                string objectAppear = data.TryGetString("object_name");
                action = new AutoWaitObjectAppear(objectAppear);
                break;

            case "WaitObjectDisappear":
                string objectDisappear = data.TryGetString("object_name");
                action = new AutoWaitObjectAppear(objectDisappear);
                break;

            case "WaitComponentAppear":
                string componentAppear = data.TryGetString("component_name");
                action = new AutoWaitComponentAppear(Type.GetType(componentAppear));
                break;

            case "WaitComponentDisappear":
                string componentDisappear = data.TryGetString("component_name");
                action = new AutoWaitComponentDisappear(Type.GetType(componentDisappear));
                break;

            case "LabelTextAppear":
                string labelObjectName = data.TryGetString("object_name");
                string textContent     = data.TryGetString("content");
                action = new AutoLabelTextAppear(labelObjectName, textContent);
                break;

            case "Timer":
                string time = data.TryGetString("time_length");
                action = new AutoTimer(float.Parse(time));
                break;

            case "WaitButtonAccessible":
                string buttonName = data.TryGetString("button_name");
                action = new AutoWaitButtonAccessiable(buttonName);
                break;

            case "Click":
                float x = float.Parse(data.TryGetString("pos_x"));
                float y = float.Parse(data.TryGetString("pos_y"));
                float z = float.Parse(data.TryGetString("pos_z"));
                action = new AutoClick(new UnityEngine.Vector3(x, y, z));
                break;

            case "PressUI":
                string uiName = data.TryGetString("ui_name");
                action = new AutoPressUI(uiName);
                break;

            case "LoadScene":
                string loadSceneName = data.TryGetString("scene_name");
                action = new AutoLoadScene(loadSceneName);
                break;
            }

            if (action != null)
            {
                container.AddAction(action);
            }
        }
    }
    private void OnGUI()
    {
        if (GUI.Button(new Rect(50, 50, 50, 50), "test"))
        {
            AutoActionContainer container = new AutoActionContainer();

            AutoLoadScene loadScene = new AutoLoadScene("test");

            AutoClick click = new AutoClick(new Vector3(10, 20, 30));

            AutoTimer timer = new AutoTimer(5);

            AutoPressUI pressUI = new AutoPressUI("bg");

            container.AddAction(loadScene);

            container.AddAction(click);

            container.AddAction(timer);

            container.AddAction(pressUI);

            AutoActionContainer container2 = new AutoActionContainer();

            AutoWaitObjectAppear objectAppear = new AutoWaitObjectAppear("page");

            AutoWaitObjectAppear objectDisappear = new AutoWaitObjectAppear("pageDis");

            AutoWaitComponentAppear componentAppear = new AutoWaitComponentAppear(typeof(Image));

            AutoWaitComponentDisappear componentDisappear = new AutoWaitComponentDisappear(typeof(Button));

            AutoLabelTextAppear labelText = new AutoLabelTextAppear("label", "hello world");

            container2.AddAction(container);

            container2.AddAction(objectAppear);

            container2.AddAction(labelText);

            container2.AddAction(objectDisappear);

            container2.AddAction(componentAppear);

            container2.AddAction(componentDisappear);

            string json = AutoActionJsonWriter.Write(container2);
            Debug.Log("json is:" + json);

            JsonData data = JsonMapper.ToObject(json);

            AutoActionContainer newContainer = AutoActionJsonParser.Parse(data) as AutoActionContainer;

            foreach (AutoAction action in newContainer.ActionList)
            {
                Debug.Log(action.GetType().Name);
                if (action.GetType().Name == "AutoActionContainer")
                {
                    foreach (AutoAction childAction in (action as AutoActionContainer).ActionList)
                    {
                        Debug.Log(childAction.GetType().Name);
                    }
                }
            }
        }
    }