private void UpdateViewFrameSounds(IList <AudioClip> allAudio, ViewFolder views) { foreach (View view in views.Views) { foreach (ViewLoop loop in view.Loops) { foreach (ViewFrame frame in loop.Frames) { if (frame.Sound > 0) { AudioClip clip = _agsEditor.CurrentGame.FindAudioClipForOldSoundNumber(allAudio, frame.Sound); if (clip != null) { frame.Sound = clip.Index; } else { frame.Sound = 0; } } } } } foreach (ViewFolder folder in views.SubFolders) { UpdateViewFrameSounds(allAudio, folder); } }
/// <summary> /// Returns collection of routes created by strategy. /// </summary> public virtual IEnumerable <RouteInfo> GetRoutes() { var routes = new List <RouteInfo>(); var files = ViewFolder.GetFiles($"*{MarkupFile.ViewFileExtension}", SearchOption.AllDirectories).ToList(); var charactersCountToRemove = (ViewFolder.FullName + (ViewFolder.FullName.EndsWith("/") ? "" : "/")).Length; var defaultFound = false; var defaultDocumentNameIndex = -1; files.ForEach(f => { var virtualPath = f.FullName.Remove(0, charactersCountToRemove).Replace("\\", "/"); var url = virtualPath.Remove(virtualPath.Length - MarkupFile.ViewFileExtension.Length, MarkupFile.ViewFileExtension.Length); var name = url.Replace("/", "_"); routes.Add(new RouteInfo() { RouteName = name, RouteUrl = url, VirtualPath = Combine(VirtualViewsFolderPath, virtualPath) }); //determine default route if (!defaultFound && TryDetermineDefaultRoute) { //get index of matching default document var defaultDocument = Enumerable.Range(0, OrderedDefaultStartupDocuments.Count) .Where( i => string.Equals(OrderedDefaultStartupDocuments[i], name, StringComparison.OrdinalIgnoreCase)) .Select(i => (int?)i) .FirstOrDefault(); if (defaultDocument != null) { // check priority if (defaultDocumentNameIndex == -1 || defaultDocumentNameIndex > (defaultDocument ?? 0)) { var defaultRoute = CopyRouteInfo(routes[routes.Count - 1]); defaultRoute.RouteUrl = ""; defaultRoute.RouteName = DefaultRouteName; if (defaultDocumentNameIndex != -1) { routes.Remove(routes.Find(s => s.RouteName == DefaultRouteName)); } routes.Add(defaultRoute); defaultDocumentNameIndex = defaultDocument ?? 0; } if (defaultDocument == 0) { defaultFound = true; } } } }); return(routes); }
private void AppendViewsToHeader(StringBuilder sb, ViewFolder viewFolder) { foreach (AGS.Types.View view in viewFolder.Views) { if (view.Name.Length > 0) { sb.AppendLine("#define " + view.Name.ToUpper() + " " + view.ID); } } foreach (ViewFolder subFolder in viewFolder.SubFolders) { AppendViewsToHeader(sb, subFolder); } }
private void AddFolderToTree(ViewFolder folder, TreeNodeCollection parentNodeList) { foreach (ViewFolder subFolder in folder.SubFolders) { TreeNode newNode = parentNodeList.Add(null, subFolder.Name, "GenericFolderIcon", "GenericFolderIcon"); newNode.Tag = subFolder; AddFolderToTree(subFolder, newNode.Nodes); } foreach (AGS.Types.View view in folder.Views) { TreeNode newNode = parentNodeList.Add(null, view.NameAndID, "ViewsIcon", "ViewsIcon"); newNode.Tag = view; if (view.ID == _startingView) { newNode.TreeView.SelectedNode = newNode; } } }
private void FindSpriteUsageInViews(int spriteNumber, StringBuilder report, ViewFolder folder) { foreach (AGS.Types.View view in folder.Views) { foreach (ViewLoop loop in view.Loops) { foreach (ViewFrame frame in loop.Frames) { if (frame.Image == spriteNumber) { report.AppendLine(string.Format("View {0}, loop {1}, frame {2}", view.ID, loop.ID, frame.ID)); } } } } foreach (ViewFolder subFolder in folder.SubFolders) { FindSpriteUsageInViews(spriteNumber, report, subFolder); } }
public Game() { _guis = new GUIFolder(GUIFolder.MAIN_GUI_FOLDER_NAME); _inventoryItems = new InventoryItemFolder(InventoryItemFolder.MAIN_INVENTORY_ITEM_FOLDER_NAME); _cursors = new List<MouseCursor>(); _dialogs = new DialogFolder(DialogFolder.MAIN_DIALOG_FOLDER_NAME); _fonts = new List<Font>(); _characters = new CharacterFolder(CharacterFolder.MAIN_CHARACTER_FOLDER_NAME); _plugins = new List<Plugin>(); _translations = new List<Translation>(); _rooms = new UnloadedRoomFolder(UnloadedRoomFolder.MAIN_UNLOADED_ROOM_FOLDER_NAME); _oldInteractionVariables = new List<OldInteractionVariable>(); _settings = new Settings(); _palette = new PaletteEntry[PALETTE_SIZE]; _sprites = new SpriteFolder("Main"); _views = new ViewFolder("Main"); _audioClips = new AudioClipFolder("Main"); _audioClipTypes = new List<AudioClipType>(); _textParser = new TextParser(); _lipSync = new LipSync(); _propertySchema = new CustomPropertySchema(); _globalVariables = new GlobalVariables(); _globalMessages = new string[NUMBER_OF_GLOBAL_MESSAGES]; _deletedViewIDs = new Dictionary<int, object>(); _scripts = new ScriptFolder(ScriptFolder.MAIN_SCRIPT_FOLDER_NAME); _scriptsToCompile = new Scripts(); ScriptAndHeader globalScript = new ScriptAndHeader( new Script(Script.GLOBAL_HEADER_FILE_NAME, "// script header\r\n", true), new Script(Script.GLOBAL_SCRIPT_FILE_NAME, "// global script\r\n", false)); _scripts.Items.Add(globalScript); _playerCharacter = null; for (int i = 0; i < _globalMessages.Length; i++) { _globalMessages[i] = string.Empty; } InitializeDefaultPalette(); }
public Game() { _guis = new List<GUI>(); _inventoryItems = new List<InventoryItem>(); _cursors = new List<MouseCursor>(); _dialogs = new List<Dialog>(); _fonts = new List<Font>(); _characters = new List<Character>(); _plugins = new List<Plugin>(); _translations = new List<Translation>(); _rooms = new RoomList(); _oldInteractionVariables = new List<OldInteractionVariable>(); _settings = new Settings(); _palette = new PaletteEntry[PALETTE_SIZE]; _sprites = new SpriteFolder("Main"); _views = new ViewFolder("Main"); _audioClips = new AudioClipFolder("Main"); _audioClipTypes = new List<AudioClipType>(); _textParser = new TextParser(); _lipSync = new LipSync(); _propertySchema = new CustomPropertySchema(); _globalVariables = new GlobalVariables(); _globalMessages = new string[NUMBER_OF_GLOBAL_MESSAGES]; _deletedViewIDs = new Dictionary<int, object>(); _scripts = new Scripts(); _scriptsToCompile = new Scripts(); _scripts.Add(new Script(Script.GLOBAL_HEADER_FILE_NAME, "// script header\r\n", true)); _scripts.Add(new Script(Script.GLOBAL_SCRIPT_FILE_NAME, "// global script\r\n", false)); _playerCharacter = null; for (int i = 0; i < _globalMessages.Length; i++) { _globalMessages[i] = string.Empty; } InitializeDefaultPalette(); }
public IList <SparkViewDescriptor> CreateDescriptors(SparkBatchEntry entry) { var descriptors = new List <SparkViewDescriptor>(); var controllerName = RemoveSuffix(entry.ControllerType.Name, "Controller"); var viewNames = new List <string>(); var includeViews = entry.IncludeViews; if (includeViews.Count == 0) { includeViews = new[] { "*" } } ; foreach (var include in includeViews) { if (include.EndsWith("*")) { foreach (var fileName in ViewFolder.ListViews(controllerName)) { if (!string.Equals(Path.GetExtension(fileName), ".spark", StringComparison.InvariantCultureIgnoreCase)) { continue; } var potentialMatch = Path.GetFileNameWithoutExtension(fileName); if (!TestMatch(potentialMatch, include)) { continue; } var isExcluded = false; foreach (var exclude in entry.ExcludeViews) { if (!TestMatch(potentialMatch, RemoveSuffix(exclude, ".spark"))) { continue; } isExcluded = true; break; } if (!isExcluded) { viewNames.Add(potentialMatch); } } } else { // explicitly included views don't test for exclusion viewNames.Add(RemoveSuffix(include, ".spark")); } } foreach (var viewName in viewNames) { if (entry.LayoutNames.Count == 0) { descriptors.Add(CreateDescriptor( entry.ControllerType.Namespace, controllerName, viewName, null /*masterName*/, true)); } else { foreach (var masterName in entry.LayoutNames) { descriptors.Add(CreateDescriptor( entry.ControllerType.Namespace, controllerName, viewName, string.Join(" ", masterName.ToArray()), false)); } } } return(descriptors); }
private void EnsureViewNamesAreUnique(ViewFolder folder, Dictionary<string, AGS.Types.View> viewNames, CompileMessages errors) { foreach (ViewFolder subFolder in folder.SubFolders) { EnsureViewNamesAreUnique(subFolder, viewNames, errors); } foreach (AGS.Types.View view in folder.Views) { if (!string.IsNullOrEmpty(view.Name)) { if (viewNames.ContainsKey(view.Name.ToLower())) { errors.Add(new CompileError("There are two or more views with the same name '" + view.Name + "'")); } else { viewNames.Add(view.Name.ToLower(), view); } } } }
public void FromXml(XmlNode node) { node = node.SelectSingleNode("Game"); _settings.FromXml(node); _lipSync.FromXml(node); _propertySchema.FromXml(node); if (node.SelectSingleNode("InventoryHotspotMarker") != null) { // Pre-3.0.3 InventoryHotspotMarker marker = new InventoryHotspotMarker(); marker.FromXml(node); _settings.InventoryHotspotMarker = marker; } foreach (XmlNode msgNode in SerializeUtils.GetChildNodes(node, "GlobalMessages")) { _globalMessages[Convert.ToInt32(msgNode.Attributes["ID"].InnerText) - GLOBAL_MESSAGE_ID_START] = msgNode.InnerText; } _plugins.Clear(); foreach (XmlNode pluginNode in SerializeUtils.GetChildNodes(node, "Plugins")) { _plugins.Add(new Plugin(pluginNode)); } _rooms = new UnloadedRoomFolder(node.SelectSingleNode("Rooms").FirstChild, node); _guis = new GUIFolder(node.SelectSingleNode("GUIs").FirstChild, node); _inventoryItems = new InventoryItemFolder(node.SelectSingleNode("InventoryItems").FirstChild, node); _textParser = new TextParser(node.SelectSingleNode("TextParser")); _characters = new CharacterFolder(node.SelectSingleNode("Characters").FirstChild, node); _playerCharacter = null; string playerCharText = SerializeUtils.GetElementString(node, "PlayerCharacter"); if (playerCharText.Length > 0) { int playerCharID = Convert.ToInt32(playerCharText); foreach (Character character in RootCharacterFolder.AllItemsFlat) { if (character.ID == playerCharID) { _playerCharacter = character; break; } } } _dialogs = new DialogFolder(node.SelectSingleNode("Dialogs").FirstChild, node); _cursors.Clear(); foreach (XmlNode cursNode in SerializeUtils.GetChildNodes(node, "Cursors")) { _cursors.Add(new MouseCursor(cursNode)); } _fonts.Clear(); foreach (XmlNode fontNode in SerializeUtils.GetChildNodes(node, "Fonts")) { _fonts.Add(new Font(fontNode)); } _palette = ReadPaletteFromXML(node); _sprites = new SpriteFolder(node.SelectSingleNode("Sprites").FirstChild); _views = new ViewFolder(node.SelectSingleNode("Views").FirstChild); _deletedViewIDs.Clear(); if (node.SelectSingleNode("DeletedViews") != null) { foreach (XmlNode transNode in SerializeUtils.GetChildNodes(node, "DeletedViews")) { _deletedViewIDs.Add(Convert.ToInt32(transNode.InnerText), null); } } _scripts = new ScriptFolder(node.SelectSingleNode("Scripts").FirstChild, node); if (node.SelectSingleNode("AudioClips") != null) { _audioClips = new AudioClipFolder(node.SelectSingleNode("AudioClips").FirstChild); } else { _audioClips = new AudioClipFolder("Main"); _audioClips.DefaultPriority = AudioClipPriority.Normal; _audioClips.DefaultRepeat = InheritableBool.False; _audioClips.DefaultVolume = 100; } _audioClipTypes.Clear(); if (node.SelectSingleNode("AudioClipTypes") != null) { foreach (XmlNode clipTypeNode in SerializeUtils.GetChildNodes(node, "AudioClipTypes")) { _audioClipTypes.Add(new AudioClipType(clipTypeNode)); } } _translations.Clear(); if (node.SelectSingleNode("Translations") != null) { foreach (XmlNode transNode in SerializeUtils.GetChildNodes(node, "Translations")) { _translations.Add(new Translation(transNode)); } } if (node.SelectSingleNode("GlobalVariables") != null) { _globalVariables = new GlobalVariables(node.SelectSingleNode("GlobalVariables")); } else { _globalVariables = new GlobalVariables(); } _oldInteractionVariables.Clear(); if (node.SelectSingleNode("OldInteractionVariables") != null) { foreach (XmlNode varNode in SerializeUtils.GetChildNodes(node, "OldInteractionVariables")) { _oldInteractionVariables.Add(new OldInteractionVariable(SerializeUtils.GetAttributeString(varNode, "Name"), SerializeUtils.GetAttributeInt(varNode, "Value"))); } } if (_savedXmlVersionIndex == null) { // Pre-3.0.3, upgrade co-ordinates ConvertCoordinatesToNativeResolution(); } }
private bool IsNameUsedByView(string name, ViewFolder folderToCheck, object ignoreObject) { foreach (View view in folderToCheck.Views) { if ((view.Name.ToUpper() == name) && (view != ignoreObject)) { return true; } } foreach (ViewFolder subFolder in folderToCheck.SubFolders) { if (IsNameUsedByView(name, subFolder, ignoreObject)) { return true; } } return false; }
private int FindHighestViewNumber(ViewFolder folder) { int highest = 0; foreach (View view in folder.Views) { highest = Math.Max(view.ID, highest); } foreach (ViewFolder subFolder in folder.SubFolders) { int highestInSubFolder = FindHighestViewNumber(subFolder); highest = Math.Max(highest, highestInSubFolder); } return highest; }
private void EnsureViewNamesAreUnique(ViewFolder folder, Dictionary<string, AGS.Types.View> viewNames, CompileMessages errors) { foreach (ViewFolder subFolder in folder.SubFolders) { EnsureViewNamesAreUnique(subFolder, viewNames, errors); } foreach (AGS.Types.View view in folder.Views) { if (!string.IsNullOrEmpty(view.Name)) { if (viewNames.ContainsKey(view.Name.ToLower())) { errors.Add(new CompileError("Il y a au moins deux vues qui partagent le même nom '" + view.Name + "'")); } else { viewNames.Add(view.Name.ToLower(), view); } } } }