Beispiel #1
0
        private void handleShipInit(GameEvent e)
        {
            ShipInit ee = (ShipInit)e;
            ClientShip ship = new ClientShip(engine.World, engine.SceneManager, null, ee.PlayerId, ee.Position, ee.Orientation);
            shipTable.Add(ship.ID, ship);

            if (ship.ID == engine.PlayerId)
                engine.AttachCamera(ship);

            Util.Log("Ship " + ship.ID + "inited.  my ID is " + engine.PlayerId);
        }
Beispiel #2
0
 private void handleStatUpdate(GameEvent e)
 {
     try {
         StatBoardEvent sbe = (StatBoardEvent)e;
         if (sbe.Stat == StatBoardEnum.PositiveTime) {
             int myScore;
             if (sbe.ValueById.TryGetValue(playerId, out myScore)) {
                 TextRenderer.UpdateTextBox("score", "Game Mode: " + GameModeFactory.GetName(gameMode) + "\nScore: " + myScore);
             }
         }
     }
     catch (Exception err) {
         Util.RecordException(err);
     }
 }
Beispiel #3
0
 private void handleShipStateStatus(GameEvent e)
 {
     ShipStateStatus ee = (ShipStateStatus)e;
     List<ShipState> states = ee.getStates();
     for (int i = 0; i < states.Count; i++)
     {
         ClientShip s;
         shipTable.TryGetValue(states[i].id, out s);
         try {
             s.ShipState = states[i];
         }
         catch (NullReferenceException nre) {
             Util.Log("Could not find a ship with ID " + i + ", but received a status update for one.");
         }
     }
 }
Beispiel #4
0
        void handleShipControlStatus(GameEvent e)
        {
            ShipControlStatus ee = (ShipControlStatus)e;
            Ship s;
            shipTable.TryGetValue(ee.playerID, out s);
            Vector3 torque = s.GetCorrectiveTorque();

            if (Mogre.Math.Abs(s.RotationalVelocity.x) < AUTOCORRECT_CUTOFF) {
                torque.x = 0;
                s.RotationalVelocity = new Vector3(0, s.RotationalVelocity.y, s.RotationalVelocity.z);
            }
            if (Mogre.Math.Abs(s.RotationalVelocity.y) < AUTOCORRECT_CUTOFF) {
                torque.y = 0;
                s.RotationalVelocity = new Vector3(s.RotationalVelocity.x, 0, s.RotationalVelocity.z);
            }
            if (Mogre.Math.Abs(s.RotationalVelocity.z) < AUTOCORRECT_CUTOFF) {
                torque.z = 0;
                s.RotationalVelocity = new Vector3(s.RotationalVelocity.x, s.RotationalVelocity.y, 0);
            }

            if (ee.pitch != UserInputManager.AUTOCORRECT)
            {
                torque.x = ee.pitch / ((float)UserInputManager.POSITIVE);
            }

            if (ee.yaw != UserInputManager.AUTOCORRECT)
            {
                torque.y = ee.yaw / ((float)UserInputManager.POSITIVE);
            }

            if (ee.roll != UserInputManager.AUTOCORRECT)
            {
                torque.z = ee.roll / ((float)UserInputManager.POSITIVE);
            }
            //Console.Out.WriteLine(torque.ToString());
            //Console.Out.WriteLine();
            s.TorqueRelative(torque);

            s.ThrustRelative(new Vector3(0.0f, 0.0f, ((float)ee.thrust) / ((float)UserInputManager.FULL)));
        }
Beispiel #5
0
 /// <summary>
 /// Sends a game event over the network.  If the caller is a server, it will be broadcast, otherwise it will be sent to the server.
 /// </summary>
 /// <param name="e">The game event to be sent</param>
 public void SendEvent(GameEvent e)
 {
     SpiderMessage msg = new SpiderMessage(e.ToByteArray(), SpiderMessageType.Bytes, e.GetType().ToString());
     net.SendMessage(msg, e.DeliveryType);
 }
Beispiel #6
0
        /// <summary>
        /// Sends a game event over the network.  If the caller is a server, it will be broadcast, otherwise it will be sent to the server.
        /// </summary>
        /// <param name="e">The game event to be sent</param>
        public void SendEvent(GameEvent e)
        {
            SpiderMessage msg = new SpiderMessage(e.ToByteArray(), SpiderMessageType.Bytes, e.GetType().ToString());

            net.SendMessage(msg, e.DeliveryType);
        }