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); }
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; }
public IEnumerable <Grf> GrfSubtype(ResourceSubtype sub) => Type <Grf>().Where(s => s.Resource.Subtype == sub);