/// <summary> /// Load all tilesets /// </summary> internal static void LoadAllTilesets() { // TODO: FIXME with new WarFile resource loading strategy WarResource tileset = ((RawResource)WarFile.GetResourceByName("Barrens 1")).Resource; WarResource tiles = ((RawResource)WarFile.GetResourceByName("Barrens 2")).Resource; PaletteResource tilesPAL = WarFile.GetResourceByName("Barrens 3") as PaletteResource; MapTileset swamp = new MapTileset(Tileset.Swamp, tileset, tiles, tilesPAL); knownTilesets.Add(swamp); tileset = ((RawResource)WarFile.GetResourceByName("Summer 1")).Resource; tiles = ((RawResource)WarFile.GetResourceByName("Summer 2")).Resource; tilesPAL = WarFile.GetResourceByName("Summer 3") as PaletteResource; MapTileset summer = new MapTileset(Tileset.Summer, tileset, tiles, tilesPAL); knownTilesets.Add(summer); if (WarFile.IsDemo == false) { tileset = ((RawResource)WarFile.GetResourceByName("Dungeon 1")).Resource; tiles = ((RawResource)WarFile.GetResourceByName("Dungeon 2")).Resource; tilesPAL = WarFile.GetResourceByName("Dungeon 3") as PaletteResource; MapTileset dungeon = new MapTileset(Tileset.Dungeon, tileset, tiles, tilesPAL); knownTilesets.Add(dungeon); } }
internal IngameMenuWindow(Race setRace) { curRace = setRace; LevelGameScreen.Game.GamePaused = true; BackgroundColor = new Microsoft.Xna.Framework.Color(0.3f, 0.0f, 0.0f, 0.5f); //Width = background.Width; //Height = background.Height; UIResource res = WarFile.GetUIResource(setRace == Race.Humans ? 368 : 369); background = new UIImage(WWTexture.FromImageResource(WarFile.GetImageResource(res.BackgroundImageResourceIndex))); background.InitWithUIResource(res); AddComponent(background); background.X = 120; background.Y = 20; continueButton = (UIButton)background.Components [6]; continueButton.OnMouseUpInside += closeButton_OnMouseUpInside; quitButton = (UIButton)background.Components [5]; quitButton.OnMouseUpInside += quitButton_OnMouseUpInside; MouseCursor.State = MouseCursorState.Pointer; }
public Entity(Map currentMap) { Performance.Push("Entity ctor"); VisibleRange = 0; IconIndex = 0; currentTarget = null; PreviousTarget = null; CurrentMap = currentMap; Performance.Push("Create base sprite"); sprite = new Sprite(WarFile.GetSpriteResource(WarFile.KnowledgeBase.IndexByName("Human Peasant"))); Performance.Pop(); Performance.Push("new HateList"); HateList = new HateList(); Performance.Pop(); Performance.Push("new StateMachine"); StateMachine = new StateMachine(this); Performance.Pop(); Performance.Push("StateMachine.ChangeState"); StateMachine.ChangeState(new StateIdle(this)); Performance.Pop(); Performance.Pop(); }
private static void LoadResources() { if (didLoadResources || WarFile.AreResoucesLoaded == false) { return; } cursorResources = new Cursor[Enum.GetValues(typeof(MouseCursorState)).Length]; cursorResources[(int)MouseCursorState.Pointer] = new Cursor(WarFile.GetCursorResource(WarFile.KnowledgeBase.IndexByName("Normal Pointer"))); cursorResources[(int)MouseCursorState.NotAllowed] = new Cursor(WarFile.GetCursorResource(WarFile.KnowledgeBase.IndexByName("Not allowed"))); cursorResources[(int)MouseCursorState.CrosshairOrange] = new Cursor(WarFile.GetCursorResource(WarFile.KnowledgeBase.IndexByName("Crosshair Orange"))); cursorResources[(int)MouseCursorState.CrosshairRed] = new Cursor(WarFile.GetCursorResource(WarFile.KnowledgeBase.IndexByName("Crosshair Red"))); cursorResources[(int)MouseCursorState.CrosshairOrange2] = new Cursor(WarFile.GetCursorResource(WarFile.KnowledgeBase.IndexByName("Crosshair Orange 2"))); cursorResources[(int)MouseCursorState.Magnifier] = new Cursor(WarFile.GetCursorResource(WarFile.KnowledgeBase.IndexByName("Magnifier"))); cursorResources[(int)MouseCursorState.CrosshairGreen] = new Cursor(WarFile.GetCursorResource(WarFile.KnowledgeBase.IndexByName("Crosshair Green"))); cursorResources[(int)MouseCursorState.Loading] = new Cursor(WarFile.GetCursorResource(WarFile.KnowledgeBase.IndexByName("Loading..."))); cursorResources[(int)MouseCursorState.ScrollTop] = new Cursor(WarFile.GetCursorResource(WarFile.KnowledgeBase.IndexByName("Scroll Top"))); cursorResources[(int)MouseCursorState.ScrollTopright] = new Cursor(WarFile.GetCursorResource(WarFile.KnowledgeBase.IndexByName("Scroll Topright"))); cursorResources[(int)MouseCursorState.ScrollRight] = new Cursor(WarFile.GetCursorResource(WarFile.KnowledgeBase.IndexByName("Scroll Right"))); cursorResources[(int)MouseCursorState.ScrollBottomright] = new Cursor(WarFile.GetCursorResource(WarFile.KnowledgeBase.IndexByName("Scroll Bottomright"))); cursorResources[(int)MouseCursorState.ScrollBottom] = new Cursor(WarFile.GetCursorResource(WarFile.KnowledgeBase.IndexByName("Scroll Bottom"))); cursorResources[(int)MouseCursorState.ScrollBottomleft] = new Cursor(WarFile.GetCursorResource(WarFile.KnowledgeBase.IndexByName("Scroll Bottomleft"))); cursorResources[(int)MouseCursorState.ScrollLeft] = new Cursor(WarFile.GetCursorResource(WarFile.KnowledgeBase.IndexByName("Scroll Left"))); cursorResources[(int)MouseCursorState.ScrollTopleft] = new Cursor(WarFile.GetCursorResource(WarFile.KnowledgeBase.IndexByName("Scroll Topleft"))); didLoadResources = true; }
private void PopulateListBox() { if (WarFile.AreResoucesLoaded == false) { listBox.Items.Clear(); return; } int resCnt = WarFile.Count; ObservableCollection <ListEntry> coll = new ObservableCollection <ListEntry>(); for (int i = 0; i < resCnt; i++) { ListEntry entry = new ListEntry(); entry.Resource = WarFile.GetResource(i); entry.Index = i; entry.Name = WarFile.KnowledgeBase[i].text; entry.Type = entry.Resource != null ? entry.Resource.Type : ContentFileType.FileUnknown; coll.Add(entry); } ListEntryHeader header = new ListEntryHeader(); header.IndexDesc = "Index"; header.NameDesc = "Name"; header.TypeDesc = "Type"; listBox.Header = header; listBox.ItemsSource = coll; }
private void AutoSetButtonImage(int releaseButtonResourceIndex, int pressedButtonResourceIndex) { backgroundNotClicked = WWTexture.FromImageResource(WarFile.GetImageResource(releaseButtonResourceIndex)); backgroundClicked = WWTexture.FromImageResource(WarFile.GetImageResource(pressedButtonResourceIndex)); Width = (int)(backgroundNotClicked.Width); Height = (int)(backgroundNotClicked.Height); }
private void closeButton_Click(object sender, RoutedEventArgs e) { listBox.Visibility = Visibility.Collapsed; closeButton.IsEnabled = false; WarFile.Unload(); UpdateStatusText(); }
private void ShowMultiUI() { // Fail-safe if (currentEntities.Length <= 1 || currentEntities.Length > 4) { return; } SpriteResource res = WarFile.GetSpriteResource(race == Race.Humans ? 360 : 359); }
/// <summary> /// Allows the game to perform any initialization it needs to before starting to run. /// This is where it can query for any required services and load any non-graphic /// related content. Calling base.Initialize will enumerate through any components /// and initialize them as well. /// </summary> protected override async void Initialize() { base.Initialize(); WinWarCS.Util.Log.Write(Util.LogType.Generic, Util.LogSeverity.Status, "WinWarCS -- Version: " + Version); bool result = await ValidateDataWar(); if (result == false) { await Platform.UI.ShowMessageDialog("DATA.WAR not found at expected location '" + AssetProvider.ExpectedDataDirectory + "'. Please copy the DATA.WAR from the demo or the full version to that location.\r\nIf you have the full version, " + "please also copy all the other .WAR files from the data directory."); return; } Exception loadingException = null; try { Entity.LoadDefaultValues(AssetProvider); WarFile.LoadResources(AssetProvider); MapTileset.LoadAllTilesets(); } catch (Exception ex) { loadingException = ex; } soundManager = new SoundManager(); musicManager = new MusicManager(); if (loadingException != null) { await Platform.UI.ShowMessageDialog("An error occured during loading of DATA.WAR (" + loadingException + ")."); return; } if (WarFile.IsDemo) { SetNextGameScreen(new MenuGameScreen(false)); } else { // Play demo SetNextGameScreen(new IntroGameScreen( delegate(bool wasCancelled) { SetNextGameScreen(new MenuGameScreen(!wasCancelled)); })); } }
internal static WWTexture FromImageResource(string name) { int idx = WarFile.KnowledgeBase.IndexByName(name); if (idx == -1) { return(null); } ImageResource ir = WarFile.GetImageResource(idx); return(FromImageResource(ir)); }
internal void InitWithUIResource(string name) { int idx = WarFile.KnowledgeBase.IndexByName(name); if (idx == -1) { return; } UIResource tr = WarFile.GetUIResource(idx); InitWithUIResource(tr); }
internal static UIWindow FromUIResource(string name) { int idx = WarFile.KnowledgeBase.IndexByName(name); if (idx == -1) { return(null); } UIResource tr = WarFile.GetUIResource(idx); return(FromUIResource(tr)); }
private void ShowSingleUI() { // Fail-safe if (currentEntities.Length != 1) { return; } SpriteResource res = WarFile.GetSpriteResource(race == Race.Humans ? 360 : 359); SpriteResource resUnit = WarFile.GetSpriteResource(361); Entity ent = currentEntities[0]; UISpriteImage unitFrame = new UISpriteImage(new Sprite(res)); unitFrame.FixedSpriteFrame = ent.Mana > 0 ? 1 : 0; unitFrame.X = 0; unitFrame.Y = 0; AddComponent(unitFrame); UISpriteImage unitIcon = new UISpriteImage(new Sprite(resUnit)); unitIcon.FixedSpriteFrame = ent.IconIndex; unitIcon.X = 4; unitIcon.Y = 4; unitFrame.AddComponent(unitIcon); UILabel nameLabel = new UILabel(currentEntities[0].Name); nameLabel.TextAlign = TextAlignHorizontal.Left; nameLabel.X = 4; nameLabel.Y = unitIcon.Y + unitIcon.Height + 2; unitFrame.AddComponent(nameLabel); UIImage img = new UIImage(null); img.X = 35; img.Y = 20; img.Height = 3; img.BackgroundColor = new Color(0.0f, 1.0f, 0.0f, 1.0f); SetHealthbar(img, ent); unitFrame.AddComponent(img); healthBars.Add(ent, img); }
internal void LoadCampaignLevel(Race race, int level) { string basenameInfo = race + " " + level; LevelInfoResource levelInfo = WarFile.GetResourceByName(basenameInfo) as LevelInfoResource; LevelPassableResource levelPassable = WarFile.GetResource(levelInfo.PassableResourceIndex) as LevelPassableResource; LevelVisualResource levelVisual = WarFile.GetResource(levelInfo.VisualResourceIndex) as LevelVisualResource; if (InputHandler != null) { InputHandler.SetMapUnitOrder(MapUnitOrder.None); } CurrentMap = new Map(levelInfo, levelVisual, levelPassable); SetCameraOffset(levelInfo.StartCameraX * CurrentMap.TileWidth, levelInfo.StartCameraY * CurrentMap.TileHeight); CurrentMap.OnSelectedEntitiesChanged += HandleOnSelectedEntitiesChanged; }
internal IngameQuitMenuWindow(Race setRace) { UIResource res = WarFile.GetUIResource(setRace == Race.Humans ? 391 : 392); background = new UIImage(WWTexture.FromImageResource(WarFile.GetImageResource(res.BackgroundImageResourceIndex))); background.InitWithUIResource(res); AddComponent(background); background.CenterOnScreen(); cancelButton = (UIButton)background.Components [3]; cancelButton.OnMouseUpInside += cancelButton_OnMouseUpInside; menuButton = (UIButton)background.Components [2]; menuButton.OnMouseUpInside += menuButton_OnMouseUpInside; quitButton = (UIButton)background.Components [1]; quitButton.OnMouseUpInside += quitButton_OnMouseUpInside; MouseCursor.State = MouseCursorState.Pointer; }
private async void openButton_Click(object sender, RoutedEventArgs e) { FileOpenPicker picker = new FileOpenPicker(); picker.ViewMode = PickerViewMode.List; picker.FileTypeFilter.Add(".WAR"); StorageFile file = await picker.PickSingleFileAsync(); if (file != null) { var stream = await file.OpenAsync(FileAccessMode.Read); WarFile.LoadResourcesFromStream(stream.AsStreamForRead()); } UpdateStatusText(); PopulateListBox(); listBox.Visibility = Visibility.Visible; closeButton.IsEnabled = true; }
public bool LoadSound(int resIndex) { if (effectCache.ContainsKey(resIndex) || WarFile.AreResoucesLoaded == false) { return(false); } RawResource res = WarFile.GetResource(resIndex) as RawResource; if (res == null || res.Type != ContentFileType.FileWave) { return(false); } using (MemoryStream memStream = new MemoryStream(res.Resource.data)) { SoundEffect eff = SoundEffect.FromStream(memStream); effectCache.Add(resIndex, eff); } return(true); }
private void ShowBuildSubMenu() { // Remove all old components ClearComponents(); isInSubmenu = true; healthBars.Clear(); // No entities? Then just exit if (currentEntities == null || currentEntities.Length == 0) { return; } if (currentEntities.Length == 1) { ShowSingleUI(); } else { ShowMultiUI(); } int buttonIndex = 0; if (ShowCancel) { UISpriteButton btn = new UISpriteButton(new Sprite(WarFile.GetSpriteResource(361)), "Cancel"); btn.OnMouseUpInside += (position) => { RebuildUI(); }; SetButtonPosition(btn, 5); AddComponent(btn); buttonIndex++; } }
public HumanBarracks(Map currentMap) : base(currentMap) { sprite = new Sprite(WarFile.GetSpriteResource(WarFile.KnowledgeBase.IndexByName("Human Barracks"))); }
public OrcSpearman(Map currentMap) : base(currentMap) { sprite = new UnitSprite(WarFile.GetSpriteResource(WarFile.KnowledgeBase.IndexByName("Orc Axethrower"))); }
public OrcTownhall(Map currentMap) : base(currentMap) { sprite = new Sprite(WarFile.GetSpriteResource(WarFile.KnowledgeBase.IndexByName("Orc Base"))); }
public HumanFootman(Map currentMap) : base(currentMap) { sprite = new UnitSprite(WarFile.GetSpriteResource(WarFile.KnowledgeBase.IndexByName("Human Warrior"))); }
internal static UISpriteImage FromSpriteResource(string name) { UISpriteImage res = new UISpriteImage(new UnitSprite(WarFile.GetSpriteResource(WarFile.KnowledgeBase.IndexByName(name)))); return(res); }
public Corpse(Map currentMap) : base(currentMap) { sprite = new Sprite(WarFile.GetSpriteResource(WarFile.KnowledgeBase.IndexByName("Corpse"))); }
public HumanArcher(Map currentMap) : base(currentMap) { sprite = new UnitSprite(WarFile.GetSpriteResource(WarFile.KnowledgeBase.IndexByName("Human Bowman"))); }
public OrcGrunt(Map currentMap) : base(currentMap) { sprite = new UnitSprite(WarFile.GetSpriteResource(WarFile.KnowledgeBase.IndexByName("Orc Grunt"))); }
private void RebuildUI() { // Remove all old components ClearComponents(); isInSubmenu = false; healthBars.Clear(); // No entities? Then just exit if (currentEntities == null || currentEntities.Length == 0) { return; } if (currentEntities.Length == 1) { ShowSingleUI(); } else { ShowMultiUI(); } int buttonIndex = 0; if (ShowMove) { UISpriteButton moveBtn = new UISpriteButton(new Sprite(WarFile.GetSpriteResource(361)), "Move" + race); moveBtn.OnMouseUpInside += (position) => { SetMapUnitOrder(MapUnitOrder.Move); }; SetButtonPosition(moveBtn, buttonIndex); AddComponent(moveBtn); buttonIndex++; } if (ShowStop) { UISpriteButton btn = new UISpriteButton(new Sprite(WarFile.GetSpriteResource(361)), "Shield1" + (race == Race.Humans ? "" : "Orcs")); btn.OnMouseUpInside += (position) => { Stop(); }; SetButtonPosition(btn, buttonIndex); AddComponent(btn); buttonIndex++; } if (ShowAttack) { UISpriteButton btn = new UISpriteButton(new Sprite(WarFile.GetSpriteResource(361)), "Sword1"); btn.OnMouseUpInside += (position) => { SetMapUnitOrder(MapUnitOrder.Attack); }; SetButtonPosition(btn, buttonIndex); AddComponent(btn); buttonIndex++; } if (ShowRepair) { UISpriteButton btn = new UISpriteButton(new Sprite(WarFile.GetSpriteResource(361)), "Repair"); btn.OnMouseUpInside += (position) => { SetMapUnitOrder(MapUnitOrder.Repair); }; SetButtonPosition(btn, buttonIndex); AddComponent(btn); buttonIndex++; } if (ShowHarvest) { UISpriteButton btn = new UISpriteButton(new Sprite(WarFile.GetSpriteResource(361)), "Harvest"); btn.OnMouseUpInside += (position) => { SetMapUnitOrder(MapUnitOrder.Harvest); }; SetButtonPosition(btn, buttonIndex); AddComponent(btn); buttonIndex++; } if (ShowBuild) { UISpriteButton btn = new UISpriteButton(new Sprite(WarFile.GetSpriteResource(361)), "Build"); btn.OnMouseUpInside += (position) => { ShowBuildSubMenu(); }; SetButtonPosition(btn, buttonIndex); AddComponent(btn); buttonIndex++; } if (ShowCancel) { UISpriteButton btn = new UISpriteButton(new Sprite(WarFile.GetSpriteResource(361)), "Cancel"); btn.OnMouseUpInside += (position) => { RebuildUI(); }; SetButtonPosition(btn, 6); AddComponent(btn); buttonIndex++; } if (currentEntities.Length == 1) { currentEntities[0].AddCustomUI(this); } }
public HumanStormwind(Map currentMap) : base(currentMap) { sprite = new Sprite(WarFile.GetSpriteResource(WarFile.KnowledgeBase.IndexByName("Stormwind"))); }
public HumanConjurer(Map currentMap) : base(currentMap) { sprite = new UnitSprite(WarFile.GetSpriteResource(WarFile.KnowledgeBase.IndexByName("Human Wizard"))); }
public HumanCatapult(Map currentMap) : base(currentMap) { sprite = new UnitSprite(WarFile.GetSpriteResource(WarFile.KnowledgeBase.IndexByName("Human Catapult"))); }