Example #1
0
 /// <summary>
 /// Invokes map event.
 /// </summary>
 /// <param name="name">Identifier name</param>
 /// <param name="cell">Map cell</param>
 public static void CallMapEvent(string name, mapcell cell)
 {
     if (!string.IsNullOrEmpty(name))
     {
         GetMapEvent(name)?.Invoke(cell);
     }
 }
Example #2
0
        public override void Init()
        {
            // register all map events
            progs.RegisterMapEvent("nextlevel", delegate(mapcell cell) {
                if (world.GetTextureAlias(cell.walltex) != "textures/exit")
                {
                    return;
                }
                Quiver.game.game.LoadLevel("maps/" + level.next + ".lvl");
            });
            progs.RegisterMapEvent("prevlevel", delegate
            {
                Quiver.game.game.LoadLevel("maps/" + level.prev + ".lvl");
                var c            = level.data.CoordinatesOf(-2);
                world.Player.pos = new vector(c.Item1, c.Item2);
            });
            progs.RegisterMapEvent("glassshot", delegate(mapcell cell)
            {
                audio.PlaySound3D("sound/glass/glass" + Quiver.engine.random.Next(1, 4), cell.pos, 70);
            });
            progs.RegisterMapEvent("useconsole1", delegate { statemanager.SetState(new consoleGame()); });

            progs.RegisterMapEvent("ws_use", delegate(mapcell cell)
            {
                mapcell door = world.FindTexturedCell("textures/exit_lock");
                door.SetWalltex("textures/exit");
                door.interactable = true;

                cell.SetWalltex("textures/brick1_sw1");
            });
            progs.RegisterMapEvent("escape", delegate(mapcell cell)
            {
                statemanager.SetState(new credits(), true);
            });

            // register all entities
            progs.RegisterEnt(typeof(m_Eye));
            progs.RegisterEnt(typeof(p_Guts));
            progs.RegisterEnt(typeof(m_Robo));
            progs.RegisterEnt(typeof(p_Lazer));

            // register all weapons
            progs.RegisterWeapon(typeof(wRevolver));

            _gmode = new gameMode();
        }
Example #3
0
        public static void Generate(int[,] d)
        {
            data          = d;
            world.mapsize = d.GetLength(0);
            world.map     = new mapcell[world.mapsize, world.mapsize];

            for (var x = 0; x < world.mapsize; x++)
            {
                for (var y = 0; y < world.mapsize; y++)
                {
                    var cell = new mapcell(new vector(x, y), "textures/floor", "textures/floor", "textures/floor");
                    if (data[x, y] == -1)
                    {
                        playerSpawn = new vector(x + 0.5f, y + 0.5f);
                    }

                    lvl.GetCell(ref cell, data[x, y].ToString());
                    world.map[x, y] = cell;
                }
            }
        }
Example #4
0
        internal static void GetCell(ref mapcell cell, string id, bool dodefault = false)
        {
            if (string.IsNullOrEmpty(_dataset))
            {
                log.WriteLine("no dataset defined for level file.");
                return;
            }

            using (var oReader = new StreamReader(filesystem.Open(_dataset), Encoding.GetEncoding("ISO-8859-1")))
            {
                _datasetDoc = new XmlDocument();
                _datasetDoc.Load(oReader);
                var e = _datasetDoc.SelectSingleNode("//dataset/cells/*[@id='" + id + "']");

                if (e == null)
                {
                    if (!dodefault)
                    {
                        GetCell(ref cell, "default", true);
                    }
                    else
                    {
                        log.WriteLine("failed to find cell of id=" + id, log.LogMessageType.Error);
                    }
                    return;
                }

                foreach (XmlNode n in e.ChildNodes)
                {
                    try {
                        if (n.Name == "wall")
                        {
                            cell.wall = n.InnerText == "true";
                        }
                        if (n.Name == "solid")
                        {
                            cell.solid = n.InnerText == "true";
                        }
                        if (n.Name == "interactable")
                        {
                            cell.interactable = n.InnerText == "true";
                        }

                        if (n.Name == "shootex")
                        {
                            cell.shootex = n.InnerText;
                        }
                        if (n.Name == "walltex")
                        {
                            cell.SetWalltex(n.InnerText);
                        }
                        if (n.Name == "floortex")
                        {
                            cell.SetFloortex(n.InnerText);
                        }
                        if (n.Name == "ceiltex")
                        {
                            cell.SetCeiltex(n.InnerText);
                        }

                        if (n.Name == "emission")
                        {
                            byte r = 0;
                            byte g = 0;
                            byte b = 0;
                            var  s = n.InnerText.Split(' ');
                            if (!(s.Length != 3 || !byte.TryParse(s[0], out r) || !byte.TryParse(s[1], out g) ||
                                  !byte.TryParse(s[2], out b)))
                            {
                                cell.emission = Color.FromArgb(r, g, b);
                            }
                        }

                        if (n.Name == "oninteract")
                        {
                            cell.onInteract = n.InnerText;
                        }
                        if (n.Name == "ontouch")
                        {
                            cell.onTouch = n.InnerText;
                        }
                        if (n.Name == "onwalk")
                        {
                            cell.onWalk = n.InnerText;
                        }
                        if (n.Name == "onshot")
                        {
                            cell.onShot = n.InnerText;
                        }
                    }
                    catch (Exception ex)
                    {
                        log.WriteLine("parsing error: " + ex.Message);
                    }
                }
            }
        }