Exemple #1
0
    public static SMGroupedSceneConfigurationOperation Build(SMGroupedSceneConfiguration configuration)
    {
        SMGroupedSceneConfigurationOperation result = new SMGroupedSceneConfigurationOperation();

        result.firstScreen           = configuration.firstScreen;
        result.firstScreenAfterLevel = configuration.firstScreenAfterLevel;
        result.actionAfterGroup      = configuration.actionAfterGroup;
        result.firstScreenAfterGroup = configuration.firstScreenAfterGroup;
        result.screens.AddRange(configuration.screens);

        int numberOfGroups = configuration.groups.Length;

        for (int i = 0; i < numberOfGroups; i++)
        {
            string group = configuration.groups[i];
            result.groups.Add(group);

            int startOfGroup = configuration.groupOffset[i];
            int endOfGroup   = (i + 1 == numberOfGroups) /* last group ?*/ ? configuration.levels.Length : configuration.groupOffset[i + 1];
            int length       = endOfGroup - startOfGroup;

            string[] temp = new string[length];
            Array.Copy(configuration.levels, startOfGroup, temp, 0, length);
            result.levels.Add(group, new List <string>(temp));
        }

        return(result);
    }
Exemple #2
0
    public Adapter_GroupedScene(SMGroupedSceneConfiguration configuration)
    {
        m_Configuration = configuration;

        for (int i = 0; i < configuration.groups.Length; i++)
        {
            int    groupOffset = i;
            string group       = Groups[i];

            int start = configuration.groupOffset[groupOffset];
            int end   = (groupOffset + 1 == Groups.Length)
                ? Levels.Length
                : configuration.groupOffset[groupOffset + 1];
            int len = end - start;

            string[] result = new string[len];
            Array.Copy(Levels, start, result, 0, len);
            groupK_LevelsV[group] = result;

            foreach (var lvl in result)
            {
                levelNameK_GuropNameV[lvl] = group;
            }
        }
    }
Exemple #3
0
    public void Apply(SMGroupedSceneConfiguration configuration)
    {
        configuration.screens = screens.ToArray();
        configuration.groups  = groups.ToArray();

        List <int>    groupOffsets = new List <int>();
        List <string> allLevels    = new List <string>();

        foreach (string group in groups)
        {
            groupOffsets.Add(allLevels.Count);
            allLevels.AddRange(levels[group]);
        }

        configuration.groupOffset = groupOffsets.ToArray();
        configuration.levels      = allLevels.ToArray();

        if (firstScreen != null && !screens.Contains(firstScreen))
        {
            firstScreen = null;
        }
        configuration.firstScreen = firstScreen;

        if (firstScreenAfterLevel != null && !screens.Contains(firstScreenAfterLevel))
        {
            firstScreenAfterLevel = null;
        }
        configuration.firstScreenAfterLevel = firstScreenAfterLevel;

        if (actionAfterGroup == WorkflowActionEnum.LoadNextLevel)
        {
            firstScreenAfterGroup = null;
        }
        configuration.actionAfterGroup = actionAfterGroup;

        if (firstScreenAfterGroup != null && !screens.Contains(firstScreenAfterGroup))
        {
            firstScreenAfterGroup = null;
        }
        configuration.firstScreenAfterGroup = firstScreenAfterGroup;
    }
Exemple #4
0
    public SMGroupedSceneConfigurationAdapter(SMGroupedSceneConfiguration configuration)
    {
        this.configuration = configuration;

        for (int i = 0; i < configuration.groups.Length; i++)
        {
            var groupOffset = i;

            var group = Groups[i];

            var start = configuration.groupOffset[groupOffset];
            var end   = (groupOffset + 1 == Groups.Length) /* last group ?*/ ? Levels.Length : configuration.groupOffset[groupOffset + 1];
            var len   = end - start;

            var result = new string[len];
            Array.Copy(Levels, start, result, 0, len);
            levelsInGroup[group] = result;

            foreach (var lvl in result)
            {
                groupOfLevel[lvl] = group;
            }
        }
    }