Example #1
0
        public User.User.UserState InsertResponse(string response, string userId)
        {
            User.User.UserState state = User.User.UserState.LOGGING_IN;

            UserScript specificUser = usersLoggingIn.Where(u => u.user.UserID == userId).SingleOrDefault();

            if (specificUser != null && specificUser.currentStep == Steps.AWAITINGRESPONSE)
            {
                switch (specificUser.lastStep)
                {
                case Steps.NAME:
                    if (ValidatePlayerName(specificUser.user.UserID, response))
                    {
                        userId = specificUser.user.UserID;
                        specificUser.user.LogID = specificUser.user.UserID;
                        usersLoggingIn.Where(u => u.user.UserID == userId).SingleOrDefault().currentStep = Steps.PASSWORD;
                        usersLoggingIn.Where(u => u.user.UserID == userId).SingleOrDefault().lastStep    = Steps.AWAITINGRESPONSE;
                    }
                    else
                    {
                        usersLoggingIn.Where(u => u.user.UserID == userId).SingleOrDefault().currentStep = Steps.NAME;
                        usersLoggingIn.Where(u => u.user.UserID == userId).SingleOrDefault().lastStep    = Steps.NAME;
                    }
                    break;

                case Steps.PASSWORD:
                    if (ValidatePlayerPassword(specificUser.user.UserID, response))
                    {
                        specificUser.currentStep = Steps.SUCCEEDED;
                        specificUser.lastStep    = Steps.PASSWORD;
                    }
                    else
                    {
                        usersLoggingIn.Where(u => u.user.UserID == userId).SingleOrDefault().currentStep = Steps.PASSWORD;
                        usersLoggingIn.Where(u => u.user.UserID == userId).SingleOrDefault().lastStep    = Steps.PASSWORD;
                    }
                    break;

                case Steps.CREATECHAR:
                    if (String.Compare(response[0].ToString(), "y", true) == 0)
                    {
                        state = User.User.UserState.CREATING_CHARACTER;
                        usersLoggingIn.Remove(specificUser);
                    }
                    else
                    {
                        specificUser.currentStep = Steps.NAME;
                        specificUser.lastStep    = Steps.NONE;
                    }
                    break;

                default:
                    //something has gone terribly wrong if we get here
                    break;
                }
            }
            return(state);
        }
Example #2
0
        //this method will only send the message to users in a certain state (logging in, creating character, playing, etc.)
        //this will come in handy for the login and character creation portions
        private void SendToClients(User.User.UserState state, byte[] message)
        {
            List <Socket> matchesState = clientSocketList.Where(s => s.Value.CurrentState == state).Select(s => s.Key).ToList();

            foreach (Socket client in matchesState)
            {
                client.Send(message);
                logger.Log(client.RemoteEndPoint.ToString() + " >>> " + System.Text.Encoding.ASCII.GetString(message));
            }
            this.ServerSocket.BeginAccept(new AsyncCallback(AcceptCallback), null);
        }
Example #3
0
        public User.User.UserState ExecuteResponse(string response, string userId)
        {
            User.User.UserState state = User.User.UserState.LOGGING_IN;

            ScriptUsers specificUser = _userList.Where(u => u.user.UserID == userId).SingleOrDefault();

            if (specificUser != null && specificUser.currentStep != "NONE")
            {
                //a switch won't work here, what needs ot happen is we go to the DB and get the logic for this current step
                //that will do something based on th euser input
            }
            return(state);
        }
Example #4
0
        public User.User.UserState InsertResponse(string response, string userId)
        {
            User.User.UserState state = User.User.UserState.LEVEL_UP;
            if (string.IsNullOrEmpty(response))
            {
                return(state);
            }

            TempLvlChar currentUser = usersLevelingUp.Where(u => u.user.UserID == userId).SingleOrDefault();

            currentUser.Response = response;
            BsonDocument stepDoc = MongoUtils.MongoData.GetCollection("Scripts", "LevelUp").FindOneAs <BsonDocument>(Query.EQ("_id", currentUser.lastStep.ToString()));

            if (currentUser != null && currentUser.currentStep == ScriptSteps.AwaitingResponse)
            {
                state = (User.User.UserState)ParseStepDocument(stepDoc, currentUser, levelUpScript);
            }
            currentUser.Response = "";
            return(state);
        }
Example #5
0
        private User.User.UserState IncreaseStatResponse(string response, TempLvlChar currentUser)
        {
            User.User.UserState state = User.User.UserState.LEVEL_UP;
            int     stat     = -1;
            decimal increase = 0m;

            int.TryParse(response, out stat);
            if (stat >= 1 && stat <= currentUser.maxOptions + 1)
            {
                string attribute = "";
                Dictionary <string, Character.Attribute> attributesPlayerHas = currentUser.user.Player.GetAttributes();
                int i = 1;

                foreach (KeyValuePair <string, Character.Attribute> index in attributesPlayerHas)
                {
                    if (i == stat)
                    {
                        attribute = index.Key;
                        break;
                    }
                    i++;
                }

                if (!string.IsNullOrEmpty(attribute))
                {
                    increase = RankIncrease(currentUser, attribute);
                }
                else
                {
                    //player chose to quit while still having points to spend
                    state = User.User.UserState.TALKING;
                    usersLevelingUp.Remove(currentUser);
                    return(state);
                }

                if (increase > 0)
                {
                    currentUser.user.MessageHandler(String.Format("You've increased your {0} by {1} points", attribute, increase));
                }
                else
                {
                    currentUser.user.MessageHandler("You don't have enough points to increase the rank of " + attribute);
                    //this will put us back at the level up stats page
                    currentUser.currentStep = ScriptSteps.Step1;
                    currentUser.lastStep    = ScriptSteps.None;
                }
                if (currentUser.user.Player.PointsToSpend == 0)
                {
                    state = User.User.UserState.TALKING;
                    usersLevelingUp.Remove(currentUser);
                    currentUser.user.MessageHandler("");
                }
            }
            else
            {
                currentUser.currentStep = ScriptSteps.Step1;
                currentUser.lastStep    = ScriptSteps.None;
            }

            return(state);
        }
Example #6
0
        public User.User.UserState InsertResponse(string response, string userId)
        {
            User.User.UserState state = User.User.UserState.CREATING_CHARACTER;

            if (string.IsNullOrEmpty(response))
            {
                return(state);
            }

            TempChar specificUser = usersCreatingChars.Where(u => u.user.UserID == userId).SingleOrDefault();

            //Get the confirmation from the previous selection
            if (specificUser.confirmStep != CreateCharSteps.NONE)
            {
                if (!ConfirmSelection(response))
                {
                    specificUser.currentStep = specificUser.confirmStep; //go back to the previous selection
                    specificUser.lastStep    = CreateCharSteps.NONE;
                }
                else
                {
                    specificUser.currentStep = specificUser.nextStep;
                }
                specificUser.confirmStep = CreateCharSteps.NONE;
                return(state);
            }


            if (specificUser != null && specificUser.currentStep == CreateCharSteps.AWAITINGRESPONSE)
            {
                switch (specificUser.lastStep)
                {
                case CreateCharSteps.FIRST_NAME:
                    specificUser.FirstName   = response;
                    specificUser.currentStep = CreateCharSteps.LAST_NAME;
                    specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                    break;

                case CreateCharSteps.LAST_NAME:
                    if (ValidatePlayerName(specificUser.user.UserID, response))
                    {
                        if (String.Compare(response, "name", true) != 0)
                        {
                            specificUser.LastName    = response;
                            specificUser.currentStep = CreateCharSteps.PASSWORD;
                            specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                        }
                        else
                        {
                            specificUser.currentStep = CreateCharSteps.FIRST_NAME;
                            specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                        }
                    }
                    else
                    {
                        specificUser.currentStep = CreateCharSteps.FIRST_NAME;
                        specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                    }
                    break;

                case CreateCharSteps.PASSWORD:
                    specificUser.Password    = response;
                    specificUser.currentStep = CreateCharSteps.PASSWORD_CHECK;
                    specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                    break;

                case CreateCharSteps.PASSWORD_CHECK:
                    if (ValidatePlayerPassword(specificUser.user.UserID, response))
                    {
                        specificUser.Password    = response;
                        specificUser.currentStep = CreateCharSteps.CLASS;
                        specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                    }
                    else
                    {
                        specificUser.currentStep = CreateCharSteps.PASSWORD;
                        specificUser.lastStep    = CreateCharSteps.PASSWORD;
                    }
                    break;

                case CreateCharSteps.CLASS: {
                    if (String.Compare(response.Substring(0, 1), "b", true) != 0)
                    {
                        int selection = 0;
                        int.TryParse(response, out selection);
                        int max = (GetMaxEnum <CharacterEnums.CharacterClass>() / 8) + 1;
                        if (selection >= 1 && selection <= max)
                        {
                            specificUser.Class       = (CharacterEnums.CharacterClass)(1 << selection);
                            specificUser.confirmStep = CreateCharSteps.CLASS;
                            specificUser.currentStep = CreateCharSteps.CLASS;
                            specificUser.nextStep    = CreateCharSteps.GENDER;
                            specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                        }
                        else
                        {
                            specificUser.currentStep = CreateCharSteps.CLASS;
                            specificUser.lastStep    = CreateCharSteps.CLASS;
                        }
                    }
                    else
                    {
                        specificUser.currentStep = CreateCharSteps.FIRST_NAME;
                        specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                    }
                    break;
                }

                case CreateCharSteps.GENDER: {
                    if (String.Compare(response.Substring(0, 1), "b", true) != 0)
                    {
                        int selection = 0;
                        int.TryParse(response, out selection);
                        selection--;
                        if (selection >= 0 && selection <= GetMaxEnum <CharacterEnums.Genders>())
                        {
                            specificUser.Gender      = (CharacterEnums.Genders)selection;
                            specificUser.currentStep = CreateCharSteps.RACE;
                            specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                        }
                        else
                        {
                            specificUser.currentStep = CreateCharSteps.GENDER;
                            specificUser.lastStep    = CreateCharSteps.GENDER;
                        }
                    }
                    else
                    {
                        specificUser.currentStep = CreateCharSteps.CLASS;
                        specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                    }
                    break;
                }

                case CreateCharSteps.RACE: {
                    if (String.Compare(response.Substring(0, 1), "b", true) != 0)
                    {
                        int selection = 0;
                        int.TryParse(response, out selection);
                        selection--;
                        if (selection >= 0 && selection <= GetMaxEnum <CharacterEnums.CharacterRace>())
                        {
                            specificUser.Race        = (CharacterEnums.CharacterRace)selection;
                            specificUser.confirmStep = CreateCharSteps.RACE;
                            specificUser.currentStep = CreateCharSteps.RACE;
                            specificUser.nextStep    = CreateCharSteps.LANGUAGE;
                            specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                        }
                        else
                        {
                            specificUser.currentStep = CreateCharSteps.RACE;
                            specificUser.lastStep    = CreateCharSteps.RACE;
                        }
                    }
                    else
                    {
                        specificUser.currentStep = CreateCharSteps.GENDER;
                        specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                    }

                    break;
                }

                case CreateCharSteps.LANGUAGE: {
                    if (String.Compare(response.Substring(0, 1), "b", true) != 0)
                    {
                        int selection = 0;
                        int.TryParse(response, out selection);
                        selection--;
                        if (selection >= 0 && selection <= GetMaxEnum <CharacterEnums.Languages>())
                        {
                            specificUser.Language    = (CharacterEnums.Languages)selection;
                            specificUser.currentStep = CreateCharSteps.SKIN_TYPE;
                            specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                        }
                        else
                        {
                            specificUser.currentStep = CreateCharSteps.LANGUAGE;
                            specificUser.lastStep    = CreateCharSteps.LANGUAGE;
                        }
                    }
                    else
                    {
                        specificUser.currentStep = CreateCharSteps.RACE;
                        specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                    }
                    break;
                }

                case CreateCharSteps.SKIN_TYPE: {
                    if (String.Compare(response.Substring(0, 1), "b", true) != 0)
                    {
                        int selection = 0;
                        int.TryParse(response, out selection);
                        selection--;
                        if (selection >= 0 && selection <= GetMaxEnum <CharacterEnums.SkinType>())
                        {
                            specificUser.SkinType    = (CharacterEnums.SkinType)selection;
                            specificUser.currentStep = CreateCharSteps.SKIN_COLOR;
                            specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                        }
                        else
                        {
                            specificUser.currentStep = CreateCharSteps.SKIN_TYPE;
                            specificUser.lastStep    = CreateCharSteps.SKIN_TYPE;
                        }
                    }
                    else
                    {
                        specificUser.currentStep = CreateCharSteps.LANGUAGE;
                        specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                    }
                    break;
                }

                case CreateCharSteps.SKIN_COLOR: {
                    if (String.Compare(response.Substring(0, 1), "b", true) != 0)
                    {
                        int selection = 0;
                        int.TryParse(response, out selection);
                        selection--;
                        if (selection >= 0 && selection <= GetMaxEnum <CharacterEnums.SkinColors>())
                        {
                            specificUser.SkinColor   = (CharacterEnums.SkinColors)selection;
                            specificUser.currentStep = CreateCharSteps.HAIR_COLOR;
                            specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                        }
                        else
                        {
                            specificUser.currentStep = CreateCharSteps.SKIN_COLOR;
                            specificUser.lastStep    = CreateCharSteps.SKIN_COLOR;
                        }
                    }
                    else
                    {
                        specificUser.currentStep = CreateCharSteps.SKIN_TYPE;
                        specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                    }
                    break;
                }

                case CreateCharSteps.HAIR_COLOR: {
                    if (String.Compare(response.Substring(0, 1), "b", true) != 0)
                    {
                        int selection = 0;
                        int.TryParse(response, out selection);
                        selection--;
                        if (selection >= 0 && selection <= GetMaxEnum <CharacterEnums.HairColors>())
                        {
                            specificUser.HairColor   = (CharacterEnums.HairColors)selection;
                            specificUser.currentStep = CreateCharSteps.EYE_COLOR;
                            specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                        }
                        else
                        {
                            specificUser.currentStep = CreateCharSteps.HAIR_COLOR;
                            specificUser.lastStep    = CreateCharSteps.HAIR_COLOR;
                        }
                    }
                    else
                    {
                        specificUser.currentStep = CreateCharSteps.SKIN_COLOR;
                        specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                    }
                    break;
                }

                case CreateCharSteps.EYE_COLOR: {
                    if (String.Compare(response.Substring(0, 1), "b", true) != 0)
                    {
                        int selection = 0;
                        int.TryParse(response, out selection);
                        selection--;
                        if (selection >= 0 && selection <= GetMaxEnum <CharacterEnums.EyeColors>())
                        {
                            specificUser.EyeColor    = (CharacterEnums.EyeColors)selection;
                            specificUser.currentStep = CreateCharSteps.BUILD;
                            specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                        }
                        else
                        {
                            specificUser.currentStep = CreateCharSteps.EYE_COLOR;
                            specificUser.lastStep    = CreateCharSteps.EYE_COLOR;
                        }
                    }
                    else
                    {
                        specificUser.currentStep = CreateCharSteps.HAIR_COLOR;
                        specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                    }
                    break;
                }

                case CreateCharSteps.BUILD: {
                    if (String.Compare(response.Substring(0, 1), "b", true) != 0)
                    {
                        int selection = 0;
                        int.TryParse(response, out selection);
                        selection--;
                        if (selection >= 0 && selection <= GetMaxEnum <CharacterEnums.BodyBuild>())
                        {
                            specificUser.Build       = (CharacterEnums.BodyBuild)selection;
                            specificUser.currentStep = CreateCharSteps.WEIGHT;
                            specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                        }
                        else
                        {
                            specificUser.currentStep = CreateCharSteps.BUILD;
                            specificUser.lastStep    = CreateCharSteps.BUILD;
                        }
                    }
                    else
                    {
                        specificUser.currentStep = CreateCharSteps.EYE_COLOR;
                        specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                    }
                    break;
                }

                case CreateCharSteps.WEIGHT: {
                    double temp = 0;
                    double.TryParse(response, out temp);
                    BsonDocument doc  = _generalCollection.FindOneAs <BsonDocument>(Query.EQ("_id", "BodyWeight")).AsBsonDocument;
                    BsonArray    arr  = doc["Genders"].AsBsonArray;
                    BsonArray    arr2 = arr.Where(a => a["type"].AsString == specificUser.Gender.ToString().CamelCaseWord()).SingleOrDefault()["Weights"].AsBsonArray;
                    doc = arr2.Where(a => a.AsBsonDocument["name"] == specificUser.Build.ToString().CamelCaseWord()).SingleOrDefault().AsBsonDocument;
                    double min = doc["min"].AsInt32;         //these need to be converted to doubles in DB
                    double max = doc["max"].AsInt32;

                    if (temp >= min && temp <= max)
                    {
                        specificUser.Weight      = temp;
                        specificUser.currentStep = CreateCharSteps.HEIGHT;
                        specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                    }
                    else
                    {
                        specificUser.currentStep = CreateCharSteps.WEIGHT;
                        specificUser.lastStep    = CreateCharSteps.WEIGHT;
                    }
                    break;
                }

                case CreateCharSteps.HEIGHT: {
                    double temp = 0;
                    double.TryParse(response, out temp);
                    //get the min and max height for each race from DB and validate
                    BsonDocument doc = _generalCollection.FindOneAs <BsonDocument>(Query.EQ("_id", "Heights")).AsBsonDocument;
                    BsonArray    arr = doc["Types"].AsBsonArray;
                    double       min = 0.0d, max = 0.0d;

                    foreach (BsonDocument height in arr)
                    {
                        if (height["Name"] == specificUser.Race.ToString().ToUpper())
                        {
                            min = height["Min"].AsDouble;         //these need to be converted to doubles in DB
                            max = height["Max"].AsDouble;
                            break;
                        }
                    }

                    if (temp >= min && temp <= max)
                    {
                        specificUser.Height      = temp;
                        specificUser.currentStep = CreateCharSteps.SUCCEEDED;
                        specificUser.lastStep    = CreateCharSteps.AWAITINGRESPONSE;
                    }
                    else
                    {
                        specificUser.currentStep = CreateCharSteps.HEIGHT;
                        specificUser.lastStep    = CreateCharSteps.HEIGHT;
                    }

                    break;
                }

                default:
                    //something has gone terribly wrong if we get here
                    break;
                }
            }
            return(state);
        }
Example #7
0
 public void SendToClients(User.User.UserState state, string message)
 {
     SendToClients(state, System.Text.Encoding.ASCII.GetBytes(message));
 }
Example #8
0
        public static User.User GetAUserPlusState(string id, User.User.UserState state = User.User.UserState.TALKING)
        {
            Dictionary <Socket, User.User> tempList = new Dictionary <Socket, User.User>(clientSocketList);

            return(tempList.Where(c => c.Value.UserID == id && c.Value.CurrentState == state).FirstOrDefault().Value);
        }