Skip to content

Commit

Permalink
Initial import
Browse files Browse the repository at this point in the history
git-svn-id: https://svn.bigbluecup.com:7743/svn/ags/trunk@7 198b9858-5f2a-7c4e-a477-5b45ff739df7
  • Loading branch information
CJ authored and CJ committed Jan 4, 2011
1 parent 88ac0f0 commit de3ac29
Show file tree
Hide file tree
Showing 496 changed files with 61,959 additions and 0 deletions.
1,680 changes: 1,680 additions & 0 deletions Editor/AGS.Editor/AGSEditor.cs

Large diffs are not rendered by default.

994 changes: 994 additions & 0 deletions Editor/AGS.Editor/AGSEditor.csproj

Large diffs are not rendered by default.

130 changes: 130 additions & 0 deletions Editor/AGS.Editor/AGSEditorController.cs
@@ -0,0 +1,130 @@
using AGS.Types;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;

namespace AGS.Editor
{
/// <summary>
/// Used by plugins to access AGS Editor features
/// </summary>
public class AGSEditorController : IAGSEditor
{
private AGSEditor _agsEditor;
private GUIController _guiController;
private ComponentController _componentController;
private IRoomController _roomController = null;

public AGSEditorController(ComponentController componentController, AGSEditor agsEditor, GUIController guiController)
{
_componentController = componentController;
_agsEditor = agsEditor;
_guiController = guiController;
}

void IAGSEditor.AddComponent(IEditorComponent component)
{
_componentController.AddComponent(component);
}

IGUIController IAGSEditor.GUIController
{
get { return _guiController; }
}

IGame IAGSEditor.CurrentGame
{
get { return _agsEditor.CurrentGame; }
}

string IAGSEditor.Version
{
get { return AGS.Types.Version.AGS_EDITOR_VERSION; }
}

event GetScriptHeaderListHandler IAGSEditor.GetScriptHeaderList
{
add { _agsEditor.GetScriptHeaderList += value; }
remove { _agsEditor.GetScriptHeaderList -= value; }
}

void IAGSEditor.RebuildAutocompleteCache(Script script)
{
AutoComplete.ConstructCache(script);
}

IList<Script> IAGSEditor.GetAllScriptHeaders()
{
return _agsEditor.GetAllScriptHeaders();
}

Bitmap IAGSEditor.GetSpriteImage(int spriteNumber)
{
return Factory.NativeProxy.GetBitmapForSprite(spriteNumber);
}

void IAGSEditor.ChangeSpriteImage(int spriteNumber, Bitmap newImage, SpriteImportTransparency transparencyType, bool useAlphaChannel)
{
Sprite sprite = _agsEditor.CurrentGame.RootSpriteFolder.FindSpriteByID(spriteNumber, true);
if (sprite == null)
{
throw new AGSEditorException("Unable to find sprite " + spriteNumber + " in any sprite folders");
}

Factory.NativeProxy.ReplaceSpriteWithBitmap(sprite, newImage, (SpriteImportMethod)((int)transparencyType), true, false, useAlphaChannel);
if (sprite.ColorDepth < 32)
{
sprite.AlphaChannel = false;
}
sprite.SourceFile = string.Empty;
_agsEditor.CurrentGame.RootSpriteFolder.NotifyClientsOfUpdate();
}

Sprite IAGSEditor.CreateNewSprite(ISpriteFolder inFolder, Bitmap newImage, SpriteImportTransparency transparencyType, bool useAlphaChannel)
{
Sprite newSprite = Factory.NativeProxy.CreateSpriteFromBitmap(newImage, (SpriteImportMethod)((int)transparencyType), true, false, useAlphaChannel);
if (newSprite.ColorDepth < 32)
{
newSprite.AlphaChannel = false;
}
newSprite.SourceFile = string.Empty;
inFolder.Sprites.Add(newSprite);
_agsEditor.CurrentGame.RootSpriteFolder.NotifyClientsOfUpdate();
return newSprite;
}

string IAGSEditor.GetSpriteUsageReport(int spriteNumber)
{
return new SpriteUsageChecker().GetSpriteUsageReport(spriteNumber, _agsEditor.CurrentGame);
}

void IAGSEditor.DeleteSprite(int spriteNumber)
{
Sprite sprite = _agsEditor.CurrentGame.RootSpriteFolder.FindSpriteByID(spriteNumber, true);
if (sprite == null)
{
throw new AGSEditorException("The sprite " + spriteNumber + " could not be found");
}
_agsEditor.DeleteSprite(sprite);
_agsEditor.CurrentGame.RootSpriteFolder.NotifyClientsOfUpdate();
}

ISourceControlIntegration IAGSEditor.SourceControl
{
get { return _agsEditor; }
}

IRoomController IAGSEditor.RoomController
{
get
{
if (_roomController == null)
{
_roomController = (IRoomController)_componentController.FindComponentThatImplementsInterface(typeof(IRoomController));
}
return _roomController;
}
}
}
}
174 changes: 174 additions & 0 deletions Editor/AGS.Editor/ApplicationController.cs
@@ -0,0 +1,174 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using AGS.Editor.Components;

namespace AGS.Editor
{
internal class ApplicationController
{
private AGSEditor _agsEditor;
private GUIController _guiController;
private ComponentController _componentController;
private NativeProxy _nativeProxy;
private EditorEvents _events;
private AGSEditorController _pluginEditorController;

public ApplicationController()
{
_events = Factory.Events;
_agsEditor = Factory.AGSEditor;
_guiController = Factory.GUIController;
_componentController = Factory.ComponentController;
_nativeProxy = Factory.NativeProxy;
_pluginEditorController = new AGSEditorController(_componentController, _agsEditor, _guiController);

_events.GameLoad += new EditorEvents.GameLoadHandler(_events_GameLoad);
_events.GameSettingsChanged += new EditorEvents.ParameterlessDelegate(_events_GameSettingsChanged);
_events.ImportedOldGame += new EditorEvents.ParameterlessDelegate(_events_ImportedOldGame);
_events.RefreshAllComponentsFromGame += new EditorEvents.ParameterlessDelegate(_events_RefreshAllComponentsFromGame);
_events.SavingGame += new EditorEvents.SavingGameHandler(_events_SavingGame);
_events.SavingUserData += new EditorEvents.SavingUserDataHandler(_events_SavingUserData);
_events.LoadedUserData += new EditorEvents.LoadedUserDataHandler(_events_LoadedUserData);
_agsEditor.PreSaveGame += new AGSEditor.PreSaveGameHandler(_agsEditor_PreSaveGame);

_guiController.OnEditorShutdown += new GUIController.EditorShutdownHandler(GUIController_OnEditorShutdown);
_guiController.Initialize(_agsEditor);
_agsEditor.DoEditorInitialization();
CreateComponents();
}

private void _events_LoadedUserData(XmlNode rootNode)
{
_componentController.NotifyLoadedUserData(rootNode);
}

private void _events_SavingUserData(XmlTextWriter writer)
{
_componentController.NotifySavingUserData(writer);
}

private void _events_SavingGame(XmlTextWriter writer)
{
_componentController.NotifySavingGame(writer);
}

private void _events_RefreshAllComponentsFromGame()
{
_componentController.NotifyDataRefreshNeeded();
}

private void _events_ImportedOldGame()
{
_componentController.NotifyImportedOldGame();
}

private void _events_GameSettingsChanged()
{
_nativeProxy.GameSettingsChanged(_agsEditor.CurrentGame);
_componentController.NotifyGameSettingsChanged();
}

private void _events_GameLoad(XmlNode rootNode)
{
List<string> missingComponents = _componentController.NotifyLoadedGameAndReturnMissingComponents(rootNode);
foreach (string componentID in missingComponents)
{
_guiController.ShowMessage("This game contains data from a plugin or component '" + componentID + "' which you do not have installed. If you save the game, this data will be lost.", AGS.Types.MessageBoxIconType.Warning);
}
}

private void _agsEditor_PreSaveGame(PreSaveGameEventArgs evArgs)
{
_componentController.NotifyAboutToSaveGame();
}

private void CreateComponents()
{
_componentController.AddComponent(new FileCommandsComponent(_guiController, _agsEditor));
_componentController.AddComponent(new BuildCommandsComponent(_guiController, _agsEditor));
_componentController.AddComponent(new HelpCommandsComponent(_guiController, _agsEditor));
_componentController.AddComponent(new SettingsComponent(_guiController, _agsEditor));
_componentController.AddComponent(new PaletteComponent(_guiController, _agsEditor));
_componentController.AddComponent(new SpriteManagerComponent(_guiController, _agsEditor));
_componentController.AddComponent(new TextParserComponent(_guiController, _agsEditor));
_componentController.AddComponent(new LipSyncComponent(_guiController, _agsEditor));
_componentController.AddComponent(new GuiComponent(_guiController, _agsEditor));
_componentController.AddComponent(new InventoryComponent(_guiController, _agsEditor));
_componentController.AddComponent(new DialogsComponent(_guiController, _agsEditor));
_componentController.AddComponent(new ViewsComponent(_guiController, _agsEditor));
_componentController.AddComponent(new CharactersComponent(_guiController, _agsEditor));
_componentController.AddComponent(new CursorsComponent(_guiController, _agsEditor));
_componentController.AddComponent(new FontsComponent(_guiController, _agsEditor));
_componentController.AddComponent(new AudioComponent(_guiController, _agsEditor));
_componentController.AddComponent(new GlobalVariablesComponent(_guiController, _agsEditor));
_componentController.AddComponent(new ScriptsComponent(_guiController, _agsEditor));
_componentController.AddComponent(new PluginsComponent(_guiController, _agsEditor, _pluginEditorController));
_componentController.AddComponent(new RoomsComponent(_guiController, _agsEditor));
_componentController.AddComponent(new TranslationsComponent(_guiController, _agsEditor));
_componentController.AddComponent(new SpeechComponent(_guiController, _agsEditor));
_componentController.AddComponent(new SourceControlComponent(_guiController, _agsEditor));
_componentController.AddComponent(new WelcomeComponent(_guiController, _agsEditor));
_componentController.AddComponent(new StatisticsSenderComponent(_guiController, _agsEditor));
}

public void StartGUI(string[] commandLineArguments)
{
_agsEditor.ApplicationStarted = true;
_guiController.StartGUI(commandLineArguments);
}

private Bitmap CaptureScreenshot()
{
try
{
Form formToCapture = null;
if (Application.OpenForms.Count > 0)
{
formToCapture = Application.OpenForms[0];
}
if (formToCapture != null)
{
Bitmap screenShot = new Bitmap(formToCapture.Width, formToCapture.Height);
Graphics g = Graphics.FromImage(screenShot);
g.CopyFromScreen(formToCapture.DesktopLocation, new Point(0, 0), screenShot.Size);
g.Dispose();
return screenShot;
}
}
catch (Exception)
{
// this error isn't important, we want to concentrate
// on the main exception instead
}
return null;
}

public void UnhandledErrorHandler(Exception ex)
{
try
{
Bitmap screenShot = CaptureScreenshot();
ExceptionDialog dialog = new ExceptionDialog(ex, screenShot);
dialog.ShowDialog();
dialog.Dispose();
screenShot.Dispose();
}
catch
{
_guiController.ShowMessage("An unexpected error occurred. Please post the following information on the AGS Technical Forum." + Environment.NewLine + Environment.NewLine + ex.ToString(), MessageBoxIcon.Stop);
}
_guiController.ShowMessage("A serious error occurred and the AGS Editor may now be in an unstable state. You are STRONGLY ADVISED to shut down the editor and restart it. Before saving your work, make a backup copy of your game folder in case any data has been corrupted.", MessageBoxIcon.Error);
}

private void GUIController_OnEditorShutdown()
{
_componentController.ShutdownComponents();
_nativeProxy.Dispose();
}

}
}
24 changes: 24 additions & 0 deletions Editor/AGS.Editor/Audio/IAudioPreviewer.cs
@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Text;
using AGS.Types;

namespace AGS.Editor
{
public delegate void PlayFinishedHandler(AudioClip clip);

internal interface IAudioPreviewer
{
event PlayFinishedHandler PlayFinished;

bool RequiresPoll { get; }
bool Play(AudioClip clip);
bool IsPlaying();
void Poll();
int GetLengthMs();
int GetPositionMs();
void Pause();
void Resume();
void Stop();
}
}

0 comments on commit de3ac29

Please sign in to comment.