protected virtual IEnumerable <string> ResolveAssetPaths(IControlOutputContext context) { IAssetProvider assetProvider = (context.Control as IAssetProvider) ?? (context.Children.FirstOrDefault()?.Control as IAssetProvider); if (null == assetProvider) { yield break; } var extensions = assetProvider.GetAssetFileExtensions(); if (null == extensions) { yield break; } extensions = extensions.Distinct(); foreach (var extension in extensions) { var paths = assetProvider.GetAssetPaths(extension); if (null == paths) { yield break; } foreach (var path in paths) { yield return(path); } } }
/// <summary> /// 异步加载所有子资源对象 /// </summary> /// <param name="assetName">资源名称</param> /// <param name="assetType">资源类型</param>、 /// <param name="syncLoadMode">同步加载模式</param> public AssetOperationHandle LoadSubAssetsAsync(string assetName, System.Type assetType, bool syncLoadMode) { IAssetProvider provider = TryGetProvider(assetName); if (provider == null) { if (this is AssetBundleLoader) { provider = new AssetBundleSubProvider(this, assetName, assetType); } else if (this is AssetDatabaseLoader) { provider = new AssetDatabaseSubProvider(this, assetName, assetType); } else { throw new NotImplementedException($"{this.GetType()}"); } _providers.Add(provider); } // 异步转同步 if (syncLoadMode) { provider.SetSyncLoadMode(); } // 引用计数增加 provider.Reference(); return(provider.Handle); }
public MissingSecretNotesToken( IAssetTracker assetTracker, [ContentSource(ContentSource.GameContent)] IAssetProvider gameAssets ) : base(assetTracker, gameAssets) { }
public static Asset GetFile(this IAssetProvider assetProvider, NamedIdentifier name) { if (name.Name.IndexOf('/') == -1) { assetProvider.GetAssets().FirstOrDefault(p => p.NamedIdentifier.Equals(name)); } var type = name.Name[..name.Name.IndexOf('/')] switch
/// <summary> /// 加载资源对象 /// </summary> /// <param name="assetName">资源名称</param> /// <param name="assetType">资源类型</param> /// <param name="param">附加参数</param> /// <returns></returns> public AssetOperationHandle LoadAssetAsync(string assetName, System.Type assetType, IAssetParam param) { IAssetProvider provider = TryGetProvider(assetName); if (provider == null) { if (assetType == typeof(SceneInstance)) { IsSceneLoader = true; SceneInstanceParam sceneParam = param as SceneInstanceParam; provider = new AssetSceneProvider(this, assetName, assetType, sceneParam); } else if (assetType == typeof(PackageInstance)) { throw new NotImplementedException(nameof(PackageInstance)); } else { if (this is AssetBundleLoader) { provider = new AssetBundleProvider(this, assetName, assetType); } else if (this is AssetDatabaseLoader) { provider = new AssetDatabaseProvider(this, assetName, assetType); } else { throw new NotImplementedException($"{this.GetType()}"); } } _providers.Add(provider); } return(provider.Handle); }
public TModel?ReadJson <TModel>( string path, IAssetProvider assetProvider, Action <JsonSerializerSettings>?settings ) where TModel : class { // Validate path if (string.IsNullOrWhiteSpace(path)) { throw new ArgumentException("The file path is empty or invalid.", nameof(path)); } // Read from file stream directly try { using var stream = assetProvider.Open(path, FileMode.Open); return(this.Deserialize <TModel>(new StreamReader(stream), settings)); } catch (FileNotFoundException) { return(null); } catch (DirectoryNotFoundException) { return(null); } }
public MissingSecretNotesToken( IModHelper helper, [ContentSource(ContentSource.GameContent)] IAssetProvider gameAssets ) : base(helper, gameAssets) { }
public void CreateStage(ConfigDataStage configDataStage, IAssetProvider assetProvider) { var stagePrefab = assetProvider.GetAsset <GameObject>(configDataStage.Prefab); var go = GameObject.Instantiate(stagePrefab); go.transform.SetParent(StageRoot.transform, false); }
/// <summary> /// Adds an asset provider to the list. /// </summary> public void AddAssetProvider(IAssetProvider provider) { if (provider == null) throw new AssetException("Cannot add a null provider"); providers.Add(provider); }
public AnimalFactory(IAssetProvider assetProvider, ILevelMediator levelMediator, ICoroutineRunner coroutineRunner, IRandomService randomService) { _assetProvider = assetProvider; _levelMediator = levelMediator; _coroutineRunner = coroutineRunner; _randomService = randomService; }
public BoardView(GameModel game, GameController controller, IAssetProvider assetProvider) { InitializeComponent(); for (int i = 0; i < game.Dimension; i++) { gridCells.ColumnDefinitions.Add(new ColumnDefinition()); gridCells.RowDefinitions.Add(new RowDefinition()); } for (int i = 0; i < game.Dimension; ++i) { for (int k = 0; k < game.Dimension; k++) { int cellIndex = i * game.Dimension + k; var cell = game.Cells[cellIndex]; var cellView = new CellView(cell, assetProvider.GetAssetForId(cell.MatchId)); Grid.SetRow(cellView, i); Grid.SetColumn(cellView, k); cellView.MouseDown += delegate { controller.ClickCell(cell); }; gridCells.Children.Add(cellView); } } }
public static async void LoadDefaultValues(IAssetProvider assetProvider) { XmlDocument doc = new XmlDocument(); using (FileStream stream = await assetProvider.OpenContentFile("Assets" + assetProvider.DirectorySeparatorChar + "entities.xml")) { doc.Load(stream); } defaultValueDict = new Dictionary <LevelObjectType, Dictionary <string, string> >(); XmlNodeList list = doc.DocumentElement.ChildNodes; for (int i = 0; i < list.Count; i++) { XmlNode node = list[i]; Dictionary <string, string> entityValues = new Dictionary <string, string>(); for (int j = 0; j < node.ChildNodes.Count; j++) { string name = node.ChildNodes[j].Name; string value = node.ChildNodes[j].InnerText; entityValues.Add(name, value); } defaultValueDict.Add((LevelObjectType)int.Parse(node.Attributes["type"].InnerText), entityValues); } }
public static T Read <T>(IAssetProvider assetProvider, IServiceProvider services, string fullPath) where T : class { ReadFromFile read; if (!ReadRegistry.TryGetValue(typeof(T), out read)) { throw new InvalidOperationException("Unknown asset type"); } var gd = ((IGraphicsDeviceService)services.GetService(typeof(IGraphicsDeviceService))).GraphicsDevice; return((T)read(fullPath, assetProvider, gd)); /* * if (typeof(T) == typeof(AnimationSet)) * { * var gd = ((IGraphicsDeviceService)services.GetService(typeof(IGraphicsDeviceService))).GraphicsDevice; * return (T)(object)AnimationSet.ReadFromFile(fullPath, gd); * } * else if(typeof(T) == typeof(Level)) * { * var gd = ((IGraphicsDeviceService)services.GetService(typeof(IGraphicsDeviceService))).GraphicsDevice; * return (T)(object)Level.ReadFromFile(fullPath, assetProvider, gd); * } * else if(typeof (T) == typeof (Cue)) * { * return (T)(object)Cue.ReadFromFile(fullPath); * } * else * { * throw new InvalidOperationException("Unknown asset type"); * } */ }
public MissingJournalScrapsToken( IModHelper helper, [ContentSource(ContentSource.GameContent)] IAssetProvider gameAssets ) : base(helper, gameAssets) { }
public MissingJournalScrapsToken( IAssetTracker assetTracker, [ContentSource(ContentSource.GameContent)] IAssetProvider gameAssets ) : base(assetTracker, gameAssets) { }
public static InitializeRequest Initialize(bool forceAssetBundle, IAssetPathProvider pathProvider) { if (pathProvider != null) { PathProvider = pathProvider; } if (assetProvider != null) { if ((forceAssetBundle && assetProvider is AssetDatabaseAssetProvider) || (!forceAssetBundle && assetProvider is AssetBundleAssetProvider)) { Destroy(); } } #if UNITY_EDITOR //仅编辑器模式下才可以使用AssetDatabase进行加载 if (assetProvider == null && !forceAssetBundle) { assetProvider = new AssetDatabaseAssetProvider(); } #endif if (assetProvider == null) { assetProvider = new AssetBundleAssetProvider(); } return(assetProvider.Initialize()); }
public MainGame(IAssetProvider setAssetProvider) { AssetProvider = setAssetProvider; MainGame.WinWarGame = this; Log.Severity = LogSeverity.Fatal; Log.Type = LogType.Performance; this.IsMouseVisible = false; this.IsFixedTimeStep = false; backgroundClearColor = new Color(0x7F, 0x00, 0x00); currentGameScreen = null; nextGameScreen = null; _graphics = new GraphicsDeviceManager(this); _graphics.PreferredBackBufferWidth = 320 * 3; _graphics.PreferredBackBufferHeight = 200 * 3; _graphics.ApplyChanges(); Content.RootDirectory = "Assets"; #if IOS MouseCursor.IsVisible = false; #endif }
public LevelFactory(IAssetProvider assetProvider, IMainHeroFactory mainHeroFactory, IAnimalFactory animalFactory, ILevelMediator gameMediator, ICoroutineRunner coroutineRunner) { _mainHeroFactory = mainHeroFactory; _animalFactory = animalFactory; _assetProvider = assetProvider; _gameMediator = gameMediator; _coroutineRunner = coroutineRunner; }
/// <summary> /// Registers the given asset provider. Use this method to register asset providers /// for the platform (desktop, mobile, web) your main application should run on. /// </summary> /// <param name="assetProvider">The asset provider to register.</param> public void RegisterAssetProvider(IAssetProvider assetProvider) { if (_providers.Contains(assetProvider)) { throw new InvalidOperationException("Asset Provider already registered " + assetProvider); } _providers.Add(assetProvider); }
public UiGenerator(IAssetProvider assetProvider, MonoBehaviourProvider monoBehaviourProvider) { _assetProvider = assetProvider; _monoBehaviourProvider = monoBehaviourProvider; var canvasPrefab = _assetProvider.GetCanvasPrefab(); _canvas = _monoBehaviourProvider.CreateInstance(canvasPrefab).transform; }
/// <summary> /// 释放资源句柄 /// </summary> public void Release() { if (IsValid == false) { return; } _provider.Release(); _provider = null; }
protected MissingNotesToken(IModHelper helper, IAssetProvider gameAssets) { this.helper = helper ?? throw new ArgumentNullException(nameof(helper)); this.gameAssets = gameAssets ?? throw new ArgumentNullException(nameof(gameAssets)); this.updated = true; this.SecretNotes = this.gameAssets.Load <Dictionary <int, string> >(MissingNotesToken.secretNotesAsset); }
protected MissingNotesToken(IAssetTracker assetTracker, IAssetProvider gameAssets) { this.assetTracker = assetTracker ?? throw new ArgumentNullException(nameof(assetTracker)); this.updated = true; this.SecretNotes = gameAssets.Load <Dictionary <int, string> >(MissingNotesToken.secretNotesAsset); }
public GameFactory( IAssetProvider assetProvider, ITexturesProvider texturesProvider, IStaticDataService staticDataService) { _assetProvider = assetProvider; _texturesProvider = texturesProvider; _staticDataService = staticDataService; }
public StardewValleyNamespace( IMonitor monitor, [ContentSource(ContentSource.GameContent)] IAssetProvider gameAssets ) { this.monitor = monitor ?? throw new ArgumentNullException(nameof(monitor)); this.gameAssets = gameAssets ?? throw new ArgumentNullException(nameof(gameAssets)); this.itemFactories = new(); }
protected ProjectsControllerBase(ProjectsInfo projectsInfo, IAssetProvider assetProvider, List <IProjectModel> models, IProjectViewManipulator manipulator) { _viewManipulator = manipulator; AssetProvider = assetProvider; _projectModels = models; _projectsInfo = projectsInfo; InitializeProjectViews(); }
public BackupService(IAuthenticatorRepository authenticatorRepository, ICategoryRepository categoryRepository, IAuthenticatorCategoryRepository authenticatorCategoryRepository, ICustomIconRepository customIconRepository, IAssetProvider assetProvider) { _authenticatorRepository = authenticatorRepository; _categoryRepository = categoryRepository; _authenticatorCategoryRepository = authenticatorCategoryRepository; _customIconRepository = customIconRepository; _assetProvider = assetProvider; }
public TModel ReadOrCreate <TModel>( string path, IAssetProvider assetProvider, Action <JsonSerializerSettings>?settings, bool minify = false ) where TModel : class, new() { return(this.ReadOrCreate(path, assetProvider, settings, () => new TModel(), minify)); }
public StyleManager(IServiceRegistry services) { this.services = services; content = services.GetService <IAssetProvider>(); content.AddMapping("Theme", typeof(Theme)); content.AddMapping("Font", typeof(Font)); content.AssetsLoaded += InitializeFontCollection; sharedResources = new Dictionary <string, ResourceDescription>(); }
public object ReadContent(IAssetProvider readerManager, ref ContentReaderParameters parameters) { parameters.KeepStreamOpen = false; var image = Image.Load(parameters.Stream); if (image != null) { image.Name = parameters.AssetName; } return(image); }
internal Application() { var platformTypeAttribute = ReflectionHelper.GetAttribute <PlatformTypeAttribute>(GetType()); if (!ReflectionHelper.IsTypeDerived(platformTypeAttribute.PlatformType, typeof(ApplicationPlatform))) { throw new InvalidOperationException("PlatformType must be derived from ApplicationPlatform."); } services = new ServiceRegistry(); appTime = new ApplicationTime(); totalTime = new TimeSpan(); timer = new TimerTick(); IsFixedTimeStep = false; maximumElapsedTime = TimeSpan.FromMilliseconds(500.0); TargetElapsedTime = TimeSpan.FromTicks(10000000 / 120); // target elapsed time is by default 60Hz lastUpdateCount = new int[4]; nextLastUpdateCountIndex = 0; // Calculate the updateCountAverageSlowLimit (assuming moving average is >=3 ) // Example for a moving average of 4: // updateCountAverageSlowLimit = (2 * 2 + (4 - 2)) / 4 = 1.5f const int BadUpdateCountTime = 2; // number of bad frame (a bad frame is a frame that has at least 2 updates) var maxLastCount = 2 * Math.Min(BadUpdateCountTime, lastUpdateCount.Length); updateCountAverageSlowLimit = (float)(maxLastCount + (lastUpdateCount.Length - maxLastCount)) / lastUpdateCount.Length; services.AddService(typeof(IWindowService), this); services.AddService(typeof(ITimeService), appTime); // Setup Content Manager contentManager = new ContentManager(services); contentManager.AddMapping(AssetType.EngineReferences, typeof(EngineReferenceCollection)); contentManager.AddMapping(AssetType.Model, typeof(Model)); contentManager.AddMapping(AssetType.Effect, typeof(ShaderCollection)); contentManager.AddMapping(AssetType.Texture2D, typeof(Texture2D)); contentManager.AddMapping(AssetType.TextureCube, typeof(TextureCube)); contentManager.AddMapping(AssetType.Cutscene, typeof(Cutscene)); var additionalServices = ReflectionHelper.GetAttributes <RequiredServiceAttribute>(GetType()); foreach (var requiredService in additionalServices) { var service = Activator.CreateInstance(requiredService.ClassType, services); services.AddService(requiredService.ServiceType, service); } // Setup Platform applicationPlatform = (ApplicationPlatform)Activator.CreateInstance(platformTypeAttribute.PlatformType, this); applicationPlatform.Activated += ApplicationPlatformActivated; applicationPlatform.Deactivated += ApplicationPlatformDeactivated; applicationPlatform.Exiting += ApplicationPlatform_Exiting; applicationPlatform.WindowCreated += ApplicationPlatformWindowCreated; }
public SnakeClone(Action<Vector2> configureLevelSize, ILevelTracker levelTracker, IAssetProvider assetProvider, SpriteBatch batch, ContentManager content) { this.assetProvider = assetProvider; this.levelTracker = levelTracker; this.configureLevelSize = configureLevelSize; AddMessages(new RenderedMessage(() => "snake", new Color(44, 62, 80)), new RenderedMessage(()=>"\n\n{arrow keys}", new Color(241, 196, 15)), new RenderedMessage(() => "\n\n\n\nto navigate", new Color(240, 240, 241)), new RenderedMessage(() => "\n\n\n\n\n\n\n{enter}", new Color(241, 196, 15)), new RenderedMessage(() => "\n\n\n\n\n\n\n\n\nto play", new Color(240, 240, 241)), new RenderedMessage(() => "\n\n\n\n\n\n\n\n\n\n\n\n{escape}", new Color(241, 196, 15)), new RenderedMessage(() => "\n\n\n\n\n\n\n\n\n\n\n\n\n\nto quit", new Color(240, 240, 241))); onContinuePlaying = () => NewLevel(levelTracker.Next); directionStates = new ReadOnlyCollection<AddState>(new List<AddState> { AddState.To(()=>level.Context.ChangeDirection(new ChangeDirectionState(Direction.Up))) .When(() => Keyboard.IsKeyClicked(InputKeys.Up) && (level.Context.Direction != Direction.Down || !level.Context.SnakeHead.HasTail)), AddState.To(()=>level.Context.ChangeDirection(new ChangeDirectionState(Direction.Down))) .When(() => Keyboard.IsKeyClicked(InputKeys.Down) && (level.Context.Direction != Direction.Up || !level.Context.SnakeHead.HasTail)), AddState.To(()=>level.Context.ChangeDirection(new ChangeDirectionState(Direction.Left))) .When(() => Keyboard.IsKeyClicked(InputKeys.Left) && (level.Context.Direction != Direction.Right || !level.Context.SnakeHead.HasTail)), AddState.To(()=>level.Context.ChangeDirection(new ChangeDirectionState(Direction.Right))) .When(() => Keyboard.IsKeyClicked(InputKeys.Right) && (level.Context.Direction != Direction.Left || !level.Context.SnakeHead.HasTail)) }); var textureContainer = new AssetContainer<Func<Texture2D>>(content); var fontContainer = new AssetContainer<SpriteFont>(content); assetProvider.LoadAssets(textureContainer, fontContainer); renderContext = new RenderContext(assetProvider.RenderInfo, batch, textureContainer, fontContainer); NextLevel(); }
public AssetProviderController(IAssetProvider assetProvider) { provider = assetProvider; }