public CharactersEditorFilter(Panel displayPanel, Room room, Game game) { _room = room; _panel = displayPanel; _game = game; _propertyObjectChangedDelegate = new GUIController.PropertyObjectChangedHandler(GUIController_OnPropertyObjectChanged); }
public ObjectsEditorFilter(Panel displayPanel, Room room) { _room = room; _panel = displayPanel; _selectedObject = null; _propertyObjectChangedDelegate = new GUIController.PropertyObjectChangedHandler(GUIController_OnPropertyObjectChanged); }
public static bool CreateInteractionScripts(Room room, CompileMessages errors) { Script theScript = room.Script; bool convertedSome = CreateScriptsForInteraction("room", theScript, room.Interactions, errors); foreach (RoomHotspot hotspot in room.Hotspots) { if (hotspot.Name.Length < 1) { hotspot.Name = "hHotspot" + hotspot.ID; } convertedSome |= CreateScriptsForInteraction(hotspot.Name, theScript, hotspot.Interactions, errors); } foreach (RoomObject obj in room.Objects) { if (obj.Name.Length < 1) { obj.Name = "oObject" + obj.ID; } convertedSome |= CreateScriptsForInteraction(obj.Name, theScript, obj.Interactions, errors); } foreach (RoomRegion region in room.Regions) { string useName = "region" + region.ID; convertedSome |= CreateScriptsForInteraction(useName, theScript, region.Interactions, errors); } return convertedSome; }
public ScriptEditor(Script scriptToEdit, AGSEditor agsEditor, Action<Script> showMatchingScript) { _showMatchingScript = showMatchingScript; _agsEditor = agsEditor; Init(scriptToEdit); _room = null; _roomNumber = 0; }
public RoomSettingsEditor(Room room) { this.SetStyle(ControlStyles.Selectable, true); InitializeComponent(); _room = room; if (_room.Resolution == RoomResolution.LowRes) { _state.ScaleFactor = 2; } else { _state.ScaleFactor = 1; } sldZoomLevel.Value = _state.ScaleFactor; _state.ScrollOffsetX = 0; _state.ScrollOffsetY = 0; _state.CurrentCursor = Cursors.Default; _filters.Add(new EmptyEditorFilter(bufferedPanel1, _room)); _filters.Add(new EdgesEditorFilter(bufferedPanel1, _room)); _filters.Add(new CharactersEditorFilter(bufferedPanel1, _room, Factory.AGSEditor.CurrentGame)); _filters.Add(new ObjectsEditorFilter(bufferedPanel1, _room)); _filters.Add(new HotspotsEditorFilter(bufferedPanel1, _room)); _filters.Add(new WalkableAreasEditorFilter(bufferedPanel1, _room)); _filters.Add(new WalkBehindsEditorFilter(bufferedPanel1, _room)); _filters.Add(new RegionsEditorFilter(bufferedPanel1, _room)); _filter = _filters[0]; _filter.FilterOn(); cmbViewType.Items.Add("Nothing"); cmbViewType.Items.Add("Edges"); cmbViewType.Items.Add("Characters"); cmbViewType.Items.Add("Objects"); cmbViewType.Items.Add("Hotspots"); cmbViewType.Items.Add("Walkable areas"); cmbViewType.Items.Add("Walk-behinds"); cmbViewType.Items.Add("Regions"); cmbViewType.SelectedIndex = 0; RepopulateBackgroundList(0); UpdateScrollableWindowSize(); this.MouseWheel += new MouseEventHandler(RoomSettingsEditor_MouseWheel); this.bufferedPanel1.MouseWheel += new MouseEventHandler(RoomSettingsEditor_MouseWheel); _editorConstructed = true; }
public HotspotsEditorFilter(Panel displayPanel, Room room) { if (!_registeredIcons) { Factory.GUIController.RegisterIcon("DrawLineIcon", Resources.ResourceManager.GetIcon("drawline.ico")); Factory.GUIController.RegisterIcon("DrawFreehandIcon", Resources.ResourceManager.GetIcon("drawfree.ico")); Factory.GUIController.RegisterIcon("DrawFillIcon", Resources.ResourceManager.GetIcon("drawfill.ico")); _registeredIcons = true; _toolbarIcons = new List<MenuCommand>(); _toolbarIcons.Add(new MenuCommand(DRAW_LINE_COMMAND, "Line tool", "DrawLineIcon")); _toolbarIcons.Add(new MenuCommand(DRAW_FREEHAND_COMMAND, "Freehand tool", "DrawFreehandIcon")); _toolbarIcons.Add(new MenuCommand(DRAW_FILL_COMMAND, "Fill area", "DrawFillIcon")); _toolbarIcons[0].Checked = true; } _room = room; _panel = displayPanel; CreateAlphaTranslucentImageMatrix(); _propertyObjectChangedDelegate = new GUIController.PropertyObjectChangedHandler(GUIController_OnPropertyObjectChanged); }
public BaseAreasEditorFilter(Panel displayPanel, Room room, bool highResMask) { if (!_registeredIcons) { Factory.GUIController.RegisterIcon("SelectAreaIcon", Resources.ResourceManager.GetIcon("findarea.ico")); Factory.GUIController.RegisterIcon("DrawLineIcon", Resources.ResourceManager.GetIcon("drawline.ico")); Factory.GUIController.RegisterIcon("DrawFreehandIcon", Resources.ResourceManager.GetIcon("drawfree.ico")); Factory.GUIController.RegisterIcon("DrawRectIcon", Resources.ResourceManager.GetIcon("drawrect.ico")); Factory.GUIController.RegisterIcon("DrawFillIcon", Resources.ResourceManager.GetIcon("drawfill.ico")); Factory.GUIController.RegisterIcon("ImportMaskIcon", Resources.ResourceManager.GetIcon("importmask.ico")); Factory.GUIController.RegisterIcon("CopyWalkableAreaMaskIcon", Resources.ResourceManager.GetIcon("copymask.ico")); Factory.GUIController.RegisterIcon("GreyedOutMasksIcon", Resources.ResourceManager.GetIcon("greymasks.ico")); _selectCursor = Resources.ResourceManager.GetCursor("findarea.cur"); _registeredIcons = true; } _tooltip = new ToolTip(); _tooltip.IsBalloon = true; _highResMask = highResMask; _toolbarIcons = new List<MenuCommand>(); _toolbarIcons.Add(new MenuCommand(SELECT_AREA_COMMAND, "Select area (Ctrl+C)", "SelectAreaIcon")); _toolbarIcons.Add(new MenuCommand(DRAW_LINE_COMMAND, "Line tool (Ctrl+N)", "DrawLineIcon")); _toolbarIcons.Add(new MenuCommand(DRAW_FREEHAND_COMMAND, "Freehand tool (Ctrl+D)", "DrawFreehandIcon")); _toolbarIcons.Add(new MenuCommand(DRAW_RECTANGLE_COMMAND, "Rectangle tool (Ctrl+E)", "DrawRectIcon")); _toolbarIcons.Add(new MenuCommand(DRAW_FILL_COMMAND, "Fill area (Ctrl+F)", "DrawFillIcon")); _toolbarIcons.Add(new MenuCommand(UNDO_COMMAND, "Undo (Ctrl+Z)", "UndoIcon")); _toolbarIcons.Add(new MenuCommand(IMPORT_MASK_COMMAND, "Import mask from file", "ImportMaskIcon")); _toolbarIcons.Add(new MenuCommand(COPY_WALKABLE_AREA_MASK_COMMAND, "Copy walkable area mask to regions", "CopyWalkableAreaMaskIcon")); _toolbarIcons.Add(new MenuCommand(GREYED_OUT_MASKS_COMMAND, "Show non-selected masks greyed out", "GreyedOutMasksIcon")); _toolbarIcons[(int)_drawMode].Checked = true; _toolbarIcons[TOOLBAR_INDEX_GREY_OUT_MASKS].Checked = _greyedOutMasks; _room = room; _panel = displayPanel; _propertyObjectChangedDelegate = new GUIController.PropertyObjectChangedHandler(GUIController_OnPropertyObjectChanged); UpdateUndoButtonEnabledState(); }
public void ImportBackground(Room room, int backgroundNumber, Bitmap bmp, bool useExactPalette, bool sharePalette) { _native.ImportBackground(room, backgroundNumber, bmp, useExactPalette, sharePalette); }
public void RestoreFromUndoBuffer(Room room, RoomAreaMaskType mask) { _native.RestoreFromUndoBuffer(room, mask); }
public Bitmap GetBitmapForBackground(Room room, int backgroundNumber) { return _native.GetBitmapForBackground(room, backgroundNumber); }
public void ImportAreaMask(Room room, RoomAreaMaskType mask, Bitmap bmp) { _native.ImportAreaMask(room, mask, bmp); }
public void DrawRoomBackground(IntPtr hDC, Room room, int x, int y, int backgroundNumber, float scaleFactor, RoomAreaMaskType maskType, int selectedArea, int maskTransparency) { _native.DrawRoomBackground((int)hDC, room, x, y, backgroundNumber, scaleFactor, maskType, selectedArea, maskTransparency); }
public int GetAreaMaskPixel(Room room, RoomAreaMaskType mask, int x, int y) { int pixel = _native.GetAreaMaskPixel(room, mask, x, y); // if it lies outside the bitmap, just return 0 if (pixel < 0) { pixel = 0; } return pixel; }
private void UnloadCurrentRoom() { if (_roomSettings != null) { ((RoomSettingsEditor)_roomSettings.Control).SaveRoom -= new RoomSettingsEditor.SaveRoomHandler(RoomEditor_SaveRoom); ((RoomSettingsEditor)_roomSettings.Control).AbandonChanges -= new RoomSettingsEditor.AbandonChangesHandler(RoomsComponent_AbandonChanges); } DisposePane(_roomSettings); _roomSettings = null; if (_loadedRoom != null) { _loadedRoom.RoomModifiedChanged -= _modifiedChangedHandler; } _loadedRoom = null; }
private Dictionary<string, object> ConstructPropertyObjectList(Room room) { Dictionary<string, object> list = new Dictionary<string, object>(); list.Add(room.PropertyGridTitle, room); return list; }
public HotspotsEditorFilter(Panel displayPanel, Room room) : base(displayPanel, room, false) { }
private void AppendRoomObjectsAndHotspotsToHeader(StringBuilder sb, Room room) { foreach (RoomObject obj in room.Objects) { if (obj.Name.Length > 0) { sb.AppendLine("import Object " + obj.Name + ";"); } } foreach (RoomHotspot hotspot in room.Hotspots) { if (hotspot.Name.Length > 0) { sb.AppendLine("import Hotspot " + hotspot.Name + ";"); } } }
public void CopyWalkableAreaMaskToRegions(Room room) { _native.CopyWalkableMaskToRegions(room); }
private bool HookUpInteractionVariables(Room room) { bool changedScript = false; int index; while ((index = room.Script.Text.IndexOf("__INTRVAL$")) > 0) { int endIndex = room.Script.Text.IndexOf('$', index + 10) + 1; string intrVariableNumber = room.Script.Text.Substring(index + 10, (endIndex - index) - 11); int variableNumber = Convert.ToInt32(intrVariableNumber); string replacementText; if (variableNumber >= OldInteractionVariable.LOCAL_VARIABLE_INDEX_OFFSET) { variableNumber -= OldInteractionVariable.LOCAL_VARIABLE_INDEX_OFFSET; if (variableNumber >= room.OldInteractionVariables.Count) { replacementText = "UNKNOWN_ROOM_VARIABLE_" + variableNumber; } else { replacementText = room.OldInteractionVariables[variableNumber].ScriptName; } } else { if (variableNumber >= _agsEditor.CurrentGame.OldInteractionVariables.Count) { replacementText = "UNKNOWN_INTERACTION_VARIABLE_" + variableNumber; } else { replacementText = _agsEditor.CurrentGame.OldInteractionVariables[variableNumber].ScriptName; } } room.Script.Text = room.Script.Text.Replace(room.Script.Text.Substring(index, (endIndex - index)), replacementText); changedScript = true; } if ((changedScript) && (room.OldInteractionVariables.Count > 0)) { foreach (OldInteractionVariable var in room.OldInteractionVariables) { room.Script.Text = string.Format("int {0} = {1};{2}", var.ScriptName, var.Value, Environment.NewLine) + room.Script.Text; } room.Script.Text = "// Automatically converted interaction variables" + Environment.NewLine + room.Script.Text; } return changedScript; }
private void EnsureScriptNamesAreUnique(Room room, CompileMessages errors) { foreach (RoomHotspot hotspot in room.Hotspots) { if (_agsEditor.CurrentGame.IsScriptNameAlreadyUsed(hotspot.Name, hotspot)) { errors.Add(new CompileError("Hotspot '" + hotspot.Name + "' script name conflicts with other game item")); } } foreach (RoomObject obj in room.Objects) { if (_agsEditor.CurrentGame.IsScriptNameAlreadyUsed(obj.Name, obj)) { errors.Add(new CompileError("Object '" + obj.Name + "' script name conflicts with other game item")); } } }
public void SaveRoom(Room roomToSave) { _native.SaveRoomFile(roomToSave); }
private void SaveRoomButDoNotShowAnyErrors(Room room, CompileMessages errors, string pleaseWaitText) { lock (_roomLoadingOrSavingLock) { if (room != _loadedRoom) { errors.Add(new CompileError("Attempted to save room " + room.Number + " which is not loaded")); return; } PerformPreSaveChecks(room); if (!_agsEditor.AttemptToGetWriteAccess(room.FileName)) { errors.Add(new CompileError("Unable to open file " + room.FileName + " for writing")); return; } if (PreSaveRoom != null) { PreSaveRoom(room, errors); } EnsureScriptNamesAreUnique(room, errors); try { if (!errors.HasErrors) { BusyDialog.Show(pleaseWaitText, new BusyDialog.ProcessingHandler(SaveRoomOnThread), room); } } catch (CompileMessage ex) { errors.Add(ex); } catch (AGSEditorException ex) { errors.Add(new CompileError(ex.Message, ex)); } } }
public void CreateUndoBuffer(Room room, RoomAreaMaskType mask) { _native.CreateUndoBuffer(room, mask); }
private bool AddPlayMusicCommandToPlayerEntersRoomScript(Room room, CompileMessages errors) { bool scriptModified = false; if (room.PlayMusicOnRoomLoad > 0) { AudioClip clip = _agsEditor.CurrentGame.FindAudioClipForOldMusicNumber(null, room.PlayMusicOnRoomLoad); if (clip == null) { errors.Add(new CompileWarning("Room " + room.Number + ": Unable to find aMusic" + room.PlayMusicOnRoomLoad + " which was set as this room's start music")); return scriptModified; } string scriptName = room.Interactions.GetScriptFunctionNameForInteractionSuffix(Room.EVENT_SUFFIX_ROOM_LOAD); if (string.IsNullOrEmpty(scriptName)) { scriptName = "Room_" + Room.EVENT_SUFFIX_ROOM_LOAD; room.Interactions.SetScriptFunctionNameForInteractionSuffix(Room.EVENT_SUFFIX_ROOM_LOAD, scriptName); room.Script.Text += Environment.NewLine + "function " + scriptName + "()" + Environment.NewLine + "{" + Environment.NewLine + "}" + Environment.NewLine; scriptModified = true; } int functionOffset = room.Script.Text.IndexOf(scriptName); if (functionOffset < 0) { errors.Add(new CompileWarning("Room " + room.Number + ": Unable to find definition for " + scriptName + " to add Room Load music " + room.PlayMusicOnRoomLoad)); } else { functionOffset = room.Script.Text.IndexOf('{', functionOffset); functionOffset = room.Script.Text.IndexOf('\n', functionOffset) + 1; string newScript = room.Script.Text.Substring(0, functionOffset); newScript += " " + clip.ScriptName + ".Play();" + Environment.NewLine; newScript += room.Script.Text.Substring(functionOffset); room.Script.Text = newScript; room.PlayMusicOnRoomLoad = 0; scriptModified = true; } } return scriptModified; }
public Script RegenerateScriptHeader(Game game, Room currentRoom) { StringBuilder sb = new StringBuilder(10000); // sb.AppendLine("#define AGS_MAX_CHARACTERS " + Game.MAX_CHARACTERS); sb.AppendLine("#define AGS_MAX_INV_ITEMS " + Game.MAX_INV_ITEMS); // sb.AppendLine("#define AGS_MAX_GUIS " + Game.MAX_GUIS); sb.AppendLine("#define AGS_MAX_CONTROLS_PER_GUI " + GUI.MAX_CONTROLS_PER_GUI); // sb.AppendLine("#define AGS_MAX_VIEWS " + Game.MAX_VIEWS); // sb.AppendLine("#define AGS_MAX_LOOPS_PER_VIEW " + AGS.Types.View.MAX_LOOPS_PER_VIEW); // sb.AppendLine("#define AGS_MAX_FRAMES_PER_LOOP " + ViewLoop.MAX_FRAMES_PER_LOOP); sb.AppendLine("#define AGS_MAX_OBJECTS " + Room.MAX_OBJECTS); sb.AppendLine("#define AGS_MAX_HOTSPOTS " + Room.MAX_HOTSPOTS); sb.AppendLine("#define AGS_MAX_REGIONS " + Room.MAX_REGIONS); AppendCursorsToHeader(sb, game.Cursors); AppendFontsToHeader(sb, game.Fonts); AppendCharactersToHeader(sb, game.Characters, game); AppendAudioClipTypesToHeader(sb, game.AudioClipTypes); AppendAudioClipsToHeader(sb, game.RootAudioClipFolder); sb.AppendLine("import Hotspot hotspot[" + Room.MAX_HOTSPOTS + "];"); sb.AppendLine("import Region region[" + Room.MAX_REGIONS + "];"); AppendInventoryToHeader(sb, game.InventoryItems); AppendDialogsToHeader(sb, game.Dialogs); AppendGUIsToHeader(sb, game.GUIs); AppendViewsToHeader(sb, game.RootViewFolder); if (currentRoom != null) { AppendRoomObjectsAndHotspotsToHeader(sb, currentRoom); } return new Script(AUTO_GENERATED_HEADER_NAME, sb.ToString(), true); }
public void DeleteBackground(Room room, int backgroundNumber) { _native.DeleteBackground(room, backgroundNumber); }
public void RegenerateScriptHeader(Room currentRoom) { _autoGeneratedHeader = _tasks.RegenerateScriptHeader(_game, currentRoom); AutoComplete.ConstructCache(_autoGeneratedHeader); }
public void DrawFillOntoMask(Room room, RoomAreaMaskType mask, int x1, int y1, int color) { _native.DrawFillOntoMask(room, mask, x1, y1, color); }
public ScriptEditor(Script scriptToEdit, AGSEditor agsEditor) { InitializeComponent(); _agsEditor = agsEditor; _autocompleteUpdateHandler = new AutoComplete.BackgroundCacheUpdateStatusChangedHandler(AutoComplete_BackgroundCacheUpdateStatusChanged); AutoComplete.BackgroundCacheUpdateStatusChanged += _autocompleteUpdateHandler; _fileChangedHandler = new EditorEvents.FileChangedInGameFolderHandler(Events_FileChangedInGameFolder); Factory.Events.FileChangedInGameFolder += _fileChangedHandler; _mainWindowActivatedHandler = new EventHandler(GUIController_OnMainWindowActivated); Factory.GUIController.OnMainWindowActivated += _mainWindowActivatedHandler; _toolbarIcons.Add(new MenuCommand(CUT_COMMAND, "Cut", "CutIcon")); _toolbarIcons.Add(new MenuCommand(COPY_COMMAND, "Copy", "CopyIcon")); _toolbarIcons.Add(new MenuCommand(PASTE_COMMAND, "Paste", "PasteIcon")); _toolbarIcons.Add(new MenuCommand(UNDO_COMMAND, "Undo", "UndoIcon")); _toolbarIcons.Add(new MenuCommand(REDO_COMMAND, "Redo", "RedoIcon")); _extraMenu.Commands.Add(new MenuCommand(UNDO_COMMAND, "Undo", System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z, "UndoMenuIcon")); _extraMenu.Commands.Add(new MenuCommand(REDO_COMMAND, "Redo", System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y, "RedoMenuIcon")); _extraMenu.Commands.Add(MenuCommand.Separator); _extraMenu.Commands.Add(new MenuCommand(CUT_COMMAND, "Cut", System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X, "CutMenuIcon")); _extraMenu.Commands.Add(new MenuCommand(COPY_COMMAND, "Copy", System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C, "CopyMenuIcon")); _extraMenu.Commands.Add(new MenuCommand(PASTE_COMMAND, "Paste", System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V, "PasteMenuIcon")); _extraMenu.Commands.Add(MenuCommand.Separator); _extraMenu.Commands.Add(new MenuCommand(FIND_COMMAND, "Find...", System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F, "FindMenuIcon")); _extraMenu.Commands.Add(new MenuCommand(FIND_NEXT_COMMAND, "Find next", System.Windows.Forms.Keys.F3, "FindNextMenuIcon")); _extraMenu.Commands.Add(new MenuCommand(REPLACE_COMMAND, "Replace...", System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E)); _extraMenu.Commands.Add(MenuCommand.Separator); _extraMenu.Commands.Add(new MenuCommand(FIND_ALL_COMMAND, "Find All...", System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift | System.Windows.Forms.Keys.F, "FindMenuIcon")); _extraMenu.Commands.Add(new MenuCommand(REPLACE_ALL_COMMAND, "Replace All...", System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift | System.Windows.Forms.Keys.E)); _extraMenu.Commands.Add(MenuCommand.Separator); _extraMenu.Commands.Add(new MenuCommand(SHOW_AUTOCOMPLETE_COMMAND, "Show Autocomplete", System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Space, "ShowAutocompleteMenuIcon")); _extraMenu.Commands.Add(new MenuCommand(TOGGLE_BREAKPOINT_COMMAND, "Toggle Breakpoint", System.Windows.Forms.Keys.F9, "ToggleBreakpointMenuIcon")); _extraMenu.Commands.Add(new MenuCommand(MATCH_BRACE_COMMAND, "Match Brace", System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.B)); scintilla.SetKeyWords(Constants.SCRIPT_KEY_WORDS); UpdateStructHighlighting(); // pressing ( [ or . will auto-complete scintilla.SetFillupKeys(Constants.AUTOCOMPLETE_ACCEPT_KEYS); scintilla.EnableLineNumbers(); scintilla.IsModifiedChanged += new EventHandler(scintilla_IsModifiedChanged); scintilla.AttemptModify += new ScintillaWrapper.AttemptModifyHandler(scintilla_AttemptModify); scintilla.UpdateUI += new EventHandler(scintilla_UpdateUI); scintilla.TextModified += new ScintillaWrapper.TextModifiedHandler(scintilla_TextModified); scintilla.ConstructContextMenu += new ScintillaWrapper.ConstructContextMenuHandler(scintilla_ConstructContextMenu); scintilla.ActivateContextMenu += new ScintillaWrapper.ActivateContextMenuHandler(scintilla_ActivateContextMenu); scintilla.ToggleBreakpoint += new EventHandler<Scintilla.MarginClickEventArgs>(scintilla_ToggleBreakpoint); this.Resize += new EventHandler(ScriptEditor_Resize); if (!scriptToEdit.IsHeader) { scintilla.SetAutoCompleteSource(scriptToEdit); } scintilla.SetKeyWords(Constants.SCRIPT_KEY_WORDS); UpdateStructHighlighting(); this.Script = scriptToEdit; _room = null; _roomNumber = 0; }
public void DrawLineOntoMask(Room room, RoomAreaMaskType mask, int x1, int y1, int x2, int y2, int color) { _native.DrawLineOntoMask(room, mask, x1, y1, x2, y2, color); }