// Start is called before the first frame update void Start() { floor = GameObject.Find("Floor"); player = GameObject.Find("Player"); lava.transform.position = floor.transform.position; this.lavaArea = lava.GetComponent <WaterArea>(); lavaArea.size = new Vector2(floor.transform.localScale.x, floor.transform.localScale.y); this.lavaArea = lava.GetComponent <WaterArea>(); lavaLevel = GameObject.Find("Lava line"); lavaLevel.SetActive(true); lavaLevel.transform.position = new Vector3(lavaLevel.transform.position.x, lava.transform.position.y + (lavaArea.size.y * lavaSizeMultiplier / 2) * lava.transform.localScale.y, lavaLevel.transform.position.z); deathUI.SetActive(false); settingsUI.SetActive(false); hudUI.SetActive(true); winUI.SetActive(false); floor.SetActive(true); lava.SetActive(false); settingsUI.transform.Find("Same Layout Button").gameObject.SetActive(false); originalPlayerPosition = player.transform.position; objectiveList[currentObjective].IsActive = true; Vector2 size = floor.GetComponent <BoxCollider2D>().bounds.size; playerBody = player.GetComponent <Rigidbody2D>(); playerScript = player.GetComponent <PlayerMovement>(); SetDragMode(); sourceMusic.clip = music; sourceMusic.loop = true; sourceMusic.Play(); }
public void BeginLevel(bool restart, bool toDragMode) { settingsUI.SetActive(false); hudUI.SetActive(true); deathUI.SetActive(false); lava.transform.position = floor.transform.position; this.lavaArea = lava.GetComponent <WaterArea>(); lavaArea.size = new Vector2(floor.transform.localScale.x, floor.transform.localScale.y); lava.SetActive(true); lavaLevel.SetActive(false); lavaArea.AdjustComponentSizes(); lavaArea.RecomputeMesh(); floor.SetActive(false); for (int i = 0; i < targetObjects.Length; i++) { if (restart || (targetObjects[i].GetComponent <Furniture>() != null && targetObjects[i].GetComponent <Furniture>().destroyedOnLanding)) { targetObjects[i].SendMessage("OnLavaReset", null, SendMessageOptions.DontRequireReceiver); } targetObjects[i].SetActive(true); } if (toDragMode) { deathUI.SetActive(false); settingsUI.SetActive(false); hudUI.SetActive(true); floor.SetActive(true); lava.SetActive(false); dragUI.SetActive(true); settingsUI.transform.Find("Same Layout Button").gameObject.SetActive(false); playerScript.canMove = false; lavaLevel.SetActive(true); lavaLevel.transform.position = new Vector3(lavaLevel.transform.position.x, lava.transform.position.y + (lavaArea.size.y * lavaSizeMultiplier / 2) * lava.transform.localScale.y, lavaLevel.transform.position.z); lavaSwitch = false; SetDragMode(); } objectiveList[currentObjective].IsActive = false; currentObjective = 0; objectiveList[currentObjective].IsActive = true; sourceMusic.clip = music; sourceMusic.loop = true; sourceMusic.Play(); }
private void OnEnable() { m_WaterArea = target as WaterArea; m_WaterArea.GetReferences(); //needed for when you edit prefab directly, onEnable won't be called on it m_PrevSize = m_WaterArea.boxCollider2D.size; m_PrevOffset = m_WaterArea.boxCollider2D.offset; m_CurrentLayer = -1; int defaultLayer = 0; SortingLayer[] layers = SortingLayer.layers; m_SortingLayers = new string[layers.Length]; for (int i = 0; i < layers.Length; ++i) { m_SortingLayers[i] = layers[i].name; if (layers[i].id == m_WaterArea.sortingLayerID) { m_CurrentLayer = i; } if (layers[i].name == "Default") { defaultLayer = i; } } if (m_CurrentLayer == -1) { m_WaterArea.sortingLayerID = SortingLayer.NameToID("Default"); m_CurrentLayer = defaultLayer; } m_OffsetProp = serializedObject.FindProperty("offset"); m_SizeProp = serializedObject.FindProperty("size"); m_SortingLayerProp = serializedObject.FindProperty("sortingLayer"); m_SortingLayerOrderProp = serializedObject.FindProperty("sortingLayerOrder"); m_SplashPlayerPrefabProp = serializedObject.FindProperty("splashPlayerPrefab"); }
protected override Scene3D LoadEntry(FileSystemEntry entry, ContentManager contentManager, Game game, LoadOptions loadOptions) { switch (contentManager.SageGame) { case SageGame.Ra3: case SageGame.Ra3Uprising: case SageGame.Cnc4: // TODO break; default: contentManager.IniDataContext.LoadIniFile(@"Data\INI\Terrain.ini"); contentManager.IniDataContext.LoadIniFile(@"Data\INI\Roads.ini"); break; } var mapFile = MapFile.FromFileSystemEntry(entry); var heightMap = new HeightMap(mapFile.HeightMapData); var indexBufferCache = AddDisposable(new TerrainPatchIndexBufferCache(contentManager.GraphicsDevice)); var tileDataTexture = AddDisposable(CreateTileDataTexture( contentManager.GraphicsDevice, mapFile, heightMap)); var cliffDetailsBuffer = AddDisposable(CreateCliffDetails( contentManager.GraphicsDevice, mapFile)); CreateTextures( contentManager, mapFile.BlendTileData, out var textureArray, out var textureDetails); var textureDetailsBuffer = AddDisposable(contentManager.GraphicsDevice.CreateStaticStructuredBuffer(textureDetails)); var terrainMaterial = AddDisposable(new TerrainMaterial(contentManager, contentManager.EffectLibrary.Terrain)); terrainMaterial.SetTileData(tileDataTexture); terrainMaterial.SetCliffDetails(cliffDetailsBuffer); terrainMaterial.SetTextureDetails(textureDetailsBuffer); terrainMaterial.SetTextureArray(textureArray); var terrainPatches = CreatePatches( contentManager.GraphicsDevice, heightMap, mapFile.BlendTileData, terrainMaterial, indexBufferCache); Texture LoadTexture(string name) { var texture = contentManager.Load <Texture>(Path.Combine("Art", "Textures", name), fallbackToPlaceholder: false); if (texture == null) { texture = contentManager.Load <Texture>(Path.Combine("Art", "CompiledTextures", name.Substring(0, 2), name)); } return(texture); } var cloudTexture = LoadTexture(mapFile.EnvironmentData?.CloudTexture ?? "tscloudmed.dds"); var macroTexture = LoadTexture(mapFile.EnvironmentData?.MacroTexture ?? "tsnoiseurb.dds"); var materialConstantsBuffer = AddDisposable(contentManager.GraphicsDevice.CreateStaticBuffer( new TerrainMaterial.TerrainMaterialConstants { MapBorderWidth = new Vector2(mapFile.HeightMapData.BorderWidth, mapFile.HeightMapData.BorderWidth) * HeightMap.HorizontalScale, MapSize = new Vector2(mapFile.HeightMapData.Width, mapFile.HeightMapData.Height) * HeightMap.HorizontalScale, IsMacroTextureStretched = false // TODO: This must be one of the EnvironmentData unknown values. }, BufferUsage.UniformBuffer)); terrainMaterial.SetMaterialConstants(materialConstantsBuffer); var terrain = new Terrain.Terrain( heightMap, terrainPatches, cloudTexture, macroTexture, contentManager.SolidWhiteTexture); var players = Player.FromMapData(mapFile.SidesList.Players, contentManager).ToArray(); var teams = (mapFile.SidesList.Teams ?? mapFile.Teams.Items) .Select(team => Team.FromMapData(team, players)) .ToArray(); LoadObjects( contentManager, heightMap, mapFile.ObjectsList.Objects, teams, out var waypoints, out var gameObjects, out var roads, out var bridges); var waterAreas = new List <WaterArea>(); foreach (var polygonTrigger in mapFile.PolygonTriggers.Triggers) { switch (polygonTrigger.TriggerType) { case PolygonTriggerType.Water: case PolygonTriggerType.River: // TODO: Handle this differently. Water texture should be animated "downstream". case PolygonTriggerType.WaterAndRiver: if (WaterArea.TryCreate(contentManager, polygonTrigger, out var waterArea)) { waterAreas.Add(AddDisposable(waterArea)); } break; } } var lighting = new WorldLighting( mapFile.GlobalLighting.LightingConfigurations.ToLightSettingsDictionary(), mapFile.GlobalLighting.Time); var waypointPaths = new WaypointPathCollection(mapFile.WaypointsList.WaypointPaths .Select(path => { var start = waypoints[path.StartWaypointID]; var end = waypoints[path.EndWaypointID]; return(new Settings.WaypointPath(start, end)); })); // TODO: Don't hardcode this. // Perhaps add one ScriptComponent for the neutral player, // and one for the active player. var scriptList = mapFile.GetPlayerScriptsList().ScriptLists[0]; var mapScripts = CreateScripts(scriptList); var cameraController = new RtsCameraController(contentManager) { TerrainPosition = terrain.HeightMap.GetPosition( terrain.HeightMap.Width / 2, terrain.HeightMap.Height / 2) }; contentManager.GraphicsDevice.WaitForIdle(); return(new Scene3D( game, cameraController, mapFile, terrain, waterAreas.ToArray(), roads, bridges, mapScripts, gameObjects, waypoints, waypointPaths, lighting, players, teams)); }