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); }
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; } } }
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; }
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; } } }