Моя функция сохранения / загрузки, загрузка не загружает сохранение, но пропускает комнату - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь включить в игру функцию сохранения / загрузки, чтобы я мог сохранить позицию и инвентарь игрока, затем при нажатии кнопки загрузки он поместит их туда, где они были раньше, и затем они смогут продолжить игру , но у меня проблема в том, что при нажатии кнопки загрузки они переводятся в начало игры, а нажатие любой кнопки не делает ничего, кроме кнопки, чтобы вернуть их в главное меню. Кнопка загрузки, переменные "pos" и "inv" относятся к одному действию, а кнопка сохранения, "POSITION" и "INVENTORY" - к другому. В чем, кажется, проблема?

Изменить: на самом деле происходит какая-то другая проблема, тогда при сохранении 3 комнаты, скажем, комната 2, и загрузки вы попадете в комнату 1, и если вы go восток, вы прыгнете прямо в комнату 3, но затем сможете go запад в комнату 2 как обычно. При сохранении в комнате 3 вы не можете переехать в комнату 1.

//Main Activity

public static final String INVENTORY = "inventory";
public static final String POSITION = "position";
SharedPreferences sharedPrefs;

thePlayer.setPlayerPos ( pos );

protected void onCreate(Bundle savedInstanceState)
    {
    Bundle extras = getIntent().getExtras();
    if (extras != null)
    {
        // load

        String value = extras.getString("pos");   
        int pos = Integer. parseInt(value);      

        thePlayer.setPlayerPos( pos );    
    }
    else
    {

        thePlayer.setPlayerPos( 0 );    
    }
    }

public void saveData()
    {

        sharedPrefs = getSharedPreferences(MY_PREFS, MODE_PRIVATE);
        SharedPreferences.Editor edit = sharedPrefs.edit();
        edit.putInt(POSITION, thePlayer.getPlayerPos());
        edit.putString(INVENTORY, thePlayer.getInventory());
        edit.commit();

        Toast.makeText(this, "Data Saved", Toast.LENGTH_SHORT) .show();

    }

//Below here is the "MainMenu Activity"

public static String inv;
public static int pos;
SharedPreferences sharedPrefs;

public void loadData()
    {
        sharedPrefs = getSharedPreferences(MY_PREFS, MODE_PRIVATE );
        inv = sharedPrefs.getString(INVENTORY, "NOTHING");
        pos = sharedPrefs.getInt(POSITION, 0);
        Intent intent = new Intent(MainMenuActivity.this, MainActivity.class);
        intent.putExtra("pos", "" + pos);
        startActivity(intent);

    }
...