public static void CreateBuffers <T>(RTSRenderer renderer, T[] verts, VertexDeclaration vd, short[] inds, out VertexBuffer vb, out IndexBuffer ib, BufferUsage bu = BufferUsage.WriteOnly) where T : struct, IVertexType { vb = renderer.CreateVertexBuffer(vd, verts.Length, bu); vb.SetData(verts); ib = renderer.CreateIndexBuffer(IndexElementSize.SixteenBits, inds.Length, bu); ib.SetData(inds); }
public override void OnEntry(GameTime gameTime) { DevConsole.OnNewCommand += DevConsole_OnNewCommand; KeyboardEventDispatcher.OnKeyPressed += KeyboardEventDispatcher_OnKeyPressed; input.Refresh(); sP.Hook(); sS.Hook(); sT.Hook(); RendererInitArgs ria = ZXParser.ParseFile(@"Content\FX\RIA.txt", typeof(RendererInitArgs)) as RendererInitArgs; renderer = new RTSRenderer(game.Graphics, game.Content, ria, game.Window); // Rendering Effect fx = new RTSFXEntity(renderer.LoadEffect(FX_FILE_PATH)); // Default Team sP.Color = RTSColorScheme.Default.Primary; sS.Color = RTSColorScheme.Default.Secondary; sT.Color = RTSColorScheme.Default.Tertiary; colorScheme.Name = RTSColorScheme.Default.Name; // Create Camera camera = new OrbitingCamera(Vector3.Zero, 4f, G.Viewport.AspectRatio); camera.Pitch = MathHelper.PiOver4; camera.Yaw = 0; camera.FOV = MathHelper.PiOver4; unitDataFiles = new List <FileInfo>(); schemeFiles = new List <FileInfo>(); FindAllData(); curUnit = 0; }
public void Build(RTSRenderer renderer, string rootPath, string model, string[] tex) { using (var sModel = File.OpenRead(Path.Combine(rootPath, model))) { View = new RTSBuildingModel(renderer, sModel); } View.ModelTexture = renderer.LoadTexture2D(Path.Combine(rootPath, tex[0])); View.ColorCodeTexture = renderer.LoadTexture2D(Path.Combine(rootPath, tex[1])); }
public RTSUnitDataPanel(RTSRenderer renderer, WidgetRenderer wr, UICUnitData _uic, UICCombatStats _uicCS) { uic = _uic; iconLib = renderer.IconLibrary; WidgetBase = new RectWidget(wr, renderer.LoadTexture2D(uic.PanelImage)); WidgetBase.Width = uic.PanelSize.X; WidgetBase.Height = uic.PanelSize.Y; WidgetBase.Color = uic.PanelColor; icon = new RectWidget(wr); icon.Width = uic.IconSize; icon.Height = uic.IconSize; icon.Color = Color.White; icon.Offset = new Point(uic.IconBuffer, uic.IconBuffer); icon.Parent = WidgetBase; rectHealthBack = new RectWidget(wr); rectHealthBack.Width = uic.IconSize; rectHealthBack.Height = uic.HealthHeight; rectHealthBack.AlignX = Alignment.MID; rectHealthBack.OffsetAlignX = Alignment.MID; rectHealthBack.OffsetAlignY = Alignment.BOTTOM; rectHealthBack.Offset = new Point(0, uic.IconBuffer); rectHealthBack.Color = UserConfig.MainScheme.WidgetBorder; rectHealthBack.Parent = icon; rectHealthFore = new RectWidget(wr); rectHealthFore.Width = uic.IconSize; rectHealthFore.Height = uic.HealthHeight; rectHealthFore.AlignX = Alignment.MID; rectHealthFore.AlignY = Alignment.MID; rectHealthFore.OffsetAlignX = Alignment.MID; rectHealthFore.OffsetAlignY = Alignment.MID; rectHealthFore.Offset = new Point(0, 0); rectHealthFore.Color = uic.HealthMaxColor; rectHealthFore.Parent = rectHealthBack; txtName = new TextWidget(wr); txtName.Height = uic.TextHeight; txtName.OffsetAlignX = Alignment.RIGHT; txtName.Offset = new Point(uic.IconBuffer, 0); txtName.Color = UserConfig.MainScheme.Text; txtName.Parent = icon; combatData = new RectButton(wr, uic.CombatSize, uic.CombatSize, Color.Gray, Color.White, renderer.LoadTexture2D(uic.CombatImage)); combatData.AlignX = Alignment.RIGHT; combatData.AlignY = Alignment.BOTTOM; combatData.OffsetAlignX = Alignment.RIGHT; combatData.OffsetAlignY = Alignment.BOTTOM; combatData.Parent = WidgetBase; uiCStats = new RTSUICombatStats(wr, _uicCS); uiCStats.WidgetBase.AlignY = Alignment.BOTTOM; uiCStats.WidgetBase.Anchor = new Point(1000000, 1000000); uiCSHover = new RTSUIHoverPanel(combatData, uiCStats.WidgetBase); }
private void BuildMinimap(RTSRenderer renderer, UICMinimap uic) { Minimap = new RTSUIMinimap(renderer, wrMain, renderer.Minimap.Terrain, null, uic); Minimap.WidgetBase.AlignX = Alignment.RIGHT; Minimap.WidgetBase.AlignY = Alignment.BOTTOM; Minimap.WidgetBase.OffsetAlignX = Alignment.RIGHT; Minimap.WidgetBase.OffsetAlignY = Alignment.BOTTOM; Minimap.WidgetBase.Parent = rectBounds; }
public void Build(RTSRenderer renderer, string rootPath, string model, string[] tex) { using (var sModel = File.OpenRead(Path.Combine(rootPath, model))) { Texture2D tAnim = AnimationFromBitmap(renderer, Path.Combine(rootPath, tex[0])); View = new RTSUnitModel(renderer, sModel, tAnim); } View.ModelTexture = renderer.LoadTexture2D(Path.Combine(rootPath, tex[1])); View.ColorCodeTexture = renderer.LoadTexture2D(Path.Combine(rootPath, tex[2])); }
private void BuildBuildingDataPanel(RTSRenderer renderer) { BuildingDataPanel = new RTSBuildingDataPanel(renderer, wrMain, uic.UICBuildingData); BuildingDataPanel.WidgetBase.AlignX = Alignment.LEFT; BuildingDataPanel.WidgetBase.AlignY = Alignment.BOTTOM; BuildingDataPanel.WidgetBase.OffsetAlignX = Alignment.RIGHT; BuildingDataPanel.WidgetBase.OffsetAlignY = Alignment.BOTTOM; BuildingDataPanel.WidgetBase.Offset = new Point(0, 0); BuildingDataPanel.WidgetBase.Parent = BBPanel.BackPanel; }
public WorldManager(Game game) { this.game = game; world = new SimulatorWorld(); rtsRenderer = new RTSRenderer(); NUM_CARS = 0; rng = new Random(2); lastCarAddedTime = 0; }
public void Draw(RTSRenderer renderer, SpriteBatch batch) { wrMain.Draw(batch); Rectangle rMap = new Rectangle(Minimap.MapRect.X, Minimap.MapRect.Y, Minimap.MapRect.Width, Minimap.MapRect.Height); batch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullNone); batch.Draw(renderer.Minimap.TeamMap, rMap, Color.White); batch.End(); renderer.Minimap.DrawCamera(renderer, rMap); }
private void BuildUnitDataPanel(RTSRenderer renderer) { UnitDataPanel = new RTSUnitDataPanel(renderer, wrMain, uic.UICUnitData, uic.UICCombatStats); UnitDataPanel.WidgetBase.AlignX = Alignment.LEFT; UnitDataPanel.WidgetBase.AlignY = Alignment.BOTTOM; UnitDataPanel.WidgetBase.OffsetAlignX = Alignment.RIGHT; UnitDataPanel.WidgetBase.OffsetAlignY = Alignment.BOTTOM; UnitDataPanel.WidgetBase.Offset = new Point(0, 0); UnitDataPanel.WidgetBase.Parent = BBPanel.BackPanel; }
private void BuildBBPanel(RTSRenderer renderer) { BBPanel = new RTSUIBuildingButtonPanel(wrMain, uic.BBRows, uic.BBColumns, uic.BBIconSize, uic.BBIconBuffer); BBPanel.BackPanel.Texture = renderer.LoadTexture2D(uic.BBTexture); BBPanel.BackPanel.Parent = rectBounds; BBPanel.BackPanel.AlignY = Alignment.BOTTOM; BBPanel.BackPanel.OffsetAlignY = Alignment.BOTTOM; BBPanel.BackPanel.Offset = new Point(0, 0); BBPanel.IconLibrary = renderer.IconLibrary; BBPanel.BackPanel.Color = UserConfig.MainScheme.WidgetBase; }
private void BuildSelectionPanel(RTSRenderer renderer) { SelectionPanel = new RTSUISelectionPanel(wrMain, uic.SelectionRows, uic.SelectionColumns, uic.SelectionIconSize, uic.SelectionIconBuffer); SelectionPanel.BackPanel.Texture = renderer.LoadTexture2D(uic.SelectionTexture); SelectionPanel.IconLibrary = renderer.IconLibrary; SelectionPanel.BackPanel.AlignX = Alignment.LEFT; SelectionPanel.BackPanel.AlignY = Alignment.BOTTOM; SelectionPanel.BackPanel.OffsetAlignX = Alignment.RIGHT; SelectionPanel.BackPanel.OffsetAlignY = Alignment.BOTTOM; SelectionPanel.BackPanel.Color = UserConfig.MainScheme.WidgetBase; SelectionPanel.BackPanel.Offset = new Point(0, 0); SelectionPanel.BackPanel.Parent = BBPanel.BackPanel; }
public void Build(RTSRenderer renderer) { // Create UI UI = new RTSUI(renderer, @"Packs\Default\scripts\input\player\RTS.uic", showBuild); UI.SetTeam(Team); OnNewSelection += UI.SelectionPanel.OnNewSelection; OnNewSelection += UI.BBPanel.OnNewSelection; OnNewSelection += Player_OnNewSelection; GameState.OnAlert += UI.AlertQueue.OnAlert; Team.OnPopulationChange += (t, c) => { UI.TeamDataPanel.Population = Team.Population; }; Team.OnPopulationCapChange += (t, c) => { UI.TeamDataPanel.PopulationCap = Team.PopulationCap; }; Team.OnCapitalChange += (t, c) => { UI.TeamDataPanel.Capital = Team.Capital; }; }
private void BuildBounds(RTSRenderer renderer) { rectBounds = new RectWidget(wrMain); rectBounds.Color = Color.Transparent; rectBounds.Anchor = new Point(0, 0); rectBounds.AlignX = Alignment.LEFT; rectBounds.AlignY = Alignment.TOP; rectBounds.Width = renderer.G.Viewport.Width; rectBounds.Height = renderer.G.Viewport.Height; renderer.Window.ClientSizeChanged += (sender, args) => { rectBounds.Width = renderer.G.Viewport.Width; rectBounds.Height = renderer.G.Viewport.Height; }; rectBounds.LayerDepth = 1f; }
public static RTSUnitModel ParseModel(RTSRenderer renderer, FileInfo infoFile, RTSRace race) { // Check File Existence if (infoFile == null || !infoFile.Exists) { return(null); } ZXParser.SetEnvironment("FILEROOTDIR", infoFile.Directory.FullName); ZXParser.SetEnvironment("RENDERER", renderer); ZXParser.SetEnvironment("RACE", race); RTSUnitViewData vd = ZXParser.ParseFile(infoFile.FullName, typeof(RTSUnitViewData)) as RTSUnitViewData; return(vd.View); }
private static Texture2D AnimationFromBitmap(RTSRenderer renderer, string fi) { Texture2D t; float[] sData = null; int w, h; using (var bmp = System.Drawing.Bitmap.FromFile(fi) as System.Drawing.Bitmap) { w = bmp.Width; h = bmp.Height; sData = new float[w * h]; System.Drawing.Imaging.BitmapData data = bmp.LockBits(new System.Drawing.Rectangle(0, 0, w, h), System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat); System.Runtime.InteropServices.Marshal.Copy(data.Scan0, sData, 0, (data.Stride * data.Height) >> 2); bmp.UnlockBits(data); } t = renderer.CreateTexture2D(w, h, SurfaceFormat.Single); t.SetData(sData); return(t); }
public RTSUIMinimap(RTSRenderer renderer, WidgetRenderer wr, Texture2D tPhys, Texture2D tImp, UICMinimap uic) { tPhysical = tPhys; tImpact = tImp; WidgetBase = new RectWidget(wr); WidgetBase.Width = uic.ButtonWidth + uic.MapSize + uic.Buffer * 2; WidgetBase.Height = uic.MapSize + uic.Buffer * 2; WidgetBase.Color = uic.BaseColor; int bh = uic.MapSize / 2; btnPhysical = new RectButton(wr, uic.ButtonWidth, bh, uic.PhysicalInactiveColor, uic.PhysicalActiveColor, renderer.LoadTexture2D(uic.PhysicalTexture) ); btnImpact = new RectButton(wr, uic.ButtonWidth, bh, uic.ImpactInactiveColor, uic.ImpactActiveColor, renderer.LoadTexture2D(uic.ImpactTexture) ); btnPhysical.Offset = new Point(uic.Buffer, uic.Buffer); btnPhysical.Parent = WidgetBase; btnImpact.OffsetAlignY = Alignment.BOTTOM; btnImpact.Parent = btnPhysical; MapRect = new RectWidget(wr, tPhysical); MapRect.Width = uic.MapSize; MapRect.Height = uic.MapSize; MapRect.Color = Color.White; MapRect.OffsetAlignX = Alignment.RIGHT; MapRect.Parent = btnPhysical; btnPhysical.OnButtonPress += (b, p) => { MapRect.Texture = tPhysical; }; btnImpact.OnButtonPress += (b, p) => { MapRect.Texture = tImpact; }; }
public override void OnEntry(GameTime gameTime) { tPopup = null; end = false; MouseEventDispatcher.OnMousePress += OnMP; KeyboardEventDispatcher.OnKeyPressed += OnKP; KeyboardEventDispatcher.OnKeyReleased += OnKR; DevConsole.OnNewCommand += DevConsole_OnNewCommand; team = 0; type = 0; state = game.LoadScreen.LoadedState; state.OnNewPopup += OnNewPopup; camera = game.LoadScreen.LoadedCamera; renderer = game.LoadScreen.LoadedRenderer; renderer.UseFOW = true; gameInput = (from t in state.teams where t.Input != null && t.Input.Type == RTSInputType.Player select t.Input).FirstOrDefault(); vInput = gameInput == null ? null : gameInput as IVisualInputController; playController = game.LoadScreen.LoadedGPlay; sfDebug = renderer.LoadFont(@"Fonts\CourierNew32"); // Create Game Engine Thread playController.BeginPlaying(state); tEngine = new Thread(EngineThread); tEngine.Priority = ThreadPriority.Highest; tEngine.TrySetApartmentState(ApartmentState.MTA); tEngine.IsBackground = true; playing = 1; pauseEngine = false; pauseRender = false; tEngine.Start(); // Create Background Music jukeBox = new Jukebox(); jukeBox.LoadFromDirectory(new DirectoryInfo(BS_SOUND_DIR)); }
public RTSUI(RTSRenderer renderer, string uicFile, bool showBuildPanel) { uic = ZXParser.ParseFile(uicFile, typeof(UICRTS)) as UICRTS; SpriteFont font = renderer.LoadFont(uic.Font); wrButtonPanel = new WidgetRenderer(renderer.G, font); wrMain = new WidgetRenderer(renderer.G, font); BuildBounds(renderer); BuildMinimap(renderer, uic.UICMinimap); BuildBBPanel(renderer); BuildBuildingPanel(showBuildPanel); BuildSelectionPanel(renderer); BuildUnitDataPanel(renderer); BuildBuildingDataPanel(renderer); BuildTeamDataPanel(); AlertQueue = new RTSUIAlertQueue(wrMain, uic.UICAlertQueue); AlertQueue.WidgetBase.Parent = Minimap.WidgetBase; SelectionToggle = 0; }
public void Update(RTSRenderer renderer, GameState s) { UI.AlertQueue.Update(); UI.BuildingDataPanel.Update(); }
private void WorkThread() { try { // Start With Default Values isLoaded = false; loadException = null; LoadedRenderer = null; // Grab The Initialization Info loadData = game.LobbyScreen.InitInfo; // Build The Local Game State LoadedState = new GameState(); if (LoadFile == null) { GameEngine.BuildLocal(LoadedState, LoadData, new DirectoryInfo(@"Packs"), game.LobbyScreen.Races); } else { GameEngine.Load(LoadedState, new DirectoryInfo(@"Packs"), LoadFile.FullName); } // Create The Input Controllers for (int ti = 0; ti < LoadedState.teams.Length; ti++) { if (string.IsNullOrWhiteSpace(LoadData.Teams[ti].InputController)) { continue; } GameEngine.SetInput(LoadedState, ti, LoadedState.Scripts[LoadData.Teams[ti].InputController].CreateInstance <ACInputController>()); } // Create Camera LoadedCamera = new Camera(G.Viewport); LoadedCamera.Controller.Hook(game.Window); // Load The Renderer RendererInitArgs ria = ZXParser.ParseFile(@"Content\FX\RIA.txt", typeof(RendererInitArgs)) as RendererInitArgs; LoadedRenderer = new RTSRenderer(game.Graphics, game.Content, ria, game.Window); LoadedRenderer.HookToGame(LoadedState, 0, LoadedCamera); // Initialize Inputs int teami = -1; foreach (var t in LoadedState.teams) { teami++; if (t == null) { continue; } // Set Camera var vInput = t.Input as IVisualInputController; if (vInput != null) { vInput.Camera = LoadedCamera; } // Init t.Input.Init(LoadedState, t.Index, loadData.Teams[teami].InputInitArgs); // Build if (vInput != null) { vInput.Build(LoadedRenderer); } } // Create Gameplay LoadedGPlay = new GameplayController(); GCInitArgs gca = new GCInitArgs() { GameTypeScript = LoadData.GTController }; LoadedGPlay.Init(LoadedState, gca); } catch (Exception e) { if (LoadedRenderer != null) { LoadedRenderer.Dispose(); } loadException = e; } isLoaded = true; }
public void Draw(RTSRenderer renderer, SpriteBatch batch) { UI.Draw(renderer, batch); }
public RTSBuildingDataPanel(RTSRenderer renderer, WidgetRenderer wr, UICBuildingData _uic) { uic = _uic; iconLib = renderer.IconLibrary; WidgetBase = new RectWidget(wr, renderer.LoadTexture2D(uic.PanelImage)); WidgetBase.Width = uic.PanelSize.X; WidgetBase.Height = uic.PanelSize.Y; WidgetBase.Color = uic.PanelColor; icon = new RectWidget(wr); icon.Width = uic.IconSize; icon.Height = uic.IconSize; icon.Color = Color.White; icon.Offset = new Point(uic.IconBuffer, uic.IconBuffer); icon.Parent = WidgetBase; rectHealthBack = new RectWidget(wr); rectHealthBack.Width = uic.IconSize; rectHealthBack.Height = uic.HealthHeight; rectHealthBack.AlignX = Alignment.MID; rectHealthBack.OffsetAlignX = Alignment.MID; rectHealthBack.OffsetAlignY = Alignment.BOTTOM; rectHealthBack.Offset = new Point(0, uic.IconBuffer); rectHealthBack.Color = UserConfig.MainScheme.WidgetBorder; rectHealthBack.Parent = icon; rectHealthFore = new RectWidget(wr); rectHealthFore.Width = uic.IconSize; rectHealthFore.Height = rectHealthBack.Height; rectHealthFore.AlignX = Alignment.MID; rectHealthFore.AlignY = Alignment.MID; rectHealthFore.OffsetAlignX = Alignment.MID; rectHealthFore.OffsetAlignY = Alignment.MID; rectHealthFore.Offset = new Point(0, 0); rectHealthFore.Color = uic.HealthMaxColor; rectHealthFore.Parent = rectHealthBack; queueButtons = new RectButton[6]; queueButtons[0] = new RectButton(wr, uic.QueueIconMainSize, uic.QueueIconMainSize, Color.White, uic.QueueButtonHighlightColor); queueButtons[0].AlignY = Alignment.BOTTOM; queueButtons[0].OffsetAlignY = Alignment.BOTTOM; queueButtons[0].OffsetAlignX = Alignment.RIGHT; queueButtons[0].Offset = new Point(uic.IconBuffer, 0); queueButtons[0].Parent = rectHealthBack; for (int i = 1; i < 6; i++) { queueButtons[i] = new RectButton(wr, uic.QueueIconQueuedSize, uic.QueueIconQueuedSize, Color.White, uic.QueueButtonHighlightColor); queueButtons[i].AlignY = Alignment.BOTTOM; queueButtons[i].OffsetAlignY = Alignment.BOTTOM; queueButtons[i].OffsetAlignX = Alignment.RIGHT; queueButtons[i].Parent = queueButtons[i - 1]; } rectQueueBack = new RectWidget(wr); rectQueueBack.Width = uic.QueueIconQueuedSize * 5; rectQueueBack.Height = uic.QueueIconMainSize - uic.QueueIconQueuedSize; rectQueueBack.OffsetAlignX = Alignment.RIGHT; rectQueueBack.Color = UserConfig.MainScheme.WidgetBorder; rectQueueBack.Parent = queueButtons[0]; rectQueueFore = new RectWidget(wr); rectQueueFore.Width = uic.IconSize; rectQueueFore.Height = rectQueueBack.Height; rectQueueFore.AlignY = Alignment.MID; rectQueueFore.OffsetAlignY = Alignment.MID; rectQueueFore.Offset = new Point(0, 0); rectQueueFore.Color = uic.QueueMaxColor; rectQueueFore.Parent = rectQueueBack; txtName = new TextWidget(wr); txtName.Height = uic.TextHeight; txtName.OffsetAlignX = Alignment.RIGHT; txtName.Offset = new Point(uic.IconBuffer, 0); txtName.Color = UserConfig.MainScheme.Text; txtName.Parent = icon; }