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); }
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)); } }
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); }