Exemple #1
0
    public static TlpdEntity Parse(string tlpd, bool allowJustOpen, out int length)
    {
        if (!tlpd.StartsWith("[tlpd#"))
        {
            // reject it immediately
            length = 0;
            return TlpdEntity.InvalidEntity;
        }

        // find end of tlpd string
        int closebracket = tlpd.IndexOf("]");
        if (closebracket < 0)
        {
            // incomplete tag, reject
            length = 0;
            return TlpdEntity.InvalidEntity;
        }

        // find closing tag if required
        TlpdEntity entity = new TlpdEntity();
        int closingtag = tlpd.IndexOf("[/tlpd]");
        if (closingtag < 0)
        {
            length = closebracket + 1;
            if (!allowJustOpen)
            {
                // incomplete tag, reject it now
                return TlpdEntity.InvalidEntity;
            }
        }
        else
        {
            length = closingtag + "[/tlpd]".Length;
            if (closebracket > closingtag)
            {
                length = closebracket;
                return TlpdEntity.InvalidEntity;
            }
            entity.Name = tlpd.Substring(closebracket + 1, closingtag - (closebracket + 1));
        }

        // get tag bits
        string param = tlpd.Substring(0, closebracket);
        param = param.Substring("[tlpd#".Length);
        string[] tags = param.Split('#');
        if (tags.Length < 2)
        {
            // not enough arguments, reject it
            return TlpdEntity.InvalidEntity;
        }

        entity.Id = tags[1];
        switch (tags[0])
        {
            case "maps":
                entity.Type = TlpdEntityType.Map;
                if (tags.Length > 2) entity.Database = tags[2];
                if (tags.Length > 3) entity.Race = tags[3];
                break;
            case "players":
                // players must have a race
                if (tags.Length < 3) return TlpdEntity.InvalidEntity;
                entity.Type = TlpdEntityType.Player;
                entity.Race = tags[2];
                if (tags.Length > 3) entity.Database = tags[3];
                break;
            default:
                return TlpdEntity.InvalidEntity;
        }

        // [tlpd#maps#id#db#tileset]name[/tlpd]
        // [tlpd#players#id#R#db]name[/tlpd]

        return entity;
    }
Exemple #2
0
        private Style ColourPlayer(TlpdEntity player)
        {
            return svc.playerStyle;

            //switch (player.Race)
            //{
            //    case "T": return svc.terranStyle;
            //    case "Z": return svc.zergStyle;
            //    case "P": return svc.protossStyle;
            //    case "R": return svc.randomStyle;
            //}
            return null;
        }