Пример #1
0
    static public void initDatas()
    {
        if (isInitData)
        {
            return;
        }
        // isInitData = true;

        dicControls.Clear();

        string    json;
        ArrayList list;
        int       index;
        int       lens;

        EBAniLayers     layer;
        EBAniParameters parameter;
        EBAniControls   controls;


        // 动画层级数据
        Dictionary <int, EBAniLayers> dicLayers = new Dictionary <int, EBAniLayers> ();

        json = File.ReadAllText(JSON_PATH_Layer);
        list = JSON.DecodeList(json);
        lens = list.Count;
        for (index = 0; index < lens; index++)
        {
            layer = EBAniLayers.parseByMap((Hashtable)list [index]);
            if (layer.unqid > 0)
            {
                dicLayers.Add(layer.unqid, layer);
            }
        }

        // 动画参数数据
        Dictionary <int, EBAniParameters> dicParameters = new Dictionary <int, EBAniParameters> ();

        json = File.ReadAllText(JSON_PATH_Parameters);
        list = JSON.DecodeList(json);
        lens = list.Count;
        for (index = 0; index < lens; index++)
        {
            parameter = EBAniParameters.parseByMap((Hashtable)list [index]);
            if (parameter.unqid > 0)
            {
                dicParameters.Add(parameter.unqid, parameter);
            }
        }

        // 动画状态机数据·
        json = File.ReadAllText(JSON_PATH_States);
        //list = JSON.DecodeList (json);
        Hashtable actMap    = JSON.DecodeMap(json);
        ArrayList actMapKey = new ArrayList(actMap.Keys);

        lens = actMapKey.Count;

        Dictionary <int, List <EBAniState> > dicActState = new Dictionary <int, List <EBAniState> > ();

        for (index = 0; index < lens; index++)
        {
            ArrayList aniStateList = (ArrayList)actMap[actMapKey[index]];
            int       dicKey       = int.Parse(actMapKey[index].ToString());
            dicActState [dicKey] = new List <EBAniState> ();
            for (int i = 0, len = aniStateList.Count; i < len; i++)
            {
                EBAniState state = EBAniState.parseByMap((Hashtable)aniStateList [i]);
                state.DescParams(dicParameters);
                dicActState [dicKey].Add(state);
            }

            //EBAniSate state = EBAniSate.parseByMap ((Hashtable)list [index]);
            //			if (state.unqid > 0) {
            //
            //				state.DescParams (dicParameters);
            //
            //				controls = dicControls [state.ctrlUnqid];
            //				if (controls != null) {
            //					controls.listState.Add (state);
            //				}
            //			}
        }

        // ========= 动画控制器数据  很重要的=========
        json = File.ReadAllText(JSON_PATH_Controls);
        list = JSON.DecodeList(json);
        lens = list.Count;
        for (index = 0; index < lens; index++)
        {
            controls = EBAniControls.parseByMap((Hashtable)list [index]);
            if (controls.unqid > 0)
            {
                foreach (int lunqid in controls.layerUnqids)
                {
                    layer = dicLayers [lunqid];
                    if (layer != null)
                    {
                        controls.listLayers.Add(layer);
                    }
                }

                foreach (int lunqid in controls.parsUnqids)
                {
                    parameter = dicParameters [lunqid];
                    if (parameter != null)
                    {
                        controls.listParameters.Add(parameter);
                    }
                }
                dicControls.Add(controls.unqid, controls);

                controls.listState = dicActState[controls.activeId];
            }
        }
    }