Esempio n. 1
0
    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;
    }
Esempio n. 2
0
    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;
    }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
 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);
     }
 }
Esempio n. 6
0
            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)
                    );
            }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
    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));
    }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
    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();
    }
Esempio n. 11
0
    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);
    }
Esempio n. 12
0
 public JumpShipParameters(Ship ship, JumpGate jumpGate)
 {
     _ship = ship;
     _jumpGate = jumpGate;
 }