public MainWindow()
        {
            InitializeComponent();

            _model = DrawingManager.Instance;
            _model.SetCanvas(DrawingField);

            _model.ImageCurrentStatusLost  += _model_ImageCurrentStatusLost;
            _model.ImageCurrentStatusLost  += DeactivateAllButtons;
            _model.ImageCurrentStatusGot   += _model_ImageCurrentStatusGot;
            _model.ImageCurrentStatusGot   += ActivateAllButtons;
            _model.FigureCurrentStatusLost += _model_FigureCurrentStatusLost;
            _model.FigureCurrentStatusGot  += _model_FigureCurrentStatusGot;
            _model.FireCurrentElementsEvents();

            _statusBarOptions = new Dictionary <EditorMode, string>()
            {
                { EditorMode.SwitchElements, "Click on objects to focus them" },
                { EditorMode.DrawImage, "Draw new Image by mouse" },
                { EditorMode.DrawTriangle, "Draw new triangle by mouse" },
                { EditorMode.DrawRegularTriangle, "Draw new regular triagnle by mouse" },
                { EditorMode.DrawRectangularTriangle, "Draw new rectangular triangle by mouse" },
                { EditorMode.MoveFigure, "Move focused figure using your mouse" },
                { EditorMode.MoveImage, "Move focused Image using your mouse" },
                { EditorMode.RotateFigure, "Rotate focused figure around arbitrary center" },
                { EditorMode.ScaleFigure, "Scale focused image relatively to an center" },
                { EditorMode.MergeImages, "Merge some other image into focused one" }
            };
            _model.EditorModeChanged += _model_EditorModeChanged;
        }
        public void Run()
        {
            sprite = new Sprite(pixel);

            EntityConstructor entityConstructor = new EntityConstructor();

            EntityManager  = entityConstructor.Instantiate("1", () => window.Close());
            InputManager   = new MouseClick();
            IUpdateVisitor = new DefaultUpdateVisitor(InputManager, entityConstructor);


            IDrawingManager = new SFMLDrawingAdapter(window);
            IDrawVisitor    = new DefaultDrawVisitor(IDrawingManager);

            //Database.Set_connection();
            //Database.ExecuteData("create table if exists WinsLosses (ID INTEGER PRIMARY KEY, Wins INTEGER, Losses INTEGER)");
            //Database.ExecuteData("insert into WinsLosses (ID, Wins, Losses) values (1,0,0)");
            //Database.ReadData("select * from WinsLosses");

            window.SetActive();

            while (window.IsOpen)
            {
                window.Clear();
                window.DispatchEvents();
                Draw();
                Update();
                window.Display();
            }
        }
예제 #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ScreenManager"/> class.
        /// </summary>
        /// <param name="game">The <see cref="IGameContainer"/>.</param>
        /// <param name="skinManager">The <see cref="ISkinManager"/> used to manage all the general skinning
        /// between all screens.</param>
        /// <param name="defaultFontName">The asset name of the default font.</param>
        /// <param name="defaultFontSize">The size of the default font.</param>
        /// <exception cref="ArgumentNullException"><paramref name="game"/> is null.</exception>
        /// <exception cref="ArgumentNullException"><paramref name="skinManager"/> is null.</exception>
        public ScreenManager(IGameContainer game, ISkinManager skinManager, string defaultFontName, int defaultFontSize)
        {
            if (game == null)
            {
                throw new ArgumentNullException("game");
            }
            if (skinManager == null)
            {
                throw new ArgumentNullException("skinManager");
            }

            _game = game;

            _game.RenderWindowChanged -= _game_RenderWindowChanged;
            _game.RenderWindowChanged += _game_RenderWindowChanged;

            _skinManager = skinManager;

            _content        = ContentManager.Create();
            _drawingManager = new DrawingManager(_game.RenderWindow);

            _audioManager = Audio.AudioManager.GetInstance(_content);

            // Add event listeners to the input-related events
            _game.KeyPressed -= _game_KeyPressed;
            _game.KeyPressed += _game_KeyPressed;

            _game.KeyReleased -= _game_KeyReleased;
            _game.KeyReleased += _game_KeyReleased;

            _game.TextEntered -= _game_TextEntered;
            _game.TextEntered += _game_TextEntered;

            _game.MouseButtonPressed -= _game_MouseButtonPressed;
            _game.MouseButtonPressed += _game_MouseButtonPressed;

            _game.MouseButtonReleased -= _game_MouseButtonReleased;
            _game.MouseButtonReleased += _game_MouseButtonReleased;

            _game.MouseMoved -= _game_MouseMoved;
            _game.MouseMoved += _game_MouseMoved;

            _game.GainedFocus -= _game_GainedFocus;
            _game.GainedFocus += _game_GainedFocus;

            _game.LostFocus -= _game_LostFocus;
            _game.LostFocus += _game_LostFocus;

            // Load the global content used between screens
            _defaultFont = _content.LoadFont(defaultFontName, defaultFontSize, ContentLevel.Global);

            // Tell the other screens to load their content, too
            foreach (var screen in _screens.Values)
            {
                screen.LoadContent();
            }
        }
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch     = new SpriteBatch(GraphicsDevice);
            IDrawingManager = new MonogameDrawingAdapter(spriteBatch, Content);
            IDrawVisitor    = new DefaultDrawVisitor(IDrawingManager);

            // TODO: use this.Content to load your game content here
        }
        private void ActivateAllButtons(IDrawingManager manager, Border image)
        {
            var buttons = DrawButtonsToolbar.Items;

            foreach (var button in buttons)
            {
                (button as UIElement).IsEnabled = true;
            }
        }
예제 #6
0
        internal GameObjectFactory(IContentManager contentManager, IGraphicsFactory graphicsFactory, IGravitySimulator gravitySimulator, IDrawingManager drawingManager, IUniverse universe, IShipComponentFactory shipComponentFactory)
        {
            _contentManager = contentManager;
            _graphicsFactory = graphicsFactory;
            _gravitySimulator = gravitySimulator;
            _drawingManager = drawingManager;
            _universe = universe;

            _shipComponentFactory = shipComponentFactory;
            _gameObjects = new List<IGameObject>();
        }
예제 #7
0
 public StoryViewModel(IGraph sg, DataTable dt, StoryType storyType)
 {
     if (storyType == StoryType.TIMELINE)
     {
         _dm = new TimelineDrawingManager(sg.GetLayout(), dt, storyType);
     }
     else if (storyType == StoryType.STORYGRAPH || storyType == StoryType.STORYLINES || storyType == StoryType.STORYLINESWU)
     {
         _dm = new StoryDrawingManager(sg.GetLayout(), dt, storyType);
     }
 }
 private void _model_FigureCurrentStatusGot(IDrawingManager manager, Shape figure)
 {
     if (!manager.IsOperationInProcess)
     {
         figure.Stroke          = manager.Preferences.CurrentFigureStroke;
         figure.StrokeThickness = manager.Preferences.CurrentFigureStrokeThickness;
     }
     else
     {
         _model_FigureCurrentStatusLost(manager, figure);
     }
 }
        private void DeactivateAllButtons(IDrawingManager manager, Border image)
        {
            var buttons = DrawButtonsToolbar.Items;

            foreach (var button in buttons)
            {
                if (!(button == NewImage || button == SwitchElements))
                {
                    (button as UIElement).IsEnabled = false;
                }
            }
        }
예제 #10
0
        internal GameEngine(IUniverse universe, IGravitySimulator gravitySimulator, IGameObjectFactory gameObjectFactory, IKeyboardHandler keyboardHandler, IActionHandler actionHandler, IDrawingManager drawingManager)
        {
            _universe = universe;
            _drawingManager = drawingManager;
            _gravitySimulator = gravitySimulator;

            _gameObjectFactory = gameObjectFactory;

            _keyboardHandler = keyboardHandler;
            _actionHandler = actionHandler;
            _controllerFactory = new ControllerFactory(_keyboardHandler);
            actionHandler.RegisterTriggerAction(Keys.Space, () => _paused = !_paused);
        }
예제 #11
0
 private void Window_Loaded(object sender, RoutedEventArgs e)
 {
     ;
     d              = new ObjectDiagram();
     host.Width     = 100;
     host.Height    = 100;
     deviceManager  = new WinFormsDeviceManager(this.host.Handle);
     drawingManager = new DrawingManager(deviceManager, OnRender);
     drawingManager.Resize(new SharpDX.Size2(DoubleToInt(host.Width), DoubleToInt(host.Height)));
     t1                = new System.Timers.Timer();
     t1.Interval       = 100;
     t1.Elapsed       += (c, q) => { i += 1; };
     host.SizeChanged += (c, ex) => { drawingManager.Resize(new SharpDX.Size2(DoubleToInt(host.Width), DoubleToInt(host.Height))); };
     t1.Start();
 }
예제 #12
0
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            _spriteBatch = new SpriteBatch(GraphicsDevice);
            Font         = Content.Load <SpriteFont>("font");

            drawAdapter    = new MonoGameDrawManager(_spriteBatch);
            _drawVisitor   = new DrawVisitor(drawAdapter);
            _updateVisitor = new UpdateVisitor(drawAdapter);

            mainScreenElements  = screenFactory.CreateHomeCollectionScreen();
            labelScreenElements = screenFactory.CreateLabelCollectionScreen();
            inputScreenElements = screenFactory.CreateInputCollectionScreen();

            collection = screenFactory.CreateHomeCollectionScreen();
        }
 private void _model_ImageCurrentStatusGot(IDrawingManager manager, Border image)
 {
     if (!manager.IsOperationInProcess)
     {
         image.BorderBrush     = manager.Preferences.CurrentImageBorderBrush;
         image.BorderThickness = manager.Preferences.CurrentImageBorderThickness;
         if (image.Child != null)
         {
             (image.Child as Canvas).Background = manager.Preferences.ImageCanvasBackground;
         }
     }
     else
     {
         _model_ImageCurrentStatusLost(manager, image);
     }
 }
예제 #14
0
        public void Draw(IShape shape)
        {
            //тук проверката със "is" e проста затова е добра практикра
            IDrawingManager drawer = null;

            if (shape is Circle)
            {
                drawer = new CirleDrawer();
            }
            else if (shape is Rectangle)
            {
                drawer = new RectangleDrawer();
            }

            drawer.Draw(shape);
        }
예제 #15
0
 private void Form2_Load(object sender, EventArgs e)
 {
     //DockPanel d = new DockPanel();
     //d.Parent = this;
     //d.Dock = DockStyle.Fill;
     //d.Theme = new VS2012LightTheme();
     //new DockContent() { Text = "hello", CloseButton = false }.Show(d, DockState.Document);
     //new DockContent() { Text = "Дерево объектов" }.Show(d, DockState.DockRight);
     //new DockContent() { Text = "Свойства" }.Show(d, DockState.DockLeftAutoHide);
     this.d         = new ObjectDiagram();
     deviceManager  = new WinFormsDeviceManager(panel1.Handle);
     drawingManager = new DrawingManager(deviceManager, OnRender);
     drawingManager.Resize(new SharpDX.Size2(panel1.Width, panel1.Height));
     panel1.Resize    += (c, ex) => { drawingManager.Resize(new SharpDX.Size2(panel1.Width, panel1.Height)); };
     panel1.Paint     += panel1_Paint;
     panel1.MouseMove += panel1_MouseMove;
 }
예제 #16
0
        internal SpaceWar2Game()
        {
            _contentManager = new ContentManagerWrapper(Content.ServiceProvider, "Content");
            var graphicsDeviceManager = new GraphicsDeviceManager(this);
            _graphicsDevice = new GraphicsDeviceWrapper(graphicsDeviceManager);

            _universe = Universe.CreateDefault();
            _drawingManager = new DrawingManager(_universe);
            _gravitySimulator = new GravitySimulator();
            _shipComponentFactory = new ShipComponentFactory();
            _graphicsFactory = new GraphicsFactory();

            _gameObjectFactory = new GameObjectFactory(_contentManager, _graphicsFactory, _gravitySimulator, _drawingManager, _universe, _shipComponentFactory);

            _keyboardHandler = new KeyboardHandler(new KeyboardWrapper());

            var actionHandler = new ActionHandler(_keyboardHandler);

            _gameEngine = new GameEngine(_universe, _gravitySimulator, _gameObjectFactory, _keyboardHandler, actionHandler, _drawingManager);

            SetUpActions(actionHandler);
        }
 private void _model_EditorModeChanged(IDrawingManager manager, EditorMode newMode)
 {
     StatusBarText.Text = _statusBarOptions[newMode];
 }
예제 #18
0
        public void SetUp()
        {
            _universe = Substitute.For<IUniverse>();
            _gravitySimulator = Substitute.For<IGravitySimulator>();
            _gameObjectFactory = Substitute.For<IGameObjectFactory>();
            _keyboardHandler = Substitute.For<IKeyboardHandler>();
            _actionHandler = Substitute.For<IActionHandler>();
            _drawingManager = Substitute.For<IDrawingManager>();

            _gameEngine = new GameEngine(_universe, _gravitySimulator, _gameObjectFactory, _keyboardHandler, _actionHandler, _drawingManager);
        }
 private void _model_ImageCurrentStatusLost(IDrawingManager manager, Border image)
 {
     image.BorderBrush     = manager.Preferences.ImageBorder;
     image.BorderThickness = manager.Preferences.ImageBorderThickness;
 }
 private void _model_FigureCurrentStatusLost(IDrawingManager manager, Shape figure)
 {
     figure.Stroke          = manager.Preferences.FigureStroke;
     figure.Fill            = manager.Preferences.FigureFilling;
     figure.StrokeThickness = manager.Preferences.FigureStrokeThickness;
 }
예제 #21
0
 public MapViewModel(IGraph sg, DataTable dt, StoryType storyType)
 {
     _dm = new MapDrawingManager(sg.GetLayout(), dt, storyType);
 }
예제 #22
0
 public StoryViewModel(IGraph sg, DataTable dt, StoryType storyType, ForceParameters f)
 {
     _dm = new StoryDrawingManager(sg.GetLayout(), dt, storyType, f);
 }
        public void SetUp()
        {
            _contentManager = Substitute.For<IContentManager>();
            _graphicsFactory = Substitute.For<IGraphicsFactory>();
            _gravitySimulator = Substitute.For<IGravitySimulator>();
            _drawingManager = Substitute.For<IDrawingManager>();
            _universe = Substitute.For<IUniverse>();
            _shipComponentFactory = Substitute.For<IShipComponentFactory>();

            _gameObjectFactory = new GameObjectFactory(_contentManager, _graphicsFactory, _gravitySimulator, _drawingManager, _universe, _shipComponentFactory);
        }
예제 #24
0
 public DefaultDrawVisitor(IDrawingManager drawing_manager)
 {
     this.drawing_manager = drawing_manager;
 }
예제 #25
0
 public DrawVisitor(IDrawingManager adapter)
 {
     this.drawAdapter = adapter;
 }
 /// <summary>
 /// LoadContent will be called once per game and is the place to load
 /// all of your content.
 /// </summary>
 protected override void LoadContent()
 {
     spriteBatch     = new SpriteBatch(GraphicsDevice);
     IDrawingManager = new MonogameDrawingAdapter(spriteBatch, Content);
     IDrawVisitor    = new DefaultDrawVisitor(IDrawingManager);
 }
 public UpdateVisitor(IDrawingManager adapter)
 {
     this.adapter = adapter;
 }