Beispiel #1
0
        /// <summary>
        /// Функция создания персонажа
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnCreate_Click(object sender, EventArgs e)
        {
            Character     character = null;
            string        name      = txtBxName.Text;
            int           hp        = (int)numUpDownHP.Value;
            double        dps       = (double)numUpDownDPS.Value;
            CharacterType chartype  = (CharacterType)comboBox2.SelectedIndex;

            try
            {
                if (comboBox1.SelectedIndex == 0)
                {
                    character = new Hero(name, hp, dps, chartype);
                }
                else if (comboBox1.SelectedIndex == 1)
                {
                    character = new Boss(name, hp, dps, chartype);
                }
                dungeon.AddCharacter(character);

                txtBxDiff.Text = dungeon.Difficulty.ToString();
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message);
            }
        }
Beispiel #2
0
        void Initialize(string input)
        {
            PlayerCharacterFactory f = new PlayerCharacterFactory();

            if (input.Length == 0)
            {
                return;
            }
            switch (status)
            {
            case InterpreterState.NeworContinue:
                if (input.ToLower()[0] != 'n' && input.ToLower()[0] != 'c')
                {
                    Connection.SendString("Create a new character or continue (N/C): ");
                    return;
                }
                Continue = false;

                if (input.ToLower()[0] == 'c')
                {
                    Continue = true;
                }

                Connection.SendString("username: "******"user already exists\nusername: "******"\n");
                    Connection.SendString("username: "******"password: "******"Choose a class:\r\n");
                        foreach (string s in f.GetAvailableClasses())
                        {
                            Connection.SendString(s + "\r\n");
                        }
                        status = InterpreterState.WaitingForClass;
                    }
                }

                break;

            case InterpreterState.WaitingForClass:
                input = input.ToLower().Trim();
                bool classExists = false;
                foreach (string s in f.GetAvailableClasses())
                {
                    if (s == input)
                    {
                        classExists = true;
                        break;
                    }
                }
                if (!classExists)
                {
                    Connection.SendString("No such class");
                    Connection.SendString("Choose a class:\r\n");
                    foreach (string s in f.GetAvailableClasses())
                    {
                        Connection.SendString(s + "\r\n");
                    }
                }
                else
                {
                    userClass = input;
                    status    = InterpreterState.WaitingForPassword;
                    Connection.SendString("Password: "******"re-enter password: "******"passwords do not match\npassword: "******"{0} ({1})", pass, pass.Length);
                    Player = f.GetInstanceByClass(userClass, user, 1, 0);
                    database.StorePlayer(Player);
                    database.StoreUserandPass(user, salt, pass);
                }
                if (Continue)
                {
                    string storedpass = database.GetPlayerPassword(user);
                    if (storedpass != pass)
                    {
                        Connection.SendString("bad username or password\nCreate a new character or continue (N/C): ");
                        status = InterpreterState.NeworContinue;
                        user   = null;
                        pass   = null;
                        return;
                    }
                    if (AlreadyOnline(user))
                    {
                        Connection.SendString("Player already logged in\r\n");
                        Connection.ConnectionSocket.Close();
                        return;
                    }
                    Player = database.GetPlayer(user);

                    status = InterpreterState.Standard;
                }

                Player.OnNotifyPlayer += (c, s) => Connection.SendString(s + "\r\n");
                Player.OnNewRoomates  += new Action <PlayerCharacter>(NewRoomates);
                dungeon.AddCharacter(Player, dungeon.StartingRoom);
                Logger.Log(string.Format("{0} {1} : {2}", DateTime.Now, user, Connection.ConnectionSocket.RemoteEndPoint.ToString()));
                status                   = InterpreterState.Standard;
                Player.ItemEquiped      += (c, i) => { database.StorePlayer(Player); };
                Player.ExperienceGained += (c, e) => { database.StorePlayer(Player); };
                Player.InventoryChange  += (c, i) => { database.ChangeItemCount(Player.Name, i.Name, Player.GetItemCount(i.Name)); };
                status                   = InterpreterState.Standard;
                break;
            }
        }