private bool initScreen(int i) { MaterialPtr overlayMaterial = null; TextureUnitState unit = null; animation = null; currentMaterialName = null; if (isScreenAnAd[i - 1]) // poczatkowo i = 1 { // pobierz i ustaw na bie¿ac¹ AdManager.AdStatus status = AdManager.Singleton.GetAd(C_AD_ZONE, 1.0f, out currentAd); if (status == AdManager.AdStatus.OK) { // pobieranie OK. currentMaterialName = C_AD_MATERIAL; string path = AdManager.Singleton.LoadAdTexture(currentAd); if (path == null) { return(false); } showAdText(viewport); overlayMaterial = MaterialManager.Singleton.GetByName(currentMaterialName); overlayMaterial.Load(); unit = overlayMaterial.GetBestTechnique().GetPass(0).GetTextureUnitState(0); unit.SetTextureName(path); AdManager.Singleton.RegisterImpression(currentAd); // int count; // count = adAction.Get_Ad_Impression_Counter(currentAd.id); // Console.WriteLine("Pobrañ: " + count); } else { hideAdText(); return(false); } } else { currentMaterialName = C_TEXTURE_NAME + currentScreen; overlayMaterial = MaterialManager.Singleton.GetByName(currentMaterialName); overlayMaterial.Load(); unit = overlayMaterial.GetBestTechnique().GetPass(0).GetTextureUnitState(0); hideAdText(); } textureDimensions = unit.GetTextureDimensions(); PointD scale = new PointD(1, 1); // skaluj overlay tak aby tekstury nie zmienia³y swoich proporcji float prop = 1.0f; if (isScreenAnAd[currentScreen - 1]) { // reklamy maja zachowac oryginalna rozdzielczosc scale = AdSizeUtils.ScaleAdToDisplay(textureDimensions, new PointD(Viewport.ActualWidth, Viewport.ActualHeight), true); scale = 0.65f * scale; } else { prop = 1.0f / ((1.0f * textureDimensions.first / textureDimensions.second) / (1.0f * Viewport.ActualWidth / Viewport.ActualHeight)); // wychodzimy poza ekran if (scale.Y * prop > 1.0f) { float scalingFactor = 1.0f / (scale.Y * prop); scale.X *= scalingFactor; scale.Y *= scalingFactor; } if (scale.X * prop > 1.0f) { float scalingFactor = 1.0f / (scale.X * prop); scale.X *= scalingFactor; scale.Y *= scalingFactor; } } overlay.SetScale(scale.X, scale.Y * prop); animation = new EffectTextureAnimation(null, unit, screenTimes[i - 1], "QuitAnimation", VisibilityNodeAnimation.VisibilityType.VISIBLE, VisibilityNodeAnimation.VisibilityType.VISIBLE); animation.Enabled = true; animation.Looped = true; OverlayContainer container = overlay.GetChild("Wof/QuitScreen"); container.MaterialName = currentMaterialName; EffectsManager.Singleton.AddCustomEffect(animation); lastChange = DateTime.Now; return(true); }
private bool initScreen(int i) { MaterialPtr overlayMaterial = null; TextureUnitState unit; animation = null; currentMaterialName = null; if (isScreenAnAd[i - 1]) // poczatkowo i = 1 { if (Mogre.Math.RangeRandom(0, 1) < (1 - C_INTRO_AD_PROBABILITY)) { return(false); } //if(adIds.Count == 0) return false; AdManager.AdStatus status = AdManager.Singleton.GetAd(C_AD_ZONE, 1.0f, out currentAd); //AdManager.AdStatus status = AdManager.Singleton.GatherAsyncResult(adIds.Dequeue(), AdManager.C_AD_DOWNLOAD_TIMEOUT, out currentAd); if (status == AdManager.AdStatus.OK) { // pobieranie OK. currentMaterialName = C_AD_MATERIAL; string path = AdManager.Singleton.LoadAdTexture(currentAd); if (path == null) { return(false); } showAdText(viewport); overlayMaterial = MaterialManager.Singleton.GetByName(currentMaterialName); overlayMaterial.Load(); unit = overlayMaterial.GetBestTechnique().GetPass(0).GetTextureUnitState(0); unit.SetTextureName(path); AdManager.Singleton.RegisterImpression(currentAd); // int count; // count = adAction.Get_Ad_Impression_Counter(currentAd.id); // Console.WriteLine("Pobrañ: " + count); } else { hideAdText(); return(false); } } else { string matName = EngineConfig.IsEnhancedVersion ? C_TEXTURE_NAME_ENHANCED : C_TEXTURE_NAME; currentMaterialName = matName + currentScreen; overlayMaterial = MaterialManager.Singleton.GetByName(currentMaterialName); unit = overlayMaterial.GetBestTechnique().GetPass(0).GetTextureUnitState(0); hideAdText(); } if (i == 1) { if (EngineConfig.SoundEnabled) { if (ravenSound == null || !ravenSound.HasSound()) { ravenSound = SoundManager3D.Instance.CreateAmbientSound(SoundManager3D.C_RAVEN, "ravenSound", false, false); // destroyed together with SoundManager3D singleton } ravenSound.Play(); } } textureDimensions = unit.GetTextureDimensions(); // Console.WriteLine(textureDimensions.first); PointD scale = new PointD(1, 1); // skaluj overlay tak aby tekstury nie zmienia³y swoich proporcji float prop = 1.0f; if (isScreenAnAd[currentScreen - 1]) { // reklamy maja zachowac oryginalna rozdzielczosc scale = AdSizeUtils.ScaleAdToDisplay(textureDimensions, new PointD(Viewport.ActualWidth, Viewport.ActualHeight), true); scale = 0.65f * scale; } else { textureDimensions = new Pair <uint, uint>(1280, 1024); // scale = AdSizeUtils.ScaleAdToDisplay(textureDimensions, new PointD(Viewport.ActualWidth, Viewport.ActualHeight), false); prop = 1.0f / ((1.0f * textureDimensions.first / textureDimensions.second) / (1.0f * Viewport.ActualWidth / Viewport.ActualHeight)); // wychodzimy poza ekran if (scale.Y * prop > 1.0f) { float scalingFactor = 1.0f / (scale.Y * prop); scale.X *= scalingFactor; scale.Y *= scalingFactor; } if (scale.X * prop > 1.0f) { float scalingFactor = 1.0f / (scale.X * prop); scale.X *= scalingFactor; scale.Y *= scalingFactor; } // scale.X *= 0.5f; scale.Y *= 0.5f; } overlay.SetScale(scale.X, scale.Y * prop); animation = new EffectTextureAnimation(null, unit, screenTimes[i - 1], "IntroAnimation", VisibilityNodeAnimation.VisibilityType.VISIBLE, VisibilityNodeAnimation.VisibilityType.VISIBLE); animation.Enabled = true; animation.Looped = true; OverlayContainer container = overlay.GetChild("Wof/IntroScreen"); container.MaterialName = currentMaterialName; EffectsManager.Singleton.AddCustomEffect(animation); lastChange = DateTime.Now; return(true); }