コード例 #1
0
        public override void Bind(Entity entity, Main main, bool creating = false)
        {
            Transform transform = entity.GetOrCreate <Transform>("Transform");

            AnimatedModel model = entity.GetOrCreate <AnimatedModel>("Model");

            model.MapContent.Value = true;

            AnimatedProp prop = entity.GetOrCreate <AnimatedProp>("AnimatedProp");

            this.SetMain(entity, main);

            VoxelAttachable.MakeAttachable(entity, main).EditorProperties();

            model.EditorProperties();

            model.Add(new Binding <Matrix>(model.Transform, transform.Matrix));

            entity.Add("Visible", model.Enabled);
            ListProperty <string> clips = null;

            if (main.EditorEnabled)
            {
                clips = new ListProperty <string>();
                model.Add(new ChangeBinding <string>(model.Filename, delegate(string old, string value)
                {
                    if (model.IsValid)
                    {
                        clips.Clear();
                        clips.AddAll(model.Clips.Keys);
                    }
                }));
            }
            entity.Add("Clip", prop.Clip, new PropertyEntry.EditorData {
                Options = clips,
            });
            entity.Add("Loop", prop.Loop);
            entity.Add("Enabled", prop.Enabled);
            entity.Add("Enable", prop.Enable);
            entity.Add("Disable", prop.Disable);
        }
コード例 #2
0
        protected override void OnLoad(EventArgs e)
        {
            _drawingBuffer = new Pixel[_viewPort.Width * _viewPort.Height + 1];
            _zBuffer       = new double[_viewPort.Width];

            _resourceManager = ResourceManager.Instance;
            _resourceManager.ReadResourceFile("testlevel");
            _worldMap = _resourceManager.WorldMap;
            _textures = _resourceManager.Textures;

            _player          = new Player();
            _player.Position = new Position(22, 12, -1, 0);
            _player.Movement = new Movement();
            _player.Weapon   = new Weapon(200, 200, new int[] { 15 }, _windowSize.Width - 260);
            _player.Camera   = new Camera(0, 0.66);



            _props = new List <Prop>();
            foreach (var prop in _resourceManager.Props)
            {
                var propToAdd = new Prop();
                propToAdd.Position = new Position(prop.Position.PosX, prop.Position.PosY, 0, 0);
                propToAdd.Sprite   = new Sprite(prop.Sprite.Texture);

                if (_resourceManager.AnimatedSprites.ContainsKey(Array.IndexOf(_resourceManager.Props, prop)))
                {
                    propToAdd          = new AnimatedProp();
                    propToAdd.Position = new Position(prop.Position.PosX, prop.Position.PosY, 0, 0);
                    propToAdd.Sprite   = new Sprite(prop.Sprite.Texture);
                    (propToAdd as AnimatedProp).Animation = new Animation(_resourceManager.AnimatedSprites[Array.IndexOf(_resourceManager.Props, prop)], AnimationType.Movement);
                }

                _props.Add(propToAdd);
            }

            AnimatedProp enemyProp = _props[0] as AnimatedProp;

            _props[0]          = new Enemy();
            _props[0].Position = enemyProp.Position;
            _props[0].Sprite   = enemyProp.Sprite;
            (_props[0] as Enemy).CurrentAnimation = enemyProp.Animation;

            _spriteNumber = _props.Count;

            //setup input
            Keyboard.KeyDown += new EventHandler <KeyboardKeyEventArgs>(KeyboardKeyDown);
            Keyboard.KeyUp   += new EventHandler <KeyboardKeyEventArgs>(KeyboardKeyUp);

            //setup drawing mode
            GL.MatrixMode(MatrixMode.Projection);
            GL.LoadIdentity();
            GL.Ortho(0, _windowSize.Width, _windowSize.Height, 0, 0, 1);
            GL.MatrixMode(MatrixMode.Modelview);

            //init lookup
            _distLookUp = new Dictionary <int, double>();
            for (int y = 0; y < _viewPort.Height; y++)
            {
                _distLookUp.Add(y, _viewPort.Height / (2.0 * y - _viewPort.Height));
            }
        }
コード例 #3
0
        public override void Build()
        {
            for (int y = 0; y < Map.Height; y++)
            {
                for (int x = 0; x < Map.Width; x++)
                {
                    Tile tile = null;

                    if (Random.NextDouble() < 0.3)
                    {
                        if (Random.NextDouble() < 0.7)
                        {
                            tile = GetRandomTile("tree_dead_a", "tree_dead_b");
                        }
                        else
                        {
                            tile = GetRandomTile("tree_a", "tree_b");
                        }
                    }
                    else
                    {
                        tile = GetRandomTile("grass_a", "grass_b", "grass_c", "grass_d");
                    }

                    Map.SetTile(x, y, tile);

                    if (Random.NextDouble() < 0.03)
                    {
                        Map.SetTile(x, y, "mushrooms");
                    }

                    if (Random.NextDouble() < 0.1)
                    {
                        Map.SetTile(x, y, "water");

                        if (Random.NextDouble() < 0.2)
                        {
                            string[] names    = { "lillypad_a", "lillypad_b", "lillypad_c" };
                            Prop     lillipad = new AnimatedProp(names[Random.Next(names.Length)], Color.FromNonPremultiplied(25, 123, 48, 255));
                            Map.SetProp(x, y, lillipad);
                        }
                    }
                }
            }

            int pathDistance = (int)(Map.Width * 0.6f);
            int distance     = 0;

            Point2D start;
            Point2D end;

            do
            {
                start    = GetRandomEdgeTile(Direction.East);
                end      = GetRandomEdgeTile(Direction.West);
                distance = Distance(start, end);
            } while (distance < pathDistance);

            Map.SetTile(start.X, start.Y, "stones_a");
            Map.SetTile(end.X, end.Y, "stones_a");

            DrawPath(start, end, 1, 0.6f);
        }