/// <summary> /// Creates a simple texture from any base API image. /// </summary> public static Texture2D CreateFromAPIImage(BaseImageFile image, int record = 0, int frame = 0, int alphaIndex = -1, bool createMipMaps = false, bool makeNoLongerReadable = true) { // Override readable flag when user has set preference in material reader if (DaggerfallUnity.Instance.MaterialReader.ReadableTextures) { makeNoLongerReadable = false; } Texture2D texture; if (TextureReplacement.TryImportImage(image.FileName, out texture)) { return(texture); } if (TextureReplacement.TryImportCifRci(image.FileName, record, frame, out texture)) { return(texture); } DFSize sz; Color32[] colors = image.GetColor32(record, frame, alphaIndex, 0, out sz); texture = new Texture2D(sz.Width, sz.Height, TextureFormat.RGBA32, createMipMaps); texture.SetPixels32(colors); texture.Apply(createMipMaps, makeNoLongerReadable); return(texture); }
public static Texture2D GetTextureFromImg(string name, out DFPosition offset, TextureFormat format = TextureFormat.ARGB32, bool readOnly = true) { offset = new DFPosition(); DaggerfallUnity dfUnity = DaggerfallUnity.Instance; if (!dfUnity.IsReady) { return(null); } ImgFile imgFile = new ImgFile(Path.Combine(dfUnity.Arena2Path, name), FileUsage.UseMemory, readOnly); Texture2D texture; if (!TextureReplacement.TryImportImage(name, out texture)) { imgFile.LoadPalette(Path.Combine(dfUnity.Arena2Path, imgFile.PaletteName)); texture = GetTextureFromImg(imgFile, format, readOnly); } texture.filterMode = DaggerfallUI.Instance.GlobalFilterMode; offset = imgFile.ImageOffset; return(texture); }
protected void SetupPathButtons() { // Paths buttons if (!TextureReplacement.TryImportImage(roadsOffName, true, out roadsOffTexture)) { return; } if (!TextureReplacement.TryImportImage(roadsOnName, true, out roadsOnTexture)) { return; } if (!TextureReplacement.TryImportImage(tracksOffName, true, out tracksOffTexture)) { return; } if (!TextureReplacement.TryImportImage(tracksOnName, true, out tracksOnTexture)) { return; } roadsButton = new Button(); roadsButton.Tag = path_roads; roadsButton.Position = roadsButtonPos; roadsButton.Size = buttonSize; //new Vector2(roadsOnTexture.width, roadsOnTexture.height); roadsButton.OnMouseClick += PathTypeButton_OnMouseClick; NativePanel.Components.Add(roadsButton); tracksButton = new Button(); tracksButton.Tag = path_tracks; tracksButton.Position = tracksButtonPos; tracksButton.Size = buttonSize; //new Vector2(tracksOnTexture.width, tracksOnTexture.height); tracksButton.OnMouseClick += PathTypeButton_OnMouseClick; NativePanel.Components.Add(tracksButton); }
void LoadTextures() { if (!TextureReplacement.TryImportImage(baseTextureName, true, out baseTexture)) { Debug.LogError("TravelOptions: Unable to load the base UI image."); } }
protected override void Setup() { base.Setup(); if (TravelOptionsMod.Instance.ShipTravelPortsOnly) { // Towns filter button if (!TextureReplacement.TryImportImage(portsOffName, true, out portsOffTexture)) { return; } if (!TextureReplacement.TryImportImage(portsOnName, true, out portsOnTexture)) { return; } portsFilterButton = new Button(); portsFilterButton.Position = portFilterPos; portsFilterButton.Size = new Vector2(portsOffTexture.width, portsOffTexture.height); portsFilterButton.BackgroundTexture = portsOffTexture; portsFilterButton.OnMouseClick += PortsFilterButton_OnMouseClick; NativePanel.Components.Add(portsFilterButton); } if (TravelOptionsMod.Instance.RoadsIntegration) { SetupPathButtons(); UpdatePathButtons(); locationDotsPixelBuffer = new Color32[(int)regionTextureOverlayPanelRect.width * (int)regionTextureOverlayPanelRect.height * 25]; locationDotsTexture = new Texture2D((int)regionTextureOverlayPanelRect.width * 5, (int)regionTextureOverlayPanelRect.height * 5, TextureFormat.ARGB32, false); } }
void LoadTextures() { if (TextureReplacement.TryImportImage(baseTextureName, true, out baseTexture)) { baseSize = new Vector2(baseTexture.width, baseTexture.height); } }
private Texture2D TryFindTexture(string vanillaName, string postfix) { //Note removal of IMG. this is to get around a DFU bug var newTexture = Path.GetFileNameWithoutExtension(vanillaName) + postfix + Path.GetExtension(vanillaName); Debug.Log("Trying to find " + newTexture); Texture2D output; if (TextureReplacement.TryImportImage(newTexture, false, out output)) { return(output); } return(null); }
public Button AddCustomButton(int messageBoxButton, string tag, bool defaultButton = false) { if (!IsSetup) { Setup(); } // If this is to become default button, first unset any other default buttons // Only one button in collection can be default if (defaultButton) { foreach (Button b in buttons) { b.DefaultButton = false; } } Texture2D background;// = DaggerfallUI.GetTextureFromCifRci(buttonsFilename, (int)messageBoxButton); TextureReplacement.TryImportImage("button" + tag, true, out background); //Vector2 size = TextureReplacement.GetSize(background, buttonsFilename, (int)messageBoxButton); Vector2 size = new Vector2(background.width, background.height); Button button = DaggerfallUI.AddButton(Vector2.zero, size, buttonPanel); button.BackgroundTexture = background; button.BackgroundTextureLayout = BackgroundLayout.StretchToFill; button.Tag = tag; button.OnMouseClick += CustomButtonClickHandler; button.DefaultButton = defaultButton; //button.Hotkey = DaggerfallShortcut.GetBinding(ToShortcutButton(messageBoxButton)); buttons.Add(button); // Once a button has been added the owner is expecting some kind of input from player // Don't allow a messagebox with buttons to be cancelled with escape AllowCancel = false; UpdatePanelSizes(); return(button); }
protected void SetupWaterButtons() { // Water buttons if (!TextureReplacement.TryImportImage(riversOffName, true, out riversOffTexture)) { return; } if (!TextureReplacement.TryImportImage(riversOnName, true, out riversOnTexture)) { return; } if (!TextureReplacement.TryImportImage(streamsOffName, true, out streamsOffTexture)) { return; } if (!TextureReplacement.TryImportImage(streamsOnName, true, out streamsOnTexture)) { return; } riversButton = new Button(); riversButton.Tag = path_rivers; riversButton.Position = riversButtonPos; riversButton.Size = buttonSize; riversButton.BackgroundColor = Color.white; riversButton.OnMouseClick += PathTypeButton_OnMouseClick; NativePanel.Components.Add(riversButton); if (TravelOptionsMod.Instance.StreamsToggle) { streamsButton = new Button(); streamsButton.Tag = path_streams; streamsButton.Position = streamsButtonPos; streamsButton.Size = streamsSize; streamsButton.BackgroundColor = Color.white; streamsButton.OnMouseClick += PathTypeButton_OnMouseClick; NativePanel.Components.Add(streamsButton); } }
// Update player background panel void RefreshBackground(PlayerEntity entity) { if (lastBackgroundName != entity.RaceTemplate.PaperDollBackground) { Texture2D texture; if (TextureReplacement.TryImportImage(entity.RaceTemplate.PaperDollBackground, out texture)) { // Import custom image. We assume the image provided is already wihout borders backgroundPanel.Size = new Vector2(paperDollWidth, paperDollHeight); } else { // Use vanilla Daggerfall image and remove borders ImageData data = ImageReader.GetImageData(entity.RaceTemplate.PaperDollBackground, 0, 0, false, false); texture = ImageReader.GetSubTexture(data, backgroundSubRect); backgroundPanel.Size = new Vector2(texture.width, texture.height); } backgroundPanel.BackgroundTexture = texture; lastBackgroundName = entity.RaceTemplate.PaperDollBackground; } }
protected void SetupWaterButtons() { // Water buttons if (!TextureReplacement.TryImportImage(riversOffName, true, out riversOffTexture)) { return; } if (!TextureReplacement.TryImportImage(riversOnName, true, out riversOnTexture)) { return; } if (!TextureReplacement.TryImportImage(streamsOffName, true, out streamsOffTexture)) { return; } if (!TextureReplacement.TryImportImage(streamsOnName, true, out streamsOnTexture)) { return; } riversButton = new Button(); riversButton.Tag = BasicRoadsTexturing.rivers; riversButton.Position = riversButtonPos; riversButton.Size = new Vector2(riversOnTexture.width, riversOnTexture.height); riversButton.BackgroundColor = Color.white; riversButton.OnMouseClick += PathTypeButton_OnMouseClick; NativePanel.Components.Add(riversButton); streamsButton = new Button(); streamsButton.Tag = BasicRoadsTexturing.streams; streamsButton.Position = streamsButtonPos; streamsButton.Size = new Vector2(streamsOnTexture.width, streamsOnTexture.height); streamsButton.BackgroundColor = Color.white; streamsButton.OnMouseClick += PathTypeButton_OnMouseClick; NativePanel.Components.Add(streamsButton); }
protected override void Setup() { base.Setup(); if (TravelOptionsMod.Instance.ShipTravelPortsOnly) { // Towns filter button if (!TextureReplacement.TryImportImage(portsOffName, true, out portsOffTexture)) { return; } if (!TextureReplacement.TryImportImage(portsOnName, true, out portsOnTexture)) { return; } portsFilterButton = new Button(); portsFilterButton.Position = portFilterPos; portsFilterButton.Size = new Vector2(portsOffTexture.width, portsOffTexture.height); portsFilterButton.BackgroundTexture = portsOffTexture; portsFilterButton.OnMouseClick += PortsFilterButton_OnMouseClick; NativePanel.Components.Add(portsFilterButton); } }