Exemple #1
0
        public ControlDisplay(float w,SpaceShip s)
            : base(0, 0, Root.Instance.UserInterface.Renderer.Size.X, Root.Instance.UserInterface.Renderer.Size.Y, new Layout(2, 4))
        {
            Transparent = true;

            Layout.Widths[0] = Root.Instance.UserInterface.Renderer.Size.X-250;
            Layout.Widths[1] = 250;

            Layout.GetCell(0, 0).Span.Y = 4;

            Layout.Heights[0] = 0.5f;
            WeaponDisplay = new WeaponDisplay(s.Slots);
            Add(WeaponDisplay, 1, 0);

            WeaponManager = new WeaponManager(s);
            Add(WeaponManager, 1, 1);

            Comm = new Chat(s.GetPlayer());
            Add(Comm, 1, 2);

            RadarDisplay rd = new RadarDisplay();
            Add(rd, 1, 3);

            //InfoWindow = new GameInfoDisplay();
            //InfoWindow.Visible = false;
            //Add(InfoWindow,0,0);

            Layout.Update(Size);
        }
Exemple #2
0
        void SpawnShip()
        {
            TimeToSpawn = SpawnTime;
            //playership = new TestShip();
            playership = (SpaceShip)Activator.CreateInstance(ShipType);
            PlayerStart ps = GetSpawnLocation();
            if (ps != null)
            {
                playership.Position = ps.AbsolutePosition;
                playership.Orientation = ps.Orientation;
            }

            playership.Owner = Player;
            Root.Instance.Scene.Spawn(playership);
            Control = new SpaceShipControl(playership, cursor);

            MainCamera.Target = playership;
            //FlyByCamera.Attach = playership;

               // if (ControlMenu != null)
            //{
                //Rule.AnnounceEvent -= ControlMenu.Comm.WriteLine;
                Rule.AnnounceEvent -= Log.WriteLine;
                //ControlMenu.Close();
            //}
            //Root.Instance.Gui.windows.Add(ControlMenu = new ControlDisplay(300, playership));
            //playership.Computer.TextMonitor = ControlMenu.Comm;
            //Rule.AnnounceEvent += ControlMenu.Comm.WriteLine;
            Rule.AnnounceEvent += Log.WriteLine;

            if (Display != null)
            {
                Display.Close();
            }

            if (Root.Instance.Gui != null)
            {
                Root.Instance.Gui.windows.Add(Display = new WeaponDisplay(playership.Slots));
                if (Bar != null)
                {
                    Bar.Close();
                }
                Root.Instance.Gui.windows.Add(Bar = new WeaponBar(playership, Display));

                if (Radar != null)
                {
                    Radar.Close();
                }
                Root.Instance.Gui.windows.Add(Radar = new RadarDisplay());
            }
            //ControlMenu.Ship = playership;
            //ControlMenu.Visible=false;
        }
Exemple #3
0
        public WeaponBar(SpaceShip s, WeaponDisplay d)
        {
            ship = s;
            display = d;

            icons = new MeshWindow[SpaceShip.WeaponList.Length-1];
            for (int i = 0; i < SpaceShip.WeaponList.Length-1; ++i)
            {
                icons[i] = new MeshWindow(GetIcon(SpaceShip.WeaponList[i]));
                if(ship.CurrentWeapon==i)
                {
                    Style(icons[i], true);
                    currentweapon = i;
                }
                else
                {
                    Style(icons[i], false);
                }
            }

            float pixelsize = 48;

            Layout = new Layout(1, icons.Length);
            Size = new Vector2(pixelsize, icons.Length * pixelsize);
            Position = new Vector2(
                8,
                Root.Instance.UserInterface!=null?(Root.Instance.UserInterface.Renderer.Size.Y / 2 - Size.Y / 2):1000
                );
            Transparent = true;

            for(int i=0;i<icons.Length;++i)
                Add(icons[i],0,i);

            Layout.Update(Size);

            UpdateDisplayPosition();
        }
Exemple #4
0
        public WeaponManager(SpaceShip ship)
            : base(new Layout(ship.Slots.Length+1,SpaceShip.WeaponList.Length))
        {
            Ship = ship;

            Transparent = true;

            WeaponButtons = new Button[ship.Slots.Length, SpaceShip.WeaponList.Length - 1];

            //slot numbers
            for (int j = 0; j < ship.Slots.Length; ++j)
            {
                Button b2 = new Button(j.ToString());
                Add(b2, j + 1, 0);
            }

            //weapon matrix
            for (int i = 0; i < SpaceShip.WeaponList.Length; ++i)
            {
                Type t = SpaceShip.WeaponList[i];
                if (t == null)
                    break;

                //weaponbutton
                Button b = new Button(t.Name);
                Add(b, 0, i + 1);

                for (int j = 0; j < ship.Slots.Length; ++j)
                {
                    /*string text;
                    if (ship.Slots[j].Weapon != null && ship.Slots[j].Weapon.GetType() == t)
                        text = "X";
                    else if (ship.CanArmWeapon(SpaceShip.WeaponList[i]))
                        text = "+";
                    else
                        text = "-";*/
                    Button b2 = new Button(WeaponButtonClicked,"");
                    b2.UserData = new Point(j, i);
                    Add(b2, j + 1, i + 1);
                    WeaponButtons[j, i] = b2;
                }
            }

            Update();
            //Layout.Update

            //width = 500;
            Layout.Widths[0] = 4;
            Size = new Vector2(500,Root.Instance.Gui.DefaultFont.size * Layout.Height);
        }
Exemple #5
0
 public SpaceShipControl(SpaceShip s, Node cursor)
     : base(s)
 {
     Cursor = cursor;
 }
Exemple #6
0
        public FlySmart(SpaceShip owner, Node target, float dist)
            : base(owner,target.AbsolutePosition)
        {
            map = new AStarMap(400, owner);
            Dist = dist;
            TargetNode = target;

            astar = new AStar();

            //map.Print(-22,-22,22,22);

            Point p1 = map.GetCell(target.AbsolutePosition);
            Point p2 = map.GetCell(owner.AbsolutePosition);

            p1 = map.GetNearestFreePosition(p1);
            p2 = map.GetNearestFreePosition(p2);

            if (p1 == p2)
                System.Console.WriteLine("start=end!");

            AStarMap.AStarNode2D GoalNode = new AStarMap.AStarNode2D(null, null, 0, p1.X, p1.Y, map);
            AStarMap.AStarNode2D StartNode = new AStarMap.AStarNode2D(null, null, 0, p2.X, p2.Y, map);
            StartNode.GoalNode = GoalNode;
            astar.FindPath(StartNode, GoalNode);
            if (astar.Solution.Count == 0)
            {
                System.Console.WriteLine("no solution! from " + p2 + " to " + p1);
                Done = true;
            }
            PrintSolution(astar.Solution);
            currentnode = 0;
        }
Exemple #7
0
 public SpaceShipBotControl(SpaceShip s)
     : base(s)
 {
     ChangeToDefaultTask();
 }
Exemple #8
0
 public void ReturnFlag(Flag f, SpaceShip ship)
 {
     if (ship != null)
     {
         Player p = ship.GetPlayer();
         Announce(p.Name + " returned the " + Team.ColorNames[f.Team] + " flag!");
     }
     else
     {
         Announce("The " + Team.ColorNames[f.Team] + " flag was returned.");
     }
 }
Exemple #9
0
 public Retreat(SpaceShip owner, Actor target)
     : base(owner)
 {
     Target = target;
 }
Exemple #10
0
 public Search(SpaceShip owner)
     : base(owner)
 {
 }
Exemple #11
0
 public Patrol(SpaceShip owner, Node[] waypoints)
     : base(owner)
 {
     Waypoints = waypoints;
 }
Exemple #12
0
 public Follow(SpaceShip owner, Actor target)
     : base(owner)
 {
     Target = target;
 }
Exemple #13
0
 public FlyTo(SpaceShip owner, Vector3 target)
     : base(owner)
 {
     this.target = target;
 }
Exemple #14
0
 public void CaptureFlag(Flag f, SpaceShip ship)
 {
     Player p = ship.GetPlayer();
     Announce(p.Name + " captured the " + Team.ColorNames[f.Team] + " flag!");
     int cap = ++((CtfTeam)Teams[p.Team]).Captures;
     if (cap >= CaptureLimit && CaptureLimit > 0)
     {
         Announce(Team.ColorNames[p.Team] + " wins the match!");
         EndGame();
     }
 }
Exemple #15
0
 public Stop(SpaceShip owner)
     : base(owner)
 {
 }
Exemple #16
0
 public void DropFlag(Flag f, SpaceShip ship)
 {
     Player p = ship.GetPlayer();
     Announce(p.Name + " dropped the " + Team.ColorNames[f.Team] + " flag!");
 }
Exemple #17
0
 public Task(SpaceShip owner)
 {
     Owner = owner;
 }
Exemple #18
0
 public void TakeFlag(Flag f, SpaceShip ship)
 {
     Player p = ship.GetPlayer();
     Announce(p.Name + " has taken the " + Team.ColorNames[f.Team] + " flag!");
 }
Exemple #19
0
 public Wait(SpaceShip owner)
     : base(owner)
 {
 }
Exemple #20
0
 public SpaceShipControlBase(SpaceShip s)
     : base(s)
 {
     Target = s;
 }
Exemple #21
0
 public Attack(SpaceShip owner, Actor target)
     : base(owner)
 {
     Target = target;
 }