Exemplo n.º 1
0
        private bool CheckResource(Token t, ResourceType ty, ResourceSubtype sty = ResourceSubtype.Unknown, ScriptType scty = ScriptType.Any)
        {
            IHasResource res = null;

            // no resources!
            if (Context.Djn == null)
            {
                return(false);
            }

            // TODO: unable to check?
            if (t.Type == TokenType.Expression)
            {
                return(true);
            }

            if (t.Type == TokenType.Reference)
            {
                res = Context.Djn.FindByName <IHasResource>(t.Value);
            }

            if (t.Type == TokenType.Number)
            {
                ushort id = ushort.Parse(t.Value);
                if (!Context.Djn.Contains(id))
                {
                    return(false);
                }

                res = Context.Djn[id];
            }

            if (res == null)
            {
                return(false);
            }
            if (res.Resource.Type != ty)
            {
                return(false);
            }
            if (sty != ResourceSubtype.Unknown && res.Resource.Subtype != sty)
            {
                return(false);
            }

            if (scty != ScriptType.Any)
            {
                if (scty == ScriptType.State && !res.Resource.Flags.HasFlag(ResourceFlags.Private))
                {
                    return(false);
                }
                if (scty == ScriptType.Script && res.Resource.Flags.HasFlag(ResourceFlags.Private))
                {
                    return(false);
                }
            }

            return(true);
        }
Exemplo n.º 2
0
 public Resource(Guid id, Guid?containerId, Guid?storageId, Guid?traderId, Type type, ResourceSubtype subtype, ResourceState state, Vector3D position, QuaternionD rotation)
 {
     Id          = id;
     ContainerId = containerId;
     StorageId   = storageId;
     TraderId    = traderId;
     Type        = type ?? throw new ArgumentNullException(nameof(type));
     Subtype     = subtype;
     State       = state;
     Position    = position;
     Rotation    = rotation;
 }
Exemplo n.º 3
0
 public IEnumerable <Grf> GrfSubtype(ResourceSubtype sub) => Type <Grf>().Where(s => s.Resource.Subtype == sub);