project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Datastructures/Weaponsets.java
changeset 7485 0481bd74267c
child 7508 763d3961400b
equal deleted inserted replaced
7482:d70a5b0d1190 7485:0481bd74267c
       
     1 package org.hedgewars.hedgeroid.Datastructures;
       
     2 
       
     3 import java.io.File;
       
     4 import java.io.IOException;
       
     5 import java.util.ArrayList;
       
     6 import java.util.List;
       
     7 
       
     8 import org.hedgewars.hedgeroid.frontlib.Flib;
       
     9 import org.hedgewars.hedgeroid.frontlib.Frontlib.WeaponsetListPtr;
       
    10 
       
    11 import android.content.Context;
       
    12 
       
    13 public final class Weaponsets {
       
    14 	private Weaponsets() {
       
    15 		throw new AssertionError("This class is not meant to be instantiated");
       
    16 	}
       
    17 	
       
    18 	public static File getUserWeaponsetsFile(Context c) {
       
    19 		return new File(c.getFilesDir(), "weapons_user.ini");
       
    20 	}
       
    21 	
       
    22 	public static File getBuiltinWeaponsetsFile(Context c) {
       
    23 		return new File(c.getFilesDir(), "weapons_builtin.ini");
       
    24 	}
       
    25 	
       
    26 	public static List<Weaponset> loadAllWeaponsets(Context c) throws IOException {
       
    27 		List<Weaponset> result = loadBuiltinWeaponsets(c);
       
    28 		result.addAll(loadUserWeaponsets(c));
       
    29 		return result;
       
    30 	}
       
    31 	
       
    32 	public static List<Weaponset> loadUserWeaponsets(Context c) throws IOException {
       
    33 		return loadWeaponsets(c, getUserWeaponsetsFile(c));
       
    34 	}
       
    35 	
       
    36 	public static List<Weaponset> loadBuiltinWeaponsets(Context c) throws IOException {
       
    37 		return loadWeaponsets(c, getBuiltinWeaponsetsFile(c));
       
    38 	}
       
    39 	
       
    40 	public static List<Weaponset> loadWeaponsets(Context c, File weaponsetFile) throws IOException {
       
    41 		if(!weaponsetFile.isFile()) {
       
    42 			// No file == no weaponsets, no error
       
    43 			return new ArrayList<Weaponset>();
       
    44 		}
       
    45 		WeaponsetListPtr weaponsetListPtr = null;
       
    46 		try {
       
    47 			weaponsetListPtr = Flib.INSTANCE.flib_weaponsetlist_from_ini(weaponsetFile.getAbsolutePath());
       
    48 			if(weaponsetListPtr == null) {
       
    49 				throw new IOException("Unable to read weaponsets from "+weaponsetFile);
       
    50 			}
       
    51 			return weaponsetListPtr.deref();
       
    52 		} finally {
       
    53 			if(weaponsetListPtr != null) {
       
    54 				Flib.INSTANCE.flib_weaponsetlist_destroy(weaponsetListPtr);
       
    55 			}
       
    56 		}
       
    57 	}
       
    58 	
       
    59 	public static void saveUserWeaponsets(Context c, List<Weaponset> weaponsets) throws IOException {
       
    60 		WeaponsetListPtr ptr = WeaponsetListPtr.createJavaOwned(weaponsets);
       
    61 		Flib.INSTANCE.flib_weaponsetlist_to_ini(getUserWeaponsetsFile(c).getAbsolutePath(), ptr);
       
    62 	}
       
    63 }