public VerticalList(_2DRenderer renderer, Vector2 padding, float nVisibleItems) { this.padding = padding; this.nVisibleItems = nVisibleItems; this.renderer = renderer; this.renderer.AddChildRenderer(new _2DRenderer()); AddComponent(renderer); itemSize = new Vector2(1 - padding.X * 2, (1 - padding.Y * 2) / nVisibleItems); maxScrollPosition = itemSize.Y * (items.Count - nVisibleItems); if (maxScrollPosition < 0) { maxScrollPosition = 0; } scissorRect = Utility.CalculateDrawArea(padding, Vector2.One - padding * 2, renderer.GetDrawArea()); clippingRS = new RasterizerState(); clippingRS.ScissorTestEnable = true; }
public MapEditorScreen() { // background _2DRenderer background = new SpriteRenderer(Game.Content.Load <Texture2D>(@"Sprites\MainMenuBackground")); AddComponent(background); // map preview mapPreview = new _2DRenderer(); mapPreview.position = new Vector2(0.1f, 0.02f); mapPreview.size = new Vector2(0.4f, 0.4f); AddComponent(mapPreview); // terrain list _2DRenderer terrainListRenderer = new SpriteRenderer(Game.Content.Load <Texture2D>(@"Sprites\MainMenuFrame")); terrainListRenderer.position = new Vector2(0.75f, 0.02f); terrainListRenderer.size = new Vector2(0.2f, 0.6f); Vector2 terrainListPadding = new Vector2(0.1f, 0.1f); float nVisibleTerrain = 3.5f; terrainList = new VerticalList <TerrainDescription>(terrainListRenderer, terrainListPadding, nVisibleTerrain); terrainList.onItemSelected = onTerrainSelected; AddComponent(terrainList); // fill data to terrain list string[] terrainPathList = Directory.GetFiles(Game.Content.RootDirectory + @"\terrain\", "*.bmp", SearchOption.TopDirectoryOnly); SpriteFont terrainItemFont = Game.Content.Load <SpriteFont>(@"Fonts\Arial"); foreach (string terrainPath in terrainPathList) { ListItem <TerrainDescription> terrainItem = new ListItem <TerrainDescription>(); // item data string terrainName = Path.GetFileNameWithoutExtension(terrainPath); Texture2D terrainTexture = Game.Content.Load <Texture2D>(@"Terrain\" + terrainName); terrainItem.data = new TerrainDescription(); terrainItem.data.TerrainName = terrainName; terrainItem.data.TerrainTexture = terrainTexture; // item display terrainItem.renderer = new _2DRenderer(); _2DRenderer terrainThumbnailRenderer = new SquareSpriteRenderer(terrainTexture, Color.Blue); terrainThumbnailRenderer.position = new Vector2(0.05f, 0.2f); terrainThumbnailRenderer.size = new Vector2(0, 0.6f); terrainItem.renderer.AddChildRenderer(terrainThumbnailRenderer); _2DRenderer terrainNameRenderer = new TextRenderer(terrainName); terrainNameRenderer.position = new Vector2(0.3f, 0.05f); terrainItem.renderer.AddChildRenderer(terrainNameRenderer); terrainList.Add(terrainItem); } // edit map button _2DRenderer editMapButtonRenderer = new SpriteRenderer(Game.Content.Load <Texture2D>(@"Sprites\MainMenuButton")); editMapButtonRenderer.AddChildRenderer(new TextRenderer("Edit")); editMapButtonRenderer.position = terrainListRenderer.position + new Vector2(0, terrainListRenderer.size.Y); editMapButtonRenderer.size = new Vector2(terrainListRenderer.size.X, terrainListRenderer.size.Y / 8); editMapButton = new HUD(editMapButtonRenderer); editMapButton.onClick = onEditClicked; AddComponent(editMapButton); // exit button _2DRenderer exitButtonRenderer = new SpriteRenderer(Game.Content.Load <Texture2D>(@"Sprites\MainMenuButton")); exitButtonRenderer.AddChildRenderer(new TextRenderer("Exit")); exitButtonRenderer.position = editMapButtonRenderer.position + new Vector2(0, editMapButtonRenderer.size.Y + 0.2f); exitButtonRenderer.size = editMapButtonRenderer.size; HUD exitButton = new HUD(exitButtonRenderer); exitButton.onClick = onExitClicked; AddComponent(exitButton); }
public SelectLevelScreen() { // background _2DRenderer background = new SpriteRenderer(Game.Content.Load <Texture2D>(@"Sprites\MainMenuBackground")); AddComponent(background); // map preview mapPreview = new _2DRenderer(); mapPreview.position = new Vector2(0.1f, 0.02f); mapPreview.size = new Vector2(0.4f, 0.4f); AddComponent(mapPreview); // level list _2DRenderer levelListRenderer = new SpriteRenderer(Game.Content.Load <Texture2D>(@"Sprites\MainMenuFrame")); levelListRenderer.position = new Vector2(0.75f, 0.02f); levelListRenderer.size = new Vector2(0.2f, 0.6f); Vector2 levelListPadding = new Vector2(0.1f, 0.1f); float nVisibleLevel = 3.5f; levelList = new VerticalList <LevelDescription>(levelListRenderer, levelListPadding, nVisibleLevel); levelList.onItemSelected = onLevelSelected; AddComponent(levelList); // fill data to level list string[] levelPathList = Directory.GetFiles(Game.Content.RootDirectory + @"\Level\", "*.xml", SearchOption.TopDirectoryOnly); SpriteFont levelItemFont = Game.Content.Load <SpriteFont>(@"Fonts\Arial"); foreach (string levelPath in levelPathList) { ListItem <LevelDescription> levelItem = new ListItem <LevelDescription>(); // level data string levelName = Path.GetFileNameWithoutExtension(levelPath); LevelDescription levelDescription = LevelDescription.LoadFromXML(levelPath); levelItem.data = levelDescription; Texture2D levelTerrainTexture = Game.Content.Load <Texture2D>(@"Terrain\" + levelDescription.TerrainName); // level display levelItem.renderer = new _2DRenderer(); _2DRenderer terrainThumbnailRenderer = new SquareSpriteRenderer(levelTerrainTexture, Color.Blue); terrainThumbnailRenderer.position = new Vector2(0.05f, 0.2f); terrainThumbnailRenderer.size = new Vector2(0, 0.6f); levelItem.renderer.AddChildRenderer(terrainThumbnailRenderer); _2DRenderer levelNameRenderer = new TextRenderer(levelName); levelNameRenderer.position = new Vector2(0.3f, 0.05f); levelItem.renderer.AddChildRenderer(levelNameRenderer); levelList.Add(levelItem); } // play button _2DRenderer playButtonRenderer = new SpriteRenderer(Game.Content.Load <Texture2D>(@"Sprites\MainMenuButton")); playButtonRenderer.AddChildRenderer(new TextRenderer("Play")); playButtonRenderer.position = levelListRenderer.position + new Vector2(0, levelListRenderer.size.Y); playButtonRenderer.size = new Vector2(levelListRenderer.size.X, levelListRenderer.size.Y / 8); HUD playButton = new HUD(playButtonRenderer); playButton.onClick = onPlayClicked; AddComponent(playButton); // exit button _2DRenderer exitButtonRenderer = new SpriteRenderer(Game.Content.Load <Texture2D>(@"Sprites\MainMenuButton")); exitButtonRenderer.AddChildRenderer(new TextRenderer("Exit")); exitButtonRenderer.position = new Vector2(0.8f, 0.8f); exitButtonRenderer.size = new Vector2(0.1f, 0.1f); HUD exitButton = new HUD(exitButtonRenderer); exitButton.onClick = onExitClicked; AddComponent(exitButton); }
public void AddChildRenderer(_2DRenderer childRenderer) { childRenderers.Add(childRenderer); childRenderer.parentRenderer = this; }
public void LoadMap(TerrainDescription terrainData) { this.terrainName = terrainData.TerrainName; Skybox sky = new Skybox(); Map map = new HeightMap(terrainData.TerrainTexture); Game.Components.Add(sky); Game.Components.Add(map); Camera mainCamera = new RTSCamera(new Vector3(0, 0, 0), 100, -60); Game.Components.Add(mainCamera); // player start point _2DRenderer playerStartPointRenderer = new _2DRenderer(); playerStartPointRenderer.position = new Vector2(0.05f, 0.9f); playerStartPointRenderer.size = new Vector2(0.1f, 0.1f); _2DRenderer playerFlag = new SpriteRenderer(Game.Content.Load <Texture2D>(@"Sprites\PlayerStartPoint")); playerFlag.size = new Vector2(0.7f, 0.7f); playerFlag.position = new Vector2(0.15f, 0); playerStartPointRenderer.AddChildRenderer(playerFlag); _2DRenderer playerStartPointText = new TextRenderer("Player start point"); playerStartPointText.position = new Vector2(-0.2f, 0.7f); playerStartPointRenderer.AddChildRenderer(playerStartPointText); playerStartPointHUD = new HUD(playerStartPointRenderer); playerStartPointHUD.onClick = SelectPlayerStartPoint; Game.Components.Add(playerStartPointHUD); // enemy spawn point _2DRenderer enemySpawnPointRenderer = new _2DRenderer(); enemySpawnPointRenderer.position = new Vector2(0.25f, 0.9f); enemySpawnPointRenderer.size = new Vector2(0.1f, 0.1f); _2DRenderer enemyFlag = new SpriteRenderer(Game.Content.Load <Texture2D>(@"Sprites\EnemySpawnPoint")); enemyFlag.size = new Vector2(0.7f, 0.7f); enemyFlag.position = new Vector2(0.15f, 0); enemySpawnPointRenderer.AddChildRenderer(enemyFlag); _2DRenderer enemySpawnPointText = new TextRenderer("Enemy spawn point"); enemySpawnPointText.position = new Vector2(-0.2f, 0.7f); enemySpawnPointRenderer.AddChildRenderer(enemySpawnPointText); enemySpawnPointHUD = new HUD(enemySpawnPointRenderer); enemySpawnPointHUD.onClick = SelectedEnemySpawnPoint; Game.Components.Add(enemySpawnPointHUD); // save button _2DRenderer saveButtonRenderer = new SpriteRenderer(Game.Content.Load <Texture2D>(@"Sprites\MainMenuButton")); saveButtonRenderer.size = new Vector2(0.1f, 0.1f); saveButtonRenderer.position = new Vector2(0.7f, 0.9f); saveButtonRenderer.AddChildRenderer(new TextRenderer("Save")); HUD saveButton = new HUD(saveButtonRenderer); saveButton.onClick = SaveButtonClick; Game.Components.Add(saveButton); // exit button _2DRenderer exitButtonRenderer = new SpriteRenderer(Game.Content.Load <Texture2D>(@"Sprites\MainMenuButton")); exitButtonRenderer.size = new Vector2(0.1f, 0.1f); exitButtonRenderer.position = new Vector2(0.8f, 0.9f); exitButtonRenderer.AddChildRenderer(new TextRenderer("Exit")); HUD exitButton = new HUD(exitButtonRenderer); exitButton.onClick = ExitButtonClick; Game.Components.Add(exitButton); }