public void AddJumpGateTitle(JumpGate gate, string name) { GameObject gameObject = GameObject.FindWithTag("GuiCamera"); Transform transform = gameObject.transform.FindChild("jumpgatepanel"); if (transform == null) { GameObject gameObject2 = new GameObject("jumpgatepanel"); gameObject2.transform.SetParent(gameObject.transform); gameObject2.transform.localPosition = Vector3.zero; gameObject2.transform.localScale = Vector3.one; gameObject2.layer = LayerMask.NameToLayer("UI"); transform = gameObject2.transform; UIPanel uIPanel = gameObject2.AddComponent <UIPanel>(); uIPanel.depth = -1; uIPanel.renderQueue = UIPanel.RenderQueue.StartAt; } string prefabPath = "Prefab/Gui/JumpGateTitle"; GameObject gameObject3 = ObjectPool.instance.PushToPool(prefabPath, 5, transform); gameObject3.transform.localScale = Vector3.one; gate.title = gameObject3.GetComponent <JumpGateTitle>(); gate.title.point = gate.transform; gate.title.nameLab.text = name; }
public void CreateAnchorSave(StationBase station, StationType type) { CurrentSave = new SaveGame(); //create a regular save and then fill anchor with data if (type == StationType.JumpGate) { JumpGate gate = (JumpGate)station; CurrentSave.SpawnSystem = gate.TargetSystem; CurrentSave.SpawnStationID = gate.ExitGateID; CurrentSave.SpawnStationType = StationType.JumpGate; } else if (type == StationType.JumpHole) { } else if (type == StationType.Station) { CurrentSave.SpawnSystem = GameManager.Inst.WorldManager.CurrentSystem.ID; CurrentSave.SpawnStationID = station.ID; CurrentSave.SpawnStationType = type; } SaveWorldData(); SavePlayerData(false); SerializeSave(); LevelAnchor anchor = GameObject.FindObjectOfType <LevelAnchor>(); anchor.SpawnSystem = CurrentSave.SpawnSystem; anchor.ProfileName = GameManager.Inst.PlayerProgress.ProfileName; }
public void CantJumpWhenNotInRange() { var position = new Position(new SolarSystem(), Vector.Parse("0,1,0")); var jumpGate = new JumpGate { Position = position }; var ship = new Ship { Position = position + Vector.Parse("1,0,0"), Pilot = new Agent() }; _task.SetParameters(new JumpShipParameters(ship, jumpGate)); var result = (JumpShipResult)_task.Execute(); Assert.That(result.StatusCode, Is.EqualTo(ShipTask.StatusCode.NotInPosition)); }
public void CanJumpWhenInRange() { var position = new Position(new SolarSystem(), Vector.Parse("0,1,0")); var ship = new Ship { Position = position, Pilot = new Agent() }; var target = new JumpGate {Position = new Position(new SolarSystem(), Vector.Parse("-1,1,0"))}; var jumpGate = new JumpGate { Position = position, ConnectsTo = target }; _task.SetParameters(new JumpShipParameters(ship, jumpGate)); var result = _task.Execute(); Assert.That(result.Success, Is.True, result.StatusCode); Assert.That(ship.Position.LocalCoordinates, Is.EqualTo(target.Position.LocalCoordinates)); Assert.That(ship.Position.Location, Is.EqualTo(target.Position.Location)); }
public void CreateJumpGate(LuaTable table) { if (table != null) { for (int i = 1; i <= table.Length; i++) { LuaTable luaTable = (LuaTable)table[i]; int num = Convert.ToInt32(luaTable["StartMap"]); int endMap = Convert.ToInt32(luaTable["EndMap"]); int num2 = Convert.ToInt32(luaTable["ShapeNo"]); LuaTable luaTable2 = (LuaTable)luaTable["ConveyPos"]; int x = Convert.ToInt32(luaTable2[1]); float num3 = Convert.ToSingle(luaTable2[3]); int z = Convert.ToInt32(luaTable2[2]); if (num2 == 1 && !Singleton <WorldPathfinding> .Instance.init) { Singleton <WorldPathfinding> .Instance.AddWorldPathfindingInfo(num, endMap, x, z, num3); } if (num == this.curSceneNo) { GameObject gameObject = ObjectPool.instance.PushToPool(string.Format("Prefab/SceneObj/JumpGate{0}", num2), 3, null); gameObject.transform.position = Util.Convert2RealPosition(x, num3, z); JumpGate component = gameObject.GetComponent <JumpGate>(); component.doorNo = Convert.ToInt32(luaTable["No"]); component.startMap = num; component.endMap = endMap; component.type = num2; component.startArea = Convert.ToInt32(luaTable["StartArea"]); component.endArea = Convert.ToInt32(luaTable["EndArea"]); LuaTable luaTable3 = (LuaTable)luaTable["EndPos"]; component.endPosition = Util.Convert2RealPosition(Convert.ToInt32(luaTable3[1]), (float)Convert.ToInt32(luaTable3[3]), Convert.ToInt32(luaTable3[2])); LuaTable luaTable4 = (LuaTable)luaTable["Rotation"]; component.particleRotation = new Vector3(Convert.ToSingle(luaTable4[1]), Convert.ToSingle(luaTable4[2]), Convert.ToSingle(luaTable4[3])); if (num2 == 1) { this.AddJumpGateTitle(component, Convert.ToString(luaTable["EndName"])); } RoleManager.jumpGates.Add(gameObject); Singleton <AreaPathfinding> .Instance.AddGateInfo(component); } } Singleton <WorldPathfinding> .Instance.init = true; } else { Debug.LogError("no jumpgate data: " + this.curSceneNo); } }
public static ObjectBuilder<JumpGate> Build(SolarSystem location, JumpGateState state) { var jumpGate = new JumpGate { Id = state.ObjectId, Name = state.Name, Position = new Position(location, state.LocalCoordinates), }; return new ObjectBuilder<JumpGate>(jumpGate) .Resolve( (resolver, target) => target.ConnectsTo = state.ConnectsTo == 0 ? null : resolver.GetById<JumpGate>(state.ConnectsTo) ); }
public void CantJumpWithNoPilot() { var ship = new Ship(); var jumpGate = new JumpGate(); _task.SetParameters(new JumpShipParameters(ship, jumpGate)); var result = (JumpShipResult )_task.Execute(); Assert.That(result.Success, Is.False); Assert.That(result.StatusCode, Is.EqualTo(ShipTask.StatusCode.NoPilot)); ITaskResult taskResult = result; Assert.That(taskResult.StatusCode, Is.EqualTo("NoPilot")); Assert.That(taskResult.ErrorParams, Has.Property("Ship").EqualTo(ship)); Assert.That(taskResult.ErrorParams, Has.Property("JumpGate").EqualTo(jumpGate)); Assert.That(taskResult.ErrorParams, Has.Property("Pilot").Null); }
public override BTResult Process() { if (MyParty == null) { return(Exit(BTResult.Fail)); } if (MyParty.IsPlayerParty && !GameManager.Inst.PlayerControl.IsAutopilot) { Debug.Log("autopilot disabled!"); return(Exit(BTResult.Fail)); } bool isFollowerDock = false; if (Parameters.Count > 0 && Parameters[0] == "LeaderDockedStation") { isFollowerDock = true; } if (!isFollowerDock) { if (MyParty.NextNode == null) { //Debug.Log("isdocked " + MyAI.IsDocked + " my party null? " + (MyParty == null) + " next node null? " + (MyParty.NextNode == null)); return(Exit(BTResult.Fail)); } } if (isFollowerDock || MyParty.NextNode.NavNodeType == NavNodeType.Station) { NavNode dockNode; if (isFollowerDock) { //Debug.Log(MyParty.DockedStationID + " I am " + MyAI.MyShip.name); dockNode = GameManager.Inst.WorldManager.AllNavNodes[MyParty.DockedStationID]; if (MyParty.SpawnedShipsLeader.DockedStationID == "") { return(Exit(BTResult.Fail)); } } else { dockNode = MyParty.NextNode; //if not destination then don't dock, just get close enough and move on to next node in GoTo if (MyParty.CurrentTask.TravelDestNodeID != dockNode.ID) { return(Exit(BTResult.Fail)); } } //GameObject.Find("Sphere").transform.position = (Vector3)MyAI.Whiteboard.Parameters["Destination"]; //if too far away from station then go to node if (Vector3.Distance(MyAI.MyShip.transform.position, dockNode.Location.RealPos) > 40) { _dockingStage = 0; MyAI.Whiteboard.Parameters["Destination"] = dockNode.Location.RealPos; //Debug.Log("BTDockAtNextNode: running, going towards station position " + MyParty.NextNode.Location.RealPos); return(Running()); } else if (_dockingStage == 0) { _dockingStage = 1; } if (MyAI.MyShip.DockedStationID == dockNode.ID) { MyAI.MyShip.Hide(); MyParty.DockedStationID = dockNode.ID; //Debug.Log("Finished docking, " + MyParty.DockedStationID); if (MyAI.MyShip == MyParty.SpawnedShipsLeader) { bool allDocked = true; foreach (ShipBase member in MyAI.MyParty.SpawnedShips) { if (member != MyAI.MyShip && member.DockedStationID == "") { allDocked = false; } } if (allDocked) { Debug.LogError("Everyone has docked! " + MyParty.DockedStationID); return(Exit(BTResult.Success)); } else { //Debug.Log("Dock at station running"); return(Running()); } } else { return(Exit(BTResult.Success)); } } if (_currentSession == null) { DockRequestResult result = GameManager.Inst.WorldManager.CurrentSystem.GetStationByID(dockNode.ID).Dock(MyAI.MyShip, out _currentSession); if (result == DockRequestResult.Busy) { //Debug.Log("Dock at station running"); MyAI.Whiteboard.Parameters["Destination"] = Vector3.zero; return(Running()); } else if (result == DockRequestResult.Deny) { return(Exit(BTResult.Fail)); } else { //Debug.Log("BTDockAtNextNode: running"); return(Running()); } } else { //find dock start DockingSession session = (DockingSession)_currentSession; Vector3 dockStartV3 = session.GetDockEnterTarget(); _dockStart = new RelLoc(_origin.position, dockStartV3, _origin); if (!MyAI.MyShip.IsInPortal) { if (Vector3.Distance(MyAI.MyShip.transform.position, _dockStart.RealPos) >= 3) { //fly towards docking target MyAI.Whiteboard.Parameters["Destination"] = _dockStart.RealPos; } else { MyAI.Whiteboard.Parameters["Destination"] = Vector3.zero; } } //Debug.Log("BTDockAtNextNode: running"); return(Running()); } } else if (MyParty.NextNode.NavNodeType == NavNodeType.Tradelane) { if (MyParty.DestNode.ID == MyParty.NextNode.ID && MyParty.CurrentTLSession == null) { return(Exit(BTResult.Fail)); } if (MyAI.IsDocked) { return(Exit(BTResult.Fail)); } //Debug.Log("Docking stage " + _dockingStage + " - " + MyAI.name); //if already in tradelane then do a midway dock on prevNode tradelane if (Vector3.Distance(MyAI.MyShip.transform.position, GameManager.Inst.PlayerControl.PlayerShip.transform.position) > 500 && MyParty.PrevNode != null && MyParty.PrevNode.NavNodeType == NavNodeType.Tradelane && MyParty.NextNode.NavNodeType == NavNodeType.Tradelane && !MyAI.MyShip.IsInPortal && MyParty.CurrentTLSession == null) { int direction = 0; TradelaneData prevTL = (TradelaneData)MyParty.PrevNode; TradelaneData nextTL = (TradelaneData)MyParty.NextNode; if (prevTL.NeighborAID == nextTL.ID) { direction = -1; } else if (prevTL.NeighborBID == nextTL.ID) { direction = 1; } if (direction != 0) { Tradelane currentLane = GameManager.Inst.WorldManager.CurrentSystem.GetTradelaneByID(prevTL.ID); DockSessionBase s; Debug.LogError("Start midway dock I am " + MyAI.MyShip.name); DockRequestResult result = currentLane.MidwayDock(MyAI.MyShip, out s, direction); if (result == DockRequestResult.Busy) { MyAI.Whiteboard.Parameters["Destination"] = Vector3.zero; //Debug.Log("Dock at station running"); return(Running()); } else if (result == DockRequestResult.Deny) { return(Exit(BTResult.Fail)); } else { //Debug.Log("BTDockAtNextNode: midway dock granted, running"); MyParty.CurrentTLSession = (TLTransitSession)s; _dockingStage = 2; return(Running()); } } } if (MyParty.CurrentTLSession == null) { //if too far away from station then go to float distToNextNode = Vector3.Distance(MyAI.MyShip.transform.position, MyParty.NextNode.Location.RealPos); if (distToNextNode > 40) { //Debug.Log("BTDockAtNextNode: distToNextNode " + distToNextNode); _dockingStage = 0; MyAI.Whiteboard.Parameters["Destination"] = MyParty.NextNode.Location.RealPos; //Debug.Log("BTDockAtNextNode: running next node " + MyParty.NextNode.ID); return(Running()); } else if (_dockingStage == 0) { _dockingStage = 1; } Tradelane currentLane = GameManager.Inst.WorldManager.CurrentSystem.GetTradelaneByID(MyParty.NextNode.ID); if (_dockStart == null) { //need to decide if we want to dock here. find the next node after the tradelane, if it's //a trade lane and is this tradelane's neighbor then dock. if not, return fail NavNode nextNextNode = MyParty.NextNextNode; Vector3 dockStartV3 = Vector3.zero; if (nextNextNode != null && nextNextNode.NavNodeType == NavNodeType.Tradelane) { if (nextNextNode.ID == currentLane.NeighborAID) { dockStartV3 = currentLane.TriggerA.transform.position - (currentLane.TriggerA.transform.forward + new Vector3(UnityEngine.Random.Range(-0.3f, 0.3f), UnityEngine.Random.Range(-0.3f, 0.3f), UnityEngine.Random.Range(-0.3f, 0.3f))).normalized * UnityEngine.Random.Range(10f, 30f); } else if (nextNextNode.ID == currentLane.NeighborBID) { dockStartV3 = currentLane.TriggerB.transform.position - (currentLane.TriggerB.transform.forward + new Vector3(UnityEngine.Random.Range(-0.3f, 0.3f), UnityEngine.Random.Range(-0.3f, 0.3f), UnityEngine.Random.Range(-0.3f, 0.3f))).normalized * UnityEngine.Random.Range(10f, 30f); } else { return(Exit(BTResult.Fail)); } } else { return(Exit(BTResult.Fail)); } _dockStart = new RelLoc(_origin.position, dockStartV3, _origin); } //GameObject.Find("Sphere").transform.position = _dockStart.RealPos; if (_dockingStage == 1) { if (Vector3.Distance(_dockStart.RealPos, MyAI.MyShip.transform.position) > 5) { MyAI.Whiteboard.Parameters["Destination"] = _dockStart.RealPos; //Debug.Log("BTDockAtNextNode: going to dock start " + Vector3.Distance(_dockStart.RealPos, MyAI.MyShip.transform.position)); return(Running()); } else { MyAI.Whiteboard.Parameters["Destination"] = Vector3.zero; _dockingStage = 2; } } } MyAI.Whiteboard.Parameters["IgnoreAvoidance"] = true; if (MyParty.CurrentTLSession != null && MyAI.MyShip.IsInPortal) { float distToNextNode = Vector3.Distance(MyAI.MyShip.transform.position, MyParty.NextNode.Location.RealPos); //Debug.Log(distToNextNode + " next node " + MyParty.NextNode.ID); if (distToNextNode < 10) { if (MyParty.NextNextNode == null || MyParty.NextNextNode.NavNodeType != NavNodeType.Tradelane) { MyParty.CurrentTLSession.Stage = TLSessionStage.Cancelling; Debug.LogError("BTDockAtNextNode tradelane: cancel sent"); } MyParty.PrevNode = MyParty.NextNode; Debug.LogError("BTDockAtNextNode tradelane: Successful " + MyParty.NextNode.ID); return(Exit(BTResult.Success)); } else { //Debug.Log("Dock at station running"); return(Running()); } } if (MyParty.CurrentTLSession == null) { Tradelane currentLane = GameManager.Inst.WorldManager.CurrentSystem.GetTradelaneByID(MyParty.NextNode.ID); DockSessionBase s; DockRequestResult result = currentLane.Dock(MyAI.MyShip, out s); if (result == DockRequestResult.Busy) { //Debug.Log("tradelane is busy"); MyAI.Whiteboard.Parameters["Destination"] = Vector3.zero; return(Running()); } else if (result == DockRequestResult.Deny) { return(Exit(BTResult.Fail)); } else { //Debug.Log("BTDockAtNextNode: dock request granted, running"); MyParty.CurrentTLSession = (TLTransitSession)s; return(Running()); } } else { if (!MyAI.MyShip.IsInPortal) { if (MyAI.MyShip.RB.velocity.magnitude < 0.1f || _dockingStage == 3) { Tradelane currentLane = GameManager.Inst.WorldManager.CurrentSystem.GetTradelaneByID(MyParty.NextNode.ID); if (currentLane.GetTLSessionDockingStage(MyParty.CurrentTLSession) >= 2) { //fly towards docking trigger Vector3 dockingTrigger = MyParty.CurrentTLSession.CurrentTrigger.transform.position; MyAI.Whiteboard.Parameters["Destination"] = dockingTrigger; _dockingStage = 3; } } else if (_dockingStage == 2) { MyAI.Whiteboard.Parameters["Destination"] = Vector3.zero; } } //Debug.Log("BTDockAtNextNode: running"); return(Running()); } } else if (MyParty.NextNode.NavNodeType == NavNodeType.JumpGate) { //if destination is in same system then don't dock if (MyParty.CurrentTask.TravelDestSystemID == GameManager.Inst.WorldManager.CurrentSystem.ID || MyAI.IsDocked) { return(Exit(BTResult.Fail)); } //Debug.Log("Trying to dock at jump gate"); JumpGate jg = (JumpGate)GameManager.Inst.WorldManager.CurrentSystem.GetStationByID(MyParty.NextNode.ID); if (_waitDistance == 0) { _waitDistance = UnityEngine.Random.Range(25f, 40f); } Vector3 dockStartV3 = jg.DockingTrigger.transform.position + jg.DockingTrigger.transform.up * 20; _dockStart = new RelLoc(_origin.position, dockStartV3, _origin); //if too far away from station then go to if (Vector3.Distance(MyAI.MyShip.transform.position, MyParty.NextNode.Location.RealPos) > _waitDistance) { MyAI.Whiteboard.Parameters["Destination"] = _dockStart.RealPos; //Debug.Log("BTDockAtNextNode: running " + _waitDistance); return(Running()); } MyParty.PrevNode = MyParty.NextNode; if (!jg.IsGateActive && !jg.IsPortalReady) { DockSessionBase session; jg.Dock(MyAI.MyShip, out session); } if (jg.IsGateActive && jg.IsPortalReady) { //first go to docking trigger Y + 10 and then towards docking trigger if (_dockingStage <= 0) { MyAI.Whiteboard.Parameters["Destination"] = _dockStart.RealPos; if (Vector3.Distance(MyAI.MyShip.transform.position, _dockStart.RealPos) <= 5) { _dockingStage = 1; } //Debug.Log("Going to dockstart"); } else if (_dockingStage == 1) { Debug.Log("Tring to stop at dock start " + MyAI.MyShip.RB.velocity.magnitude); if (MyAI.MyShip.RB.velocity.magnitude > 0.1f) { MyAI.Whiteboard.Parameters["Destination"] = Vector3.zero; } else { _dockingStage = 2; } } else if (_dockingStage >= 2) { MyAI.Whiteboard.Parameters["IgnoreAvoidance"] = true; MyAI.Whiteboard.Parameters["Destination"] = jg.DockingTrigger.transform.position; //Debug.Log("Going to dock trigger"); } //GameObject.Find("Sphere").transform.position = (Vector3)MyAI.Whiteboard.Parameters["Destination"]; //Debug.Log("BTDockAtNextNode: running"); return(Running()); } else { if (Vector3.Distance(MyAI.MyShip.transform.position, _dockStart.RealPos) <= 5) { MyAI.Whiteboard.Parameters["Destination"] = Vector3.zero; } else { MyAI.Whiteboard.Parameters["Destination"] = _dockStart.RealPos; } //Debug.Log("BTDOckAtNextNode: waiting for jumpgate to start"); return(Running()); } } return(Exit(BTResult.Fail)); }
public static void Main(string[] args) { // Variables that go into GameContext var list = new Lists(); var jumpGate = new JumpGate(); var spacePort = new SpacePort(); var instance = new Instance(); var player = new Player() { InSolarSystem = 1, Level = 1 }; var travel = new Travel(); var inventory = new Inventory(); var playerInventory = new Inventory(); var playerAttackCalculator = new PlayerAttackCalculator(); var playerStats = new PlayerStats(); var weaponMaker = new WeaponMaker(); var playerMaker = new PlayerMaker(); var loadGame = new LoadGame(); var saveGame = new SaveGame(); var randomNameGenerator = new RandomNameGenerator(); var repairShop = new RepairShop(); var store = new Store(); var healthKitSmall = new HealthKitSmall() { Name = "Small Health Kit", Price = 100 }; var healthKitLarge = new HealthKitLarge() { Name = "Large Health Kit", Price = 250 }; var healthKitTotal = new HealthKitTotal() { Name = "Total Health Kit", Price = 1000 }; var energyKitSmall = new EnergyKitSmall() { Name = "Small Energy Kit", Price = 100 }; var energyKitLarge = new EnergyKitLarge() { Name = "Large Energy Kit", Price = 250 }; var energyKitTotal = new EnergyKitTotal() { Name = "Total Energy Kit", Price = 1000 }; var smokeGrenade = new SmokeGrenade() { Name = "Smoke Grenade", Price = 2000 }; var blaster = new Weapon() { Price = player.Level * 150 }; var doubleBlaster = new Weapon() { Price = player.Level * 300 }; var photonSword = new Weapon() { Price = player.Level * 450 }; var virtualGun = new VirtualGun() { Description = "Spend Energy to deal Damage to your opponent", Name = "Virtual Gun", UsedBy = "Gunslinger" }; // Mechanics for Fighting var fight = new Fight(); var roller = new Roller(); // Factories for Fighting var monsterMaker = new MonsterMaker(); // GameContext Variable var gameContext = new GameContext() { List = list, JumpGate = jumpGate, SpacePort = spacePort, Instance = instance, Player = player, Travel = travel, Inventory = inventory, PlayerInventory = playerInventory, PlayerAttackCalculator = playerAttackCalculator, PlayerStats = playerStats, WeaponMaker = weaponMaker, Fight = fight, Roller = roller, MonsterMaker = monsterMaker, PlayerMaker = playerMaker, LoadGame = loadGame, SaveGame = saveGame, RandomNameGenerator = randomNameGenerator, RepairShop = repairShop, Store = store, HealthKitSmall = healthKitSmall, HealthKitLarge = healthKitLarge, HealthKitTotal = healthKitTotal, EnergyKitSmall = energyKitSmall, EnergyKitLarge = energyKitLarge, EnergyKitTotal = energyKitTotal, SmokeGrenade = smokeGrenade, Blaster = blaster, DoubleBlaster = doubleBlaster, PhotonSword = photonSword, VirtualGun = virtualGun, }; // Monster Creation for Fighting var whiteMonster01 = monsterMaker.CreateWhiteMonster(gameContext); var whiteMonster02 = monsterMaker.CreateWhiteMonster(gameContext); var whiteMonster03 = monsterMaker.CreateWhiteMonster(gameContext); var greenMonster01 = monsterMaker.CreateGreenMonster(gameContext); var greenMonster02 = monsterMaker.CreateGreenMonster(gameContext); var greenMonster03 = monsterMaker.CreateGreenMonster(gameContext); var redMonster01 = monsterMaker.CreateRedMonster(gameContext); var redMonster02 = monsterMaker.CreateRedMonster(gameContext); var redMonster03 = monsterMaker.CreateRedMonster(gameContext); gameContext.WhiteMonster01 = whiteMonster01; gameContext.WhiteMonster02 = whiteMonster02; gameContext.WhiteMonster03 = whiteMonster03; gameContext.GreenMonster01 = greenMonster01; gameContext.GreenMonster02 = greenMonster02; gameContext.GreenMonster03 = greenMonster03; gameContext.RedMonster01 = redMonster01; gameContext.RedMonster02 = redMonster02; gameContext.RedMonster03 = redMonster03; // Creating base variables var place = new Place(); var startUpScreen = new StartUpScreen(); // Creating JumpGates var jumpGate1 = new JumpGate() { InSolarSystem = 1, Name = "jg1" }; var jumpGate2 = new JumpGate() { InSolarSystem = 2, Name = "jg2" }; var jumpGate3 = new JumpGate() { InSolarSystem = 3, Name = "jg3" }; // Creating SpacePorts var spacePort1 = new SpacePort() { InSolarSystem = 1, Name = "sp1" }; var spacePort2 = new SpacePort() { InSolarSystem = 1, Name = "sp2" }; var spacePort3 = new SpacePort() { InSolarSystem = 1, Name = "sp3" }; var spacePort10 = new SpacePort() { InSolarSystem = 2, Name = "sp10" }; var spacePort11 = new SpacePort() { InSolarSystem = 2, Name = "sp11" }; var spacePort12 = new SpacePort() { InSolarSystem = 2, Name = "sp12" }; var spacePort20 = new SpacePort() { InSolarSystem = 3, Name = "sp20" }; var spacePort21 = new SpacePort() { InSolarSystem = 3, Name = "sp21" }; var spacePort22 = new SpacePort() { InSolarSystem = 3, Name = "sp22" }; // Creating Instances var instance1 = new Instance() { InSpacePort = "sp1", Name = "i1" }; var instance2 = new Instance() { InSpacePort = "sp1", Name = "i2" }; var instance10 = new Instance() { InSpacePort = "sp2", Name = "i10" }; var instance11 = new Instance() { InSpacePort = "sp2", Name = "i11" }; var instance20 = new Instance() { InSpacePort = "sp3", Name = "i20" }; var instance21 = new Instance() { InSpacePort = "sp3", Name = "i21" }; var instance30 = new Instance() { InSpacePort = "sp10", Name = "i30" }; var instance31 = new Instance() { InSpacePort = "sp10", Name = "i31" }; var instance40 = new Instance() { InSpacePort = "sp11", Name = "i40" }; var instance41 = new Instance() { InSpacePort = "sp11", Name = "i41" }; var instance50 = new Instance() { InSpacePort = "sp12", Name = "i50" }; var instance51 = new Instance() { InSpacePort = "sp12", Name = "i51" }; var instance60 = new Instance() { InSpacePort = "sp20", Name = "i60" }; var instance61 = new Instance() { InSpacePort = "sp20", Name = "i61" }; var instance70 = new Instance() { InSpacePort = "sp21", Name = "i70" }; var instance71 = new Instance() { InSpacePort = "sp21", Name = "i71" }; var instance80 = new Instance() { InSpacePort = "sp22", Name = "i80" }; var instance81 = new Instance() { InSpacePort = "sp22", Name = "i81" }; // Adding JumpGates to the list gameContext.List.listJumpGate.Add(jumpGate1); gameContext.List.listJumpGate.Add(jumpGate2); gameContext.List.listJumpGate.Add(jumpGate3); // Adding SpacePorts to the list gameContext.List.listSpacePort.Add(spacePort1); gameContext.List.listSpacePort.Add(spacePort2); gameContext.List.listSpacePort.Add(spacePort3); gameContext.List.listSpacePort.Add(spacePort10); gameContext.List.listSpacePort.Add(spacePort11); gameContext.List.listSpacePort.Add(spacePort12); gameContext.List.listSpacePort.Add(spacePort20); gameContext.List.listSpacePort.Add(spacePort21); gameContext.List.listSpacePort.Add(spacePort22); // Adding Instances to the list gameContext.List.listInstance.Add(instance1); gameContext.List.listInstance.Add(instance2); gameContext.List.listInstance.Add(instance10); gameContext.List.listInstance.Add(instance11); gameContext.List.listInstance.Add(instance20); gameContext.List.listInstance.Add(instance21); gameContext.List.listInstance.Add(instance30); gameContext.List.listInstance.Add(instance31); gameContext.List.listInstance.Add(instance40); gameContext.List.listInstance.Add(instance41); gameContext.List.listInstance.Add(instance50); gameContext.List.listInstance.Add(instance51); gameContext.List.listInstance.Add(instance60); gameContext.List.listInstance.Add(instance61); gameContext.List.listInstance.Add(instance70); gameContext.List.listInstance.Add(instance71); gameContext.List.listInstance.Add(instance80); gameContext.List.listInstance.Add(instance81); // Test area // Game Starts here startUpScreen.StartUp(gameContext); }
public void GenerateSystemXML() { string id = GameManager.Inst.SystemID; string path = Application.dataPath + "/GameData/StarSystem/" + id + ".xml"; XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.IndentChars = " "; // note: default is two spaces settings.NewLineOnAttributes = false; _xmlWriter = XmlWriter.Create(path, settings); _xmlWriter.WriteStartDocument(); _xmlWriter.WriteDocType("system", null, null, "<!ATTLIST node id ID #IMPLIED>"); _xmlWriter.WriteStartElement("system"); _xmlWriter.WriteAttributeString("id", id); _xmlWriter.WriteAttributeString("displayname", GameManager.Inst.SystemName); //system location in system map _xmlWriter.WriteStartElement("systemlocation"); _xmlWriter.WriteStartElement("vector3"); _xmlWriter.WriteAttributeString("x", "0"); _xmlWriter.WriteAttributeString("y", "0"); _xmlWriter.WriteAttributeString("z", "0"); _xmlWriter.WriteEndElement(); _xmlWriter.WriteFullEndElement(); //ambience _xmlWriter.WriteStartElement("ambience"); _xmlWriter.WriteStartElement("skybox"); _xmlWriter.WriteString(RenderSettings.skybox.name); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("ambientcolor"); _xmlWriter.WriteStartElement("color"); _xmlWriter.WriteAttributeString("r", RenderSettings.ambientLight.r.ToString()); _xmlWriter.WriteAttributeString("g", RenderSettings.ambientLight.g.ToString()); _xmlWriter.WriteAttributeString("b", RenderSettings.ambientLight.b.ToString()); _xmlWriter.WriteEndElement(); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("music"); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteFullEndElement(); //origin GameObject origin = GameObject.Find("Origin"); _xmlWriter.WriteStartElement("origin"); _xmlWriter.WriteStartElement("vector3"); _xmlWriter.WriteAttributeString("x", origin.transform.position.x.ToString()); _xmlWriter.WriteAttributeString("y", origin.transform.position.y.ToString()); _xmlWriter.WriteAttributeString("z", origin.transform.position.z.ToString()); _xmlWriter.WriteEndElement(); _xmlWriter.WriteFullEndElement(); //suns Sun [] suns = GameObject.FindObjectsOfType <Sun>(); foreach (Sun sun in suns) { _xmlWriter.WriteStartElement("sun"); _xmlWriter.WriteStartElement("id"); _xmlWriter.WriteString(sun.ID); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("displayname"); _xmlWriter.WriteString(sun.DisplayName); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("location"); _xmlWriter.WriteStartElement("vector3"); Vector3 disposition = sun.transform.position - origin.transform.position; _xmlWriter.WriteAttributeString("x", disposition.x.ToString()); _xmlWriter.WriteAttributeString("y", disposition.y.ToString()); _xmlWriter.WriteAttributeString("z", disposition.z.ToString()); _xmlWriter.WriteEndElement(); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("scale"); _xmlWriter.WriteStartElement("vector3"); _xmlWriter.WriteAttributeString("x", sun.transform.localScale.x.ToString()); _xmlWriter.WriteAttributeString("y", sun.transform.localScale.y.ToString()); _xmlWriter.WriteAttributeString("z", sun.transform.localScale.z.ToString()); _xmlWriter.WriteEndElement(); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("sunlight"); _xmlWriter.WriteAttributeString("intensity", sun.Sunlight.intensity.ToString()); _xmlWriter.WriteStartElement("color"); _xmlWriter.WriteAttributeString("r", sun.Sunlight.color.r.ToString()); _xmlWriter.WriteAttributeString("g", sun.Sunlight.color.g.ToString()); _xmlWriter.WriteAttributeString("b", sun.Sunlight.color.b.ToString()); _xmlWriter.WriteEndElement(); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteFullEndElement(); } //planets Planet [] planets = GameObject.FindObjectsOfType <Planet>(); foreach (Planet planet in planets) { _xmlWriter.WriteStartElement("planet"); _xmlWriter.WriteStartElement("id"); _xmlWriter.WriteString(planet.ID); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("displayname"); _xmlWriter.WriteString(planet.DisplayName); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("location"); _xmlWriter.WriteStartElement("vector3"); Vector3 disposition = planet.transform.position - origin.transform.position; _xmlWriter.WriteAttributeString("x", disposition.x.ToString()); _xmlWriter.WriteAttributeString("y", disposition.y.ToString()); _xmlWriter.WriteAttributeString("z", disposition.z.ToString()); _xmlWriter.WriteEndElement(); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("scale"); _xmlWriter.WriteStartElement("vector3"); _xmlWriter.WriteAttributeString("x", planet.OriginalScale.x.ToString()); _xmlWriter.WriteAttributeString("y", planet.OriginalScale.y.ToString()); _xmlWriter.WriteAttributeString("z", planet.OriginalScale.z.ToString()); _xmlWriter.WriteEndElement(); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteFullEndElement(); } //stations GameObject [] stations = GameObject.FindGameObjectsWithTag("Station"); foreach (GameObject o in stations) { StationBase station = o.GetComponent <StationBase>(); _xmlWriter.WriteStartElement("station"); _xmlWriter.WriteStartElement("id"); _xmlWriter.WriteString(station.ID); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("displayname"); _xmlWriter.WriteString(station.DisplayName); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("stationtype"); _xmlWriter.WriteString(station.StationType.ToString()); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("location"); _xmlWriter.WriteStartElement("vector3"); Vector3 disposition = station.transform.position - origin.transform.position; _xmlWriter.WriteAttributeString("x", disposition.x.ToString()); _xmlWriter.WriteAttributeString("y", disposition.y.ToString()); _xmlWriter.WriteAttributeString("z", disposition.z.ToString()); _xmlWriter.WriteEndElement(); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("eulerangles"); _xmlWriter.WriteStartElement("vector3"); _xmlWriter.WriteAttributeString("x", station.transform.eulerAngles.x.ToString()); _xmlWriter.WriteAttributeString("y", station.transform.eulerAngles.y.ToString()); _xmlWriter.WriteAttributeString("z", station.transform.eulerAngles.z.ToString()); _xmlWriter.WriteEndElement(); _xmlWriter.WriteFullEndElement(); foreach (StationBase neighbor in station.NeighborStations) { _xmlWriter.WriteStartElement("navneighbor"); _xmlWriter.WriteString(neighbor.ID); _xmlWriter.WriteFullEndElement(); } if (station.StationType == StationType.JumpGate) { JumpGate gate = (JumpGate)station; _xmlWriter.WriteStartElement("targetsystem"); _xmlWriter.WriteString(gate.TargetSystem); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("exitgateid"); _xmlWriter.WriteString(gate.ExitGateID); _xmlWriter.WriteFullEndElement(); Vector3 spawnDisposition = gate.transform.forward * 15; _xmlWriter.WriteStartElement("spawndisposition"); _xmlWriter.WriteStartElement("vector3"); _xmlWriter.WriteAttributeString("x", spawnDisposition.x.ToString()); _xmlWriter.WriteAttributeString("y", spawnDisposition.y.ToString()); _xmlWriter.WriteAttributeString("z", spawnDisposition.z.ToString()); _xmlWriter.WriteEndElement(); _xmlWriter.WriteFullEndElement(); } _xmlWriter.WriteFullEndElement(); } //tradelanes Tradelane [] tradelanes = GameObject.FindObjectsOfType <Tradelane>(); foreach (Tradelane tl in tradelanes) { _xmlWriter.WriteStartElement("tradelane"); _xmlWriter.WriteStartElement("id"); _xmlWriter.WriteString(tl.ID); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("displayname"); _xmlWriter.WriteString(tl.DisplayName); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("terminal"); _xmlWriter.WriteString(tl.IsTerminalAorB.ToString()); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("location"); _xmlWriter.WriteStartElement("vector3"); Vector3 disposition = tl.transform.position - origin.transform.position; _xmlWriter.WriteAttributeString("x", disposition.x.ToString()); _xmlWriter.WriteAttributeString("y", disposition.y.ToString()); _xmlWriter.WriteAttributeString("z", disposition.z.ToString()); _xmlWriter.WriteEndElement(); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("eulerangles"); _xmlWriter.WriteStartElement("vector3"); _xmlWriter.WriteAttributeString("x", tl.transform.eulerAngles.x.ToString()); _xmlWriter.WriteAttributeString("y", tl.transform.eulerAngles.y.ToString()); _xmlWriter.WriteAttributeString("z", tl.transform.eulerAngles.z.ToString()); _xmlWriter.WriteEndElement(); _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("neighbor_a"); if (tl.NeighborToA != null) { _xmlWriter.WriteString(tl.NeighborToA.ID); } else { _xmlWriter.WriteString("NULL"); } _xmlWriter.WriteFullEndElement(); _xmlWriter.WriteStartElement("neighbor_b"); if (tl.NeighborToB != null) { _xmlWriter.WriteString(tl.NeighborToB.ID); } else { _xmlWriter.WriteString("NULL"); } _xmlWriter.WriteFullEndElement(); foreach (StationBase neighbor in tl.NeighborStations) { _xmlWriter.WriteStartElement("navneighbor"); _xmlWriter.WriteString(neighbor.ID); _xmlWriter.WriteFullEndElement(); } _xmlWriter.WriteFullEndElement(); } _xmlWriter.WriteFullEndElement(); _xmlWriter.Close(); }
public StarSystem GenerateSystemScene(string id) { string path = Application.dataPath + "/GameData/StarSystem/" + id + ".xml"; StarSystemData system = LoadStarSystemData(path, true); StarSystem starSystem = new StarSystem(system.ID, system.DisplayName); RenderSettings.skybox = Resources.Load <Material>(system.SkyboxName); RenderSettings.ambientLight = system.AmbientColor; starSystem.AmbientColor = system.AmbientColor; foreach (SunData sunData in system.Suns) { GameObject sunObject = GameObject.Instantiate(Resources.Load(sunData.ID)) as GameObject; sunObject.name = sunData.ID; Sun sun = sunObject.GetComponent <Sun>(); sun.transform.position = sunData.Location.RealPos; sun.transform.localScale = sunData.Scale; sun.Sunlight.color = sunData.Color; sun.Sunlight.intensity = sunData.Intensity; starSystem.Suns.Add(sun); } foreach (PlanetData planetData in system.Planets) { GameObject planetObject = GameObject.Instantiate(Resources.Load(planetData.ID)) as GameObject; planetObject.name = planetData.ID; Planet planet = planetObject.GetComponent <Planet>(); planet.transform.position = planetData.Location.RealPos; planet.transform.localScale = planetData.OriginalScale; planet.OriginalScale = planetData.OriginalScale; starSystem.Planets.Add(planet); } foreach (StationData stationData in system.Stations) { GameObject stationObject = GameObject.Instantiate(Resources.Load(stationData.ID)) as GameObject; stationObject.name = stationData.ID; StationBase station = stationObject.GetComponent <StationBase>(); station.transform.position = stationData.Location.RealPos; station.transform.eulerAngles = stationData.EulerAngles; starSystem.Stations.Add(station); } foreach (JumpGateData jumpGateData in system.JumpGates) { GameObject stationObject = GameObject.Instantiate(Resources.Load("JumpGate")) as GameObject; stationObject.name = jumpGateData.ID; JumpGate gate = stationObject.GetComponent <JumpGate>(); gate.ID = jumpGateData.ID; gate.transform.position = jumpGateData.Location.RealPos; gate.transform.eulerAngles = jumpGateData.EulerAngles; gate.TargetSystem = jumpGateData.TargetSystem; gate.ExitGateID = jumpGateData.ExitGateID; starSystem.Stations.Add(gate); } foreach (TradelaneData tradelaneData in system.Tradelanes) { GameObject tlObject = GameObject.Instantiate(Resources.Load("Tradelane")) as GameObject; tlObject.name = tradelaneData.ID; Tradelane tl = tlObject.transform.Find("TradelaneBody").GetComponent <Tradelane>(); tlObject.transform.position = tradelaneData.Location.RealPos; tlObject.transform.eulerAngles = tradelaneData.EulerAngles; tl.ID = tradelaneData.ID; tl.DisplayName = tradelaneData.DisplayName; tl.IsTerminalAorB = tradelaneData.IsTerminalAorB; tl.NeighborAID = tradelaneData.NeighborAID; tl.NeighborBID = tradelaneData.NeighborBID; tl.NeighborToA = null; tl.NeighborToB = null; starSystem.Tradelanes.Add(tl); } //now assign neighbors to tradelanes List <Tradelane> tradelanes = starSystem.Tradelanes; foreach (Tradelane tl in tradelanes) { foreach (Tradelane neighbor in tradelanes) { if (tl.NeighborAID == neighbor.ID) { tl.NeighborToA = neighbor; } if (tl.NeighborBID == neighbor.ID) { tl.NeighborToB = neighbor; } } } return(starSystem); }
public JumpShipParameters(Ship ship, JumpGate jumpGate) { _ship = ship; _jumpGate = jumpGate; }