Ejemplo n.º 1
0
        public void SpawnMobs()
        {
            Log.Debug("Star spawning mobs");
            Random rand = new Random();

            for (int i = 0; i < 10; i++)
            {
                Vector3Net position = new Vector3Net(rand.Next(SpawnOnMapX_Min, SpawnOnMapX_Max), SpawnOnMapY, rand.Next(SpawnOnMapZ_Min, SpawnOnMapZ_Max), Vector3Net.RotationNet.Zero);
                // Vector3Net position = new Vector3Net(20, MapY, 20, Vector3Net.RotationNet.Zero);
                foreach (OccupiedTerritory territory in OccupiedTerritory.OccupiedTerrotpryes)
                {
                    if (!territory.IsContain(position))
                    {
                        Mob.Mob mob = new Mob.Mob(position, rand.Next(1, 4), Mobs.Count + 1);
                        Mobs.Add(Mobs.Count + 1, mob);
                        Log.Debug("Mob: " + Mobs.Count + " | created on | " + mob.Position.X + " : " + mob.Position.Z);
                    }
                    else
                    {
                        position = new Vector3Net(rand.Next(SpawnOnMapX_Min, SpawnOnMapX_Max), SpawnOnMapY, rand.Next(SpawnOnMapZ_Min, SpawnOnMapZ_Max), Vector3Net.RotationNet.Zero);
                        //position = new Vector3Net(20, MapY, 20, Vector3Net.RotationNet.Zero);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private void PlayerMoveHandler(OperationRequest operationRequest, SendParameters sendParameters)
        {
            Operations.PlayerMove playerMoveRequest = new Operations.PlayerMove(Protocol, operationRequest);

            if (!playerMoveRequest.IsValid)
            {
                SendOperationResponse(playerMoveRequest.GetResponse(ErrorCode.InvaildParameters), sendParameters);
                return;
            }

            Position = new Vector3Net(playerMoveRequest.X, playerMoveRequest.Y, playerMoveRequest.Z, new Vector3Net.RotationNet(playerMoveRequest.RotX, playerMoveRequest.RotY, playerMoveRequest.RotZ, playerMoveRequest.RotW));

            EventData eventData = new EventData((byte)EventCode.PlayerMove);

            eventData.Parameters = new Dictionary <byte, object> {
                { (byte)ParameterCode.PlayerPosX, Position.X },
                { (byte)ParameterCode.PlayerPosY, Position.Y },
                { (byte)ParameterCode.PlayerPosZ, Position.Z },
                { (byte)ParameterCode.PlayerRotX, Position.Rotation.X },
                { (byte)ParameterCode.PlayerRotY, Position.Rotation.Y },
                { (byte)ParameterCode.PlayerRotZ, Position.Rotation.Z },
                { (byte)ParameterCode.PlayerRotW, Position.Rotation.W },
                { (byte)ParameterCode.PlayerID, PlayerID }
            };
            eventData.SendTo(World.Instance.GetClientsList(PlayerID), sendParameters);

            //Log.Info("Player " + PlayerName + " move | x:" + Position.X + " y:" + Position.Y + " z:" + Position.Z);
        }
Ejemplo n.º 3
0
 public Mob(Vector3Net position, int type, int mobID)
 {
     Position   = position;
     Type       = type;
     MobID      = mobID;
     StartCoins = 0;
     Coins      = 100;
     Dead       = false;
 }
Ejemplo n.º 4
0
 public override bool IsContain(Vector3Net position)
 {
     if ((position.X > Point1.X && position.X < Point2.X) && (position.Z > Point1.Z && position.Z < Point3.Z))
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Ejemplo n.º 5
0
 public UnityClient(InitRequest initRequest) : base(initRequest)
 {
     Position   = new Vector3Net(22, 1, 22, new Vector3Net.RotationNet(0, 0, 0, 0));
     PlayerName = "";
     PlayerID   = 0;
 }
Ejemplo n.º 6
0
        protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)
        {
            switch (operationRequest.OperationCode)
            {
            case (byte)OperationCode.Login:
                var loginRequest = new Login(Protocol, operationRequest);

                if (!loginRequest.IsValid)
                {
                    SendOperationResponse(loginRequest.GetResponse(ErrorCode.InvalidParameters), sendParameters);
                    return;
                }

                CharacterName = loginRequest.CharacterName;

                if (World.Instance.IsContain(CharacterName))
                {
                    SendOperationResponse(loginRequest.GetResponse(ErrorCode.NameIsExist), sendParameters);
                    return;
                }

                World.Instance.AddClient(this);

                var response = new OperationResponse(operationRequest.OperationCode);
                SendOperationResponse(response, sendParameters);

                Log.Info("user with name:" + CharacterName);
                Log.Info("user id:" + ConnectionId);
                break;

            case (byte)OperationCode.SendChatMessage:
            {
                var chatRequest = new ChatMessage(Protocol, operationRequest);

                if (!chatRequest.IsValid)
                {
                    SendOperationResponse(chatRequest.GetResponse(ErrorCode.InvalidParameters), sendParameters);
                    return;
                }

                string message = chatRequest.Message;

                string[] param = message.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
                if (param.Length == 2)
                {
                    string targetName = param[0];
                    message = param[1];
                    if (World.Instance.IsContain(targetName))
                    {
                        var targetClient = World.Instance.TryGetByName(targetName);
                        if (targetClient == null)
                        {
                            return;
                        }

                        message = CharacterName + "[PM]:" + message;

                        var personalEventData = new EventData((byte)EventCode.ChatMessage);
                        personalEventData.Parameters = new Dictionary <byte, object> {
                            { (byte)ParameterCode.ChatMessage, message }
                        };
                        personalEventData.SendTo(new UnityClient[] { this, targetClient }, sendParameters);
                    }
                    return;
                }

                message = CharacterName + ": " + message;

                Chat.Instance.AddMessage(message);

                var eventData = new EventData((byte)EventCode.ChatMessage);
                eventData.Parameters = new Dictionary <byte, object> {
                    { (byte)ParameterCode.ChatMessage, message }
                };
                eventData.SendTo(World.Instance.Clients, sendParameters);
            }

            break;

            case (byte)OperationCode.GetRecentChatMessages:
            {
                var messages = Chat.Instance.GetRecentMessages();
                messages.Reverse();

                if (messages.Count == 0)
                {
                    break;
                }

                var message   = messages.Aggregate((i, j) => i + "\r\n" + j);
                var eventData = new EventData((byte)EventCode.ChatMessage);
                eventData.Parameters = new Dictionary <byte, object> {
                    { (byte)ParameterCode.ChatMessage, message }
                };
                eventData.SendTo(new UnityClient[] { this }, sendParameters);
            }

            break;

            case (byte)OperationCode.Move:
            {
                var moveRequest = new Move(Protocol, operationRequest);

                if (!moveRequest.IsValid)
                {
                    SendOperationResponse(moveRequest.GetResponse(ErrorCode.InvalidParameters), sendParameters);
                    return;
                }

                Position = new Vector3Net(moveRequest.X, moveRequest.Y, moveRequest.Z);

                var eventData = new EventData((byte)EventCode.Move);
                eventData.Parameters = new Dictionary <byte, object>
                {
                    { (byte)ParameterCode.PosX, Position.X },
                    { (byte)ParameterCode.PosY, Position.Y },
                    { (byte)ParameterCode.PosZ, Position.Z },
                    { (byte)ParameterCode.CharacterName, CharacterName }
                };
                eventData.SendTo(World.Instance.Clients, sendParameters);
            }
            break;

            case (byte)OperationCode.WorldEnter:
            {
                var eventData = new EventData((byte)EventCode.WorldEnter);

                eventData.Parameters = new Dictionary <byte, object>
                {
                    { (byte)ParameterCode.PosX, Position.X },
                    { (byte)ParameterCode.PosY, Position.Y },
                    { (byte)ParameterCode.PosZ, Position.Z },
                    { (byte)ParameterCode.CharacterName, CharacterName }
                };
                eventData.SendTo(World.Instance.Clients, sendParameters);
                Log.Info("Operation WorldEnter:" + CharacterName);
            }
            break;

            case (byte)OperationCode.WorldExit:
                WorldExitHandler(sendParameters);
                Log.Info("Operation WorldExit:" + CharacterName);
                break;

            case (byte)OperationCode.ListPlayers:
            {
                ListPlayersHandler(sendParameters);
            }
            break;

            default:
                Log.Debug("Unknown OperationRequest received!:" + operationRequest.OperationCode);
                break;
            }
        }
Ejemplo n.º 7
0
 public UnityClient(IRpcProtocol protocol, IPhotonPeer unmanagedPeer) : base(protocol, unmanagedPeer)
 {
     Log.Debug("Client ip:" + unmanagedPeer.GetRemoteIP());
     Position = new Vector3Net(0, 0, 0);
 }
Ejemplo n.º 8
0
 public OccuipedShape(Vector3Net point1, Vector3Net point2, Vector3Net point3)
 {
     Point1 = point1;
     Point2 = point2;
     Point3 = point3;
 }
Ejemplo n.º 9
0
 public abstract bool IsContain(Vector3Net position);