コード例 #1
0
        public ShipProfileItem(SpaceShipType type, bool selected = false)
        {
            _shipType = type;
            Selected  = selected;

            int widthOverTwo  = YnG.Width / 2;
            int heightOverTwo = YnG.Height / 2;

            _border = new YnSprite(new Rectangle(
                                       (int)SpaceGame.GetScaleX(450),
                                       (int)SpaceGame.GetScaleY(150),
                                       (int)SpaceGame.GetScaleX(650),
                                       (int)SpaceGame.GetScaleY(400)),
                                   Color.White);

            Add(_border);

            _container = new YnSprite(new Rectangle(
                                          (int)_border.X + BorderSize,
                                          (int)_border.Y + BorderSize,
                                          _border.Width - BorderSize * 2,
                                          _border.Height - BorderSize - 2), new Color(0, 108, 165));
            Add(_container);

            _shipImage = new YnSprite();

            spaceShipDescription = Registry.SpaceShipDescriptions[(int)_shipType];
        }
コード例 #2
0
        public StarsScrolling()
            : base()
        {
            _background = new YnSprite(new Rectangle(0, 0, YnG.Width, YnG.Height), Color.Black);
            Add(_background);

            _numStars = 100;
        }
コード例 #3
0
ファイル: MenuState.cs プロジェクト: demonixis/SpaceGame-XNA
        public MenuState()
            : base("Codename : SpaceGame", 6)
        {
            // Les elements qui passent sous le menu
            _planetLogo = new YnEntity(Assets.PlanetRed);
            Add(_planetLogo);

            _shipSprite = new YnSprite(Assets.PlayerShipA);
            Add(_shipSprite);

            _kinectLogo = new YnEntity("Misc/kinect");
            Add(_kinectLogo);

            // 3 - Le menu
            string[] itemNames = { "Arcade", "Multiplayers", "Scores", "Options", "Credits", "Exit" };

            int x = (YnG.Width / 2) - MenuItem.BigItemWidth / 2;
            int y = 0;

            for (int i = 0; i < 3; i++)
            {
                y = (int)SpaceGame.GetScaleY(185) + i * MenuItem.BigItemHeight * 2;

                MenuItem item = new MenuItem(itemNames[i], new Rectangle(
                                                 (int)(x),
                                                 (int)(y),
                                                 MenuItem.BigItemWidth,
                                                 MenuItem.BigItemHeight),
                                             i,
                                             i == 0 ? true : false);

                item.ItemTextSize  = SpaceGame.GetScale();
                item.MouseClicked += new EventHandler <MouseClickEntityEventArgs>(item_MouseJustClicked);
                item.MouseLeave   += new EventHandler <MouseLeaveEntityEventArgs>(item_MouseLeave);
                item.MouseOver    += new EventHandler <MouseOverEntityEventArgs>(item_MouseOver);
                Add(item);

                items.Add(item);
            }

            x = 0;
            y = YnG.Height - (MenuItem.SmallItemHeight + MenuItem.SmallItemHeight / 3);

            for (int j = 3; j < 6; j++)
            {
                x = (int)SpaceGame.GetScaleX(350) + (j - 3) * MenuItem.SmallItemWidth * 2;

                MenuItem item = new MenuItem(itemNames[j], new Rectangle(x, y, MenuItem.SmallItemWidth, MenuItem.SmallItemHeight), j, false);
                item.ItemTextSize  = new Vector2(0.6f) * SpaceGame.GetScale();
                item.MouseClicked += new EventHandler <MouseClickEntityEventArgs>(item_MouseJustClicked);
                item.MouseLeave   += new EventHandler <MouseLeaveEntityEventArgs>(item_MouseLeave);
                item.MouseOver    += new EventHandler <MouseOverEntityEventArgs>(item_MouseOver);
                Add(item);

                items.Add(item);
            }
        }
コード例 #4
0
        public void GenerateMap(int[,] tiles)
        {
            _tiles = tiles != null ? tiles : _tiles;
            Clear();

            DetermineCeilSize();

            _ceilSize = (int)(YnG.Width / _mapWidth * _zoomFactor);

            X = YnG.Width - (_mapWidth * _ceilSize);
            Y = 0;

            Rectangle rectangle = Rectangle.Empty;
            Color     color     = _groundColor;

            Rectangle rectanglePlayer = new Rectangle(0, 0, _ceilSize, _ceilSize);

            for (int y = 0; y < _mapHeight; y++)
            {
                for (int x = 0; x < _mapWidth; x++)
                {
                    rectangle = new Rectangle((int)X + x * _ceilSize, (int)Y + y * _ceilSize, _ceilSize, _ceilSize);
                    YnSprite ceil = null;

                    switch (_tiles[x, y])
                    {
                    case 1: color = _groundColor; break;

                    case 2: color = _wallColor; break;

                    case 5: color = GameConfiguration.EnabledMinimapItems ? Color.Blue : _groundColor; break;

                    case 6: color = GameConfiguration.EnabledMinimapItems ? Color.Orange : _groundColor; break;

                    case 8: color = Color.Red; break;

                    case 9:
                        rectanglePlayer.X = x;
                        rectanglePlayer.Y = y;
                        color             = _groundColor;
                        break;
                    }
                    ceil = new YnSprite(rectangle, color);
                    Add(ceil);
                }
            }

            _player = new YnSprite(rectanglePlayer, Color.Green);
            Add(_player);

            foreach (YnEntity sceneObject in Members)
            {
                sceneObject.Alpha = 0.6f;
            }
        }
コード例 #5
0
        private YnSprite createPlanet(string asset, Vector2 position)
        {
            YnSprite planet = new YnSprite(asset);

            planet.Position          = position;
            planet.Viewport          = new Rectangle(0, 0, YnG.Width, YnG.Height * 12);
            planet.AllowAcrossScreen = true;
            planet.Velocity          = new Vector2(0.1f, 1.0f);
            planet.Scale             = new Vector2(1.5f, 1.5f);

            return(planet);
        }
コード例 #6
0
        /// <summary>
        /// Action when a button is released
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected virtual void Pad_Released(object sender, MouseReleaseEntityEventArgs e)
        {
            YnSprite button = sender as YnSprite;

            if (button != null)
            {
                PadButtons direction = GetDirection(button.Name);
                VirtualPadPressedEventArgs vpEvent = new VirtualPadPressedEventArgs(direction);

                OnReleased(vpEvent);
            }
        }
コード例 #7
0
        public MessageBox(int width, int height)
        {
            _alpha = 0.6f;

            _rectangle = new Rectangle(0, 0, width, height);

            _container = new YnSprite("UI/MessageBox");
            _container.LoadContent();

            Add(_container);

            CenterToScreen(width, height);
        }
コード例 #8
0
        public override void Initialize()
        {
            base.Initialize();

            Random rand = new Random(DateTime.Now.Millisecond);

            for (int i = 0; i < _numStars; i++)
            {
                Color     color     = Color.Gray;
                Rectangle rectangle = new Rectangle(0, 0, 2, 2);

                switch (rand.Next(6))
                {
                case 0:
                    rectangle = new Rectangle(0, 0, 1, 1);
                    color     = Color.Yellow;
                    break;

                case 1:
                    rectangle = new Rectangle(0, 0, 2, 2);
                    color     = Color.Yellow;
                    break;

                case 2:
                    rectangle = new Rectangle(0, 0, 1, 1);
                    color     = Color.DarkGray;
                    break;

                case 3:
                    rectangle = new Rectangle(0, 0, 2, 2);
                    color     = Color.DarkGray;
                    break;

                case 4:
                    rectangle = new Rectangle(0, 0, 1, 1);
                    color     = Color.AntiqueWhite;
                    break;

                case 5:
                    rectangle = new Rectangle(0, 0, 2, 2);
                    color     = Color.AntiqueWhite;
                    break;
                }

                YnSprite star = new YnSprite(rectangle, color);
                star.Position          = new Vector2(rand.Next(YnG.Width), rand.Next(YnG.Height));
                star.Velocity          = new Vector2(0, (float)(rand.NextDouble() * 1.5));
                star.AllowAcrossScreen = true;
                Add(star);
            }
        }
コード例 #9
0
        // TODO ajouter un PlayerBundle ou un PlayerInfo ou un truc dans ce genre
        public SpacePlayer(PlayerIndex playerIndex, SpaceShipDescription description)
            : base()
        {
            AssetName = description.AssetName;

            _playerIndex = playerIndex;

            _shipSpeed = description.ShipSpeed;

            _playerProfile = new PlayerProfile(String.Format("Player {0}", ((int)playerIndex) + 1), (int)playerIndex);

            _firstWeaponType  = (WeaponType)description.PrimaryWeaponId;
            _secondWeaponType = (WeaponType)description.SecondaryWeaponId;

            _bonusLevel = BonusLevel.None;

            VelocityMax       = 0.95f;
            ForceInsideScreen = true;

            _live = 3;

            // TODO : case
            _shields = new YnSprite("Ship/Shield/Shields");

            _weaponManager              = new WeaponManager(this);
            _weaponManager.Initialized  = true;
            _weaponManager.AssetsLoaded = true;

            LayerDepth = 0.4f;

            _playerTouchedTimer            = new YnTimer(1500, 0);
            _playerTouchedTimer.Completed += _playerTouchedTimer_Completed;

#if COMPLETE
            kinect = KinectSensorController.Instance;

            if (_playerIndex == PlayerIndex.One)
            {
                _kinectPlayerIndex = KinectPlayerIndex.One;
            }

            else if (_playerIndex == PlayerIndex.Two)
            {
                _kinectPlayerIndex = KinectPlayerIndex.Two;
            }
#endif

            LoadContent();
        }
コード例 #10
0
        public ProgressBar(int x, int y, string labelText)
        {
            borderSize = 1;

            backgroundBar = new YnSprite(new Rectangle(x, y, 130, 20), Color.White);
            Add(backgroundBar);

            foregroundBar = new YnSprite(new Rectangle(x + borderSize, y + borderSize, backgroundBar.Width - (2 * borderSize), backgroundBar.Height - (2 * borderSize)), Color.Blue);
            Add(foregroundBar);

            label       = new YnText("Fonts/HUD", labelText);
            label.Scale = new Vector2(0.80f, 0.80f);
            label.Color = Color.White;
            Add(label);
        }
コード例 #11
0
ファイル: MenuItem.cs プロジェクト: demonixis/TheLostMaze-XNA
        public MenuItem(string text, int itemPosition, bool selected)
        {
            _itemPosition = itemPosition;
            _selected     = selected;

            _buttonNormal = new YnSprite(Vector2.Zero, "Misc/button");
            Add(_buttonNormal);

            _contentText       = new YnText("Font/kozuka_20", text);
            _contentText.Color = Color.White;
            Add(_contentText);

            MouseOver  += _buttonNormal_MouseOver;
            MouseLeave += _buttonNormal_MouseLeave;
        }
コード例 #12
0
        public InteriorBackground()
            : base()
        {
            position   = 0;
            borderSize = 75;

            borderLeft  = new YnSprite(new Rectangle(0, 0, borderSize, YnG.Height), new Color(64, 64, 64));
            borderRight = new YnSprite(new Rectangle(YnG.Width - borderSize, 0, borderSize, YnG.Height), new Color(64, 64, 64));

            angularLeft  = new YnSprite(new Rectangle(borderSize, 0, borderSize, YnG.Height), new Color(48, 48, 48));
            angularRight = new YnSprite(new Rectangle(YnG.Width - (2 * borderSize), 0, borderSize, YnG.Height), new Color(48, 48, 48));

            center = new YnSprite(new Rectangle((2 * borderSize), 0, YnG.Width - (4 * borderSize), YnG.Height), new Color(32, 32, 32));

            _playableViewport = new Rectangle((int)angularLeft.X + angularLeft.Width / 2, 0, (int)angularRight.X + angularRight.Width / 2, YnG.Height);
        }
コード例 #13
0
        /// <summary>
        /// Initialize with default generated textures
        /// </summary>
        protected void InitializeWithoutTextures()
        {
            Color normal = Color.LightSteelBlue;
            Color strafe = Color.LightSlateGray;

            _upPad    = new YnSprite(_inputRectangle, normal);
            _downPad  = new YnSprite(_inputRectangle, normal);
            _leftPad  = new YnSprite(_inputRectangle, strafe);
            _rightPad = new YnSprite(_inputRectangle, strafe);

            _strafeLeftPad  = new YnSprite(_inputRectangle, normal);
            _strafeRightPad = new YnSprite(_inputRectangle, normal);

            _buttonActionA = new YnSprite(_inputRectangle, Color.Crimson);
            _buttonActionB = new YnSprite(_inputRectangle, Color.SpringGreen);
            _buttonPause   = new YnSprite(_inputRectangle, Color.SlateBlue);
        }
コード例 #14
0
        public VirtualPad()
        {
            _margin = new Vector2(3, 2);

            string path = String.Format("{0}/{1}/", "Misc/Pad", (GameConfiguration.VirtualPadStyle == VirtualPadStyle.Modern) ? "Modern" : "Normal");

            _upPad      = new YnSprite(path + "kbup");
            _upPad.Name = "Button_" + ((int)ControlDirection.Up).ToString();
            Add(_upPad);

            _downPad      = new YnSprite(path + "kbdown");
            _downPad.Name = "Button_" + ((int)ControlDirection.Down).ToString();
            Add(_downPad);

            _strafeLeftPad      = new YnSprite(path + "kbstrleft");
            _strafeLeftPad.Name = "Button_" + ((int)ControlDirection.StrafeLeft).ToString();
            Add(_strafeLeftPad);

            _strafeRightPad      = new YnSprite(path + "kbstrright");
            _strafeRightPad.Name = "Button_" + ((int)ControlDirection.StrafeRight).ToString();
            Add(_strafeRightPad);

            _leftPad      = new YnSprite(path + "kbleft");
            _leftPad.Name = "Button_" + ((int)ControlDirection.Left).ToString();
            Add(_leftPad);

            _rightPad      = new YnSprite(path + "kbright");
            _rightPad.Name = "Button_" + ((int)ControlDirection.Right).ToString();
            Add(_rightPad);

            foreach (YnSprite sprite in this)
            {
                sprite.Parent = null;
                if (GameConfiguration.ControlMode == ControlMode.New)
                {
                    sprite.MouseClick += new EventHandler <MouseClickEntityEventArgs>(Pad_Click);
                }
                else
                {
                    sprite.MouseClicked += new EventHandler <MouseClickEntityEventArgs>(Pad_Click);
                }

                sprite.Alpha = 0.7f;
            }
        }
コード例 #15
0
        public PopupState(string name)
            : base(name, false)
        {
            int y = YnG.Height / 2 - ((YnG.Height / 4) / 2);

            _background       = new YnSprite(new Rectangle(0, y, YnG.Width, (int)(ScreenHelper.GetScaleY(300))), Color.WhiteSmoke);
            _background.Alpha = 0.9f;
            Add(_background);

            _headerBackground = new YnEntity(new Rectangle((int)_background.X, (int)_background.Y, YnG.Width, (int)ScreenHelper.GetScaleY(50)), Color.DarkGray);
            Add(_headerBackground);

            _title       = new YnText(Assets.FontKozuka30, "Fin de partie");
            _title.Color = Color.White;
            _title.Scale = ScreenHelper.GetScale() * 1.25f;
            Add(_title);

            _content       = new YnText(Assets.FontKozuka20, "Vous avez terminé le niveau, que voulez vous faire ?");
            _content.Color = Color.Black;
            _content.Scale = ScreenHelper.GetScale() * 1.1f;
            Add(_content);

            _waitMessage        = new YnText(Assets.FontKozuka30, "Chargement en cours...");
            _waitMessage.Color  = Color.White;
            _waitMessage.Scale  = ScreenHelper.GetScale() * 1.2f;
            _waitMessage.Active = false;
            Add(_waitMessage);

            _itemActionA               = new MessageBoxButton(MessageBoxButtonType.Cancel, "Menu");
            _itemActionA.Position      = new Vector2(_background.Width / 3, _background.Y + _background.Height - ScreenHelper.GetScaleY(100));
            _itemActionA.MouseClicked += (s, e) => OnActionMenu(new MessageBoxEventArgs(false, true));
            _itemActionA.Scale         = ScreenHelper.GetScale();
            Add(_itemActionA);

            _itemActionB               = new MessageBoxButton(MessageBoxButtonType.Validate, "Suivant");
            _itemActionB.Position      = new Vector2((_background.Width / 3) * 2, _itemActionA.Y);
            _itemActionB.MouseClicked += (s, e) => OnActionMenu(new MessageBoxEventArgs(true, false));
            _itemActionB.Scale         = ScreenHelper.GetScale();
            Add(_itemActionB);

            _enabled = true;
        }
コード例 #16
0
ファイル: MenuItem.cs プロジェクト: demonixis/SpaceGame-XNA
        public MenuItem(string text, Rectangle rectangle, int position, bool selected = false)
        {
            _itemPosition = position;
            _selected     = selected;

            SetRectangle(ref rectangle);

            _background       = new YnSprite(Rectangle, BorderColor);
            _background.Alpha = 0.0f;
            Add(_background);

            _foreground = new YnSprite(new Rectangle((int)X, (int)Y, rectangle.Width - BigBorderSize, rectangle.Height - BigBorderSize), BackgroundColor);
            Add(_foreground);

            _contentText       = new YnText("Fonts/Menu", text);
            _contentText.Color = Color.White;
            Add(_contentText);

            _transition = new YnTransitionEffect(350.0f, 250.0f);
        }
コード例 #17
0
ファイル: WeaponItem.cs プロジェクト: demonixis/SpaceGame-XNA
        public WeaponItem(int x, int y, string texte, Color backgroundColor, Color foregroundColor, string logoAsset, WeaponType id, bool selected = false)
        {
            X = x;
            Y = y;

            Identifier = id;

            _selector         = new YnSprite(new Rectangle((int)X, (int)Y, 130, 20), foregroundColor);
            _selector.Visible = selected;
            _selector.Color  *= 0.35f;
            Add(_selector);

            _label       = new YnText("Fonts/HUD", texte, new Vector2(X, Y), Color.Yellow);
            _label.Scale = new Vector2(0.75f, 0.75f);
            Add(_label);

            _image       = new YnSprite(new Vector2(X, Y), logoAsset);
            _image.Scale = new Vector2(0.4f);
            Add(_image);
        }
コード例 #18
0
        private void Pad_Click(object sender, MouseClickEntityEventArgs e)
        {
            YnSprite button = sender as YnSprite;

            if (button != null)
            {
                string [] temp  = button.Name.Split(new char [] { '_' });
                int       index = int.Parse(temp [1].ToString());

                ControlDirection           direction = (ControlDirection)index;
                VirtualPadPressedEventArgs vpEvent   = new VirtualPadPressedEventArgs(direction);

                if (e.JustClicked)
                {
                    OnJustPressed(vpEvent);
                }
                else
                {
                    OnPressed(vpEvent);
                }
            }
        }
コード例 #19
0
        public void AddExplosion(Rectangle rectangle)
        {
            YnSprite explode;

            int recycledSize = _recycled.Count;

            if (recycledSize > 0)
            {
                explode = Members.ElementAt(_recycled.Pop()) as YnSprite;

                explode.Position = new Vector2(
                    (rectangle.X + rectangle.Width / 2) - (explode.Width / 5) / 2,
                    (rectangle.Y + rectangle.Height / 2) - explode.Height / 2);

                explode.Revive();
            }
            else
            {
                explode = new YnSprite("SFX/Fx_Fireball");
                explode.LoadContent();
                explode.PrepareAnimation(94, 94);
                explode.AddAnimation("0", new int[] { 0, 1, 2, 3, 4 }, 50, false);
                explode.Scale = new Vector2(0.75f);

                explode.Position = new Vector2(
                    (rectangle.X + rectangle.Width / 2) - (explode.Width / 5) / 2,
                    (rectangle.Y + rectangle.Height / 2) - explode.Height / 2);

                // On supprime l'animation quand elle est terminée
                explode.GetAnimation("0").AnimationComplete += (sender, e) =>
                {
                    explode.Kill();
                    _recycled.Push(Members.IndexOf(explode));
                };

                Add(explode);
            }
        }
コード例 #20
0
ファイル: YnVirtualPad.cs プロジェクト: shaoleibo/YnaEngine
        /// <summary>
        /// Initialize with default generated textures
        /// </summary>
        protected void InitializeWithoutTextures()
        {
            Color normal = Color.LightSteelBlue;
            Color strafe = Color.LightSlateGray;

            _upPad = new YnSprite(_inputRectangle, normal);
            _downPad = new YnSprite(_inputRectangle, normal);
            _leftPad = new YnSprite(_inputRectangle, strafe);
            _rightPad = new YnSprite(_inputRectangle, strafe);

            _strafeLeftPad = new YnSprite(_inputRectangle, normal);
            _strafeRightPad = new YnSprite(_inputRectangle, normal);

            _buttonActionA = new YnSprite(_inputRectangle, Color.Crimson);
            _buttonActionB = new YnSprite(_inputRectangle, Color.SpringGreen);
            _buttonPause = new YnSprite(_inputRectangle, Color.SlateBlue);
        }