From a3831597d0607f6ca9e15c095fa8b555db07fd0a Mon Sep 17 00:00:00 2001 From: Carlos Galindo Date: Mon, 6 Apr 2015 13:27:49 +0200 Subject: [PATCH] Added PlayerAdapter Still need to complete Power creation, edition and listing. Need to complete Player listing and deletion. --- app/src/main/AndroidManifest.xml | 4 + .../kauron/dungeonmanager/AttackAdapter.java | 34 ++++++- .../com/kauron/dungeonmanager/Player.java | 88 +++++++++--------- .../kauron/dungeonmanager/PlayerAdapter.java | 40 ++++++++ .../java/com/kauron/dungeonmanager/Power.java | 60 +++++++++--- .../kauron/dungeonmanager/PowerEditor.java | 41 ++++++++ .../main/res/drawable-hdpi/ic_add_user.png | Bin 0 -> 449 bytes app/src/main/res/drawable-hdpi/ic_delete.png | Bin 0 -> 245 bytes app/src/main/res/drawable-hdpi/ic_edit.png | Bin 0 -> 423 bytes .../main/res/drawable-mdpi/ic_add_user.png | Bin 0 -> 334 bytes app/src/main/res/drawable-mdpi/ic_delete.png | Bin 0 -> 206 bytes app/src/main/res/drawable-mdpi/ic_edit.png | Bin 0 -> 285 bytes .../main/res/drawable-xhdpi/ic_add_user.png | Bin 0 -> 552 bytes app/src/main/res/drawable-xhdpi/ic_delete.png | Bin 0 -> 305 bytes app/src/main/res/drawable-xhdpi/ic_edit.png | Bin 0 -> 487 bytes .../main/res/drawable-xxhdpi/ic_add_user.png | Bin 0 -> 814 bytes .../main/res/drawable-xxhdpi/ic_delete.png | Bin 0 -> 412 bytes app/src/main/res/drawable-xxhdpi/ic_edit.png | Bin 0 -> 755 bytes app/src/main/res/layout/activity_main.xml | 32 +++++-- .../main/res/layout/activity_power_editor.xml | 9 ++ app/src/main/res/layout/activity_welcome.xml | 66 +++++++++---- app/src/main/res/layout/attack_row.xml | 77 +++++++++------ app/src/main/res/layout/player_row.xml | 49 ++++++++++ app/src/main/res/menu/menu_power_editor.xml | 7 ++ app/src/main/res/values/strings.xml | 5 + 25 files changed, 399 insertions(+), 113 deletions(-) create mode 100644 app/src/main/java/com/kauron/dungeonmanager/PlayerAdapter.java create mode 100644 app/src/main/java/com/kauron/dungeonmanager/PowerEditor.java create mode 100644 app/src/main/res/drawable-hdpi/ic_add_user.png create mode 100644 app/src/main/res/drawable-hdpi/ic_delete.png create mode 100644 app/src/main/res/drawable-hdpi/ic_edit.png create mode 100644 app/src/main/res/drawable-mdpi/ic_add_user.png create mode 100644 app/src/main/res/drawable-mdpi/ic_delete.png create mode 100644 app/src/main/res/drawable-mdpi/ic_edit.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_add_user.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_delete.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_edit.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_add_user.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_delete.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_edit.png create mode 100644 app/src/main/res/layout/activity_power_editor.xml create mode 100644 app/src/main/res/layout/player_row.xml create mode 100644 app/src/main/res/menu/menu_power_editor.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 18bb2d5..b7cd214 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -29,6 +29,10 @@ + + diff --git a/app/src/main/java/com/kauron/dungeonmanager/AttackAdapter.java b/app/src/main/java/com/kauron/dungeonmanager/AttackAdapter.java index f141034..f427afc 100644 --- a/app/src/main/java/com/kauron/dungeonmanager/AttackAdapter.java +++ b/app/src/main/java/com/kauron/dungeonmanager/AttackAdapter.java @@ -1,10 +1,19 @@ package com.kauron.dungeonmanager; import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; +import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.TextView; + +import com.nispok.snackbar.Snackbar; +import com.nispok.snackbar.SnackbarManager; +import com.nispok.snackbar.listeners.ActionClickListener; class AttackAdapter extends ArrayAdapter { AttackAdapter(Context context, Power[] powers) { @@ -12,11 +21,32 @@ class AttackAdapter extends ArrayAdapter { } @Override - public View getView(int position, View convertView, ViewGroup parent) { + public View getView(final int position, final View convertView, ViewGroup parent) { LayoutInflater mInflater = LayoutInflater.from(getContext()); View mView = mInflater.inflate(R.layout.attack_row, parent, false); - Power attack = getItem(position); + final Power attack = getItem(position); + + ((TextView) mView.findViewById(R.id.name)).setText(attack.getName()); + ((TextView) mView.findViewById(R.id.keywords)).setText(attack.getKeywords()); + ((TextView) mView.findViewById(R.id.frequency)).setText(attack.getFrequencyString()); + ((TextView) mView.findViewById(R.id.extra)).setText(attack.getRangeString() + " " + attack.getDistance()); + final AttackAdapter current = this; + ((ImageView) mView.findViewById(R.id.delete)).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + SnackbarManager.show( + Snackbar.with(getContext()).text("¿Quieres borrarlo?").actionLabel("Sí").actionListener(new ActionClickListener() { + @Override + public void onActionClicked(Snackbar snackbar) { + current.remove(attack); + } + }) + ); + //TODO: convert text to resource + } + }); + return mView; } } diff --git a/app/src/main/java/com/kauron/dungeonmanager/Player.java b/app/src/main/java/com/kauron/dungeonmanager/Player.java index 27508ae..af33672 100644 --- a/app/src/main/java/com/kauron/dungeonmanager/Player.java +++ b/app/src/main/java/com/kauron/dungeonmanager/Player.java @@ -1,6 +1,6 @@ package com.kauron.dungeonmanager; -public class Player { +class Player { /** * Names for the classes @@ -107,7 +107,7 @@ public class Player { //TODO: implement fully operational powers displayed as cards private Power[] powers; - public Player( + Player( String name, int classInt, int raceInt, int px, int[] atk, int[] abilities, Power[] powers @@ -128,22 +128,22 @@ public class Player { } - public int getPx() {return px;} - public void setPx (int px) {this.px = px; setLevel();} - public boolean addPx(int px) { + int getPx() {return px;} + void setPx (int px) {this.px = px; setLevel();} + boolean addPx(int px) { int lastLevel = level; setPx(this.px + px); return lastLevel < level; } - public int getMaxCurativeEfforts() {return maxCurativeEfforts;} - public void setMaxCurativeEfforts(int maxCurativeEfforts) {this.maxCurativeEfforts = maxCurativeEfforts;} + int getMaxCurativeEfforts() {return maxCurativeEfforts;} + void setMaxCurativeEfforts(int maxCurativeEfforts) {this.maxCurativeEfforts = maxCurativeEfforts;} - public int getCurativeEfforts() {return curativeEfforts;} - public void setCurativeEffort(int curativeEfforts) {this.curativeEfforts = curativeEfforts;} + int getCurativeEfforts() {return curativeEfforts;} + void setCurativeEffort(int curativeEfforts) {this.curativeEfforts = curativeEfforts;} - public int getLevel() {return level;} - public void setLevel() { + int getLevel() {return level;} + void setLevel() { for (int i = 0; i < LEVEL_PX.length; i++){ if(px < LEVEL_PX[i]) { level = i; return; @@ -154,21 +154,21 @@ public class Player { } - public int getMaxPg() {return maxPg;} - public void setMaxPg(int maxPg) { + int getMaxPg() {return maxPg;} + void setMaxPg(int maxPg) { if(this.maxPg == 0) this.pg = maxPg; this.maxPg = maxPg; } - public void setMaxPgOnLevelUp() {maxPg += CLASS_STATS[PG_ON_LEVEL_UP][classInt];} + void setMaxPgOnLevelUp() {maxPg += CLASS_STATS[PG_ON_LEVEL_UP][classInt];} - public int getPg() {return pg;} - public void setPg(int pg) {this.pg = pg; setState();} - public void losePg(int damage) { + int getPg() {return pg;} + void setPg(int pg) {this.pg = pg; setState();} + void losePg(int damage) { pg -= damage; setState(); } - public int recoverPg(int recovered, boolean uses) { + int recoverPg(int recovered, boolean uses) { if(recovered == USE_CURATIVE_EFFORT){ if(uses && curativeEfforts <= 0) return NOT_CURED; else { @@ -193,8 +193,8 @@ public class Player { return CURED; } - public int getLastState() {return lastState == state ? SAME : lastState;} - public int getState() {return state;} + int getLastState() {return lastState == state ? SAME : lastState;} + int getState() {return state;} private void setState() { lastState = state; if (pg <= maxPg / -2) state = MUERTO; @@ -203,49 +203,49 @@ public class Player { else state = OK; } - public String getName() {return name;} - public void setName(String name) {this.name = name;} + String getName() {return name;} + void setName(String name) {this.name = name;} - public int getClassInt() {return classInt;} - public void setClassInt(int classInt) { + int getClassInt() {return classInt;} + void setClassInt(int classInt) { this.classInt = classInt; if (atk != null) setClass(); } - public String getClassName() {return CLASS_STRINGS[classInt];} + String getClassName() {return CLASS_STRINGS[classInt];} - public String getRaceName() {return RACE_STRINGS[raceInt];} - public void setRaceInt(int raceInt) {this.raceInt= raceInt;} - public int getRaceInt() {return raceInt;} + String getRaceName() {return RACE_STRINGS[raceInt];} + void setRaceInt(int raceInt) {this.raceInt= raceInt;} + int getRaceInt() {return raceInt;} //TODO: implement turns (for bonuses and continuous damage in the app - public void rest(boolean isLong) { + void rest(boolean isLong) { if(isLong) { pg = maxPg; curativeEfforts = maxCurativeEfforts; for (Power p : powers) - if (p != null && p.getType() == Power.DIARIO) + if (p != null && p.getFrequency() == Power.DIARIO) p.recover(); setState(); } for (Power p : powers) - if (p != null && p.getType() == Power.ENCUENTRO) + if (p != null && p.getFrequency() == Power.ENCUENTRO) p.recover(); } - public void setAtk(int[] atk) {this.atk = atk; if(classInt != NULL) setClass();} + void setAtk(int[] atk) {this.atk = atk; if(classInt != NULL) setClass();} - public int getFue() {return atk[FUE];} - public int getCon() {return atk[CON];} - public int getSab() {return atk[SAB];} - public int getCar() {return atk[CAR];} - public int getDes() {return atk[DES];} - public int getInt() {return atk[INT];} - public int getCa() {return def[CA];} - public int getFort() {return def[FORT];} - public int getRef() {return def[REF];} - public int getVol() {return def[VOL];} + int getFue() {return atk[FUE];} + int getCon() {return atk[CON];} + int getSab() {return atk[SAB];} + int getCar() {return atk[CAR];} + int getDes() {return atk[DES];} + int getInt() {return atk[INT];} + int getCa() {return def[CA];} + int getFort() {return def[FORT];} + int getRef() {return def[REF];} + int getVol() {return def[VOL];} - public void setClass() { + void setClass() { if(level == 1) maxPg = atk[CON] + CLASS_STATS[INITIAL_PG][classInt]; maxCurativeEfforts = Player.getModifier(atk[CON]) + CLASS_STATS[DAILY_CURATIVE_EFFORTS][classInt]; //TODO: fix ca bonuses! @@ -258,7 +258,7 @@ public class Player { CLASS_STATS[DEF_VOL][classInt]; } - public static int getModifier(int i) { + static int getModifier(int i) { return i / 2 - 5; } } \ No newline at end of file diff --git a/app/src/main/java/com/kauron/dungeonmanager/PlayerAdapter.java b/app/src/main/java/com/kauron/dungeonmanager/PlayerAdapter.java new file mode 100644 index 0000000..46019f0 --- /dev/null +++ b/app/src/main/java/com/kauron/dungeonmanager/PlayerAdapter.java @@ -0,0 +1,40 @@ +package com.kauron.dungeonmanager; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ProgressBar; +import android.widget.TextView; + +class PlayerAdapter extends ArrayAdapter { + + PlayerAdapter(Context context, Player[] players) { + super(context, R.layout.player_row, players); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + LayoutInflater mInflater = LayoutInflater.from(getContext()); + View mView = mInflater.inflate(R.layout.player_row, parent, false); + + final Player player = getItem(position); + + ((TextView) mView.findViewById(R.id.name)).setText(player.getName()); + ((TextView) mView.findViewById(R.id.other)).setText(player.getClassName() + " " + player.getRaceName()); + ((TextView) mView.findViewById(R.id.level)) + .setText( + getContext().getResources().getString(R.string.level) + + " " + player.getLevel() + ); + + ProgressBar pg = (ProgressBar) mView.findViewById(R.id.progressBar); + pg.setMax(player.getMaxPg()); + pg.setProgress(player.getPg()); + + return mView; + } + + +} diff --git a/app/src/main/java/com/kauron/dungeonmanager/Power.java b/app/src/main/java/com/kauron/dungeonmanager/Power.java index 4b17d31..18259db 100644 --- a/app/src/main/java/com/kauron/dungeonmanager/Power.java +++ b/app/src/main/java/com/kauron/dungeonmanager/Power.java @@ -1,28 +1,64 @@ package com.kauron.dungeonmanager; -public class Power { +class Power { + public static final int MELEE = 1, AREA = 2, RANGED = 3; public static final int DIARIO = 4, A_VOLUNTAD = 2, ENCUENTRO = 3, OPORTUNIDAD = 1; private boolean used; - private int type; - private String name; - private int atk, def, damage; + private int frequency, range, distance; + private String name, keywords; + private int atk, def; + /** An array filled with the maximum damage of each die. + * The position 0 is the damage that doesn't depend on dies. + * Example: 1d6 + 1d4 + 4 is stored as {4, 4, 6}*/ + private int[] damage; + //TODO: modify this so that it takes an array of the same size always, each with each kind of damage - public Power(String name, int type){ + Power(String name, int frequency, int range, int distance, String keywords, int atk, int def, int[] damage){ this.name = name; - this.type = type; + this.keywords = keywords; + this.frequency = frequency; + this.range = range; + this.distance = distance; + this.atk = atk; + this.def = def; + this.damage = damage; used = false; } - public String getName(){return name;} - public int getType(){return type;} + String getName(){return name;} + int getFrequency() {return frequency;} + String getFrequencyString(){ + //TODO: change lists to arrays in resources + switch(frequency) { + case 1: return "Oportunidad"; + case 2: return "A voluntad"; + case 3: return "Encuentro"; + case 4: return "Diario"; + default: return null; + } + } + int getRange() {return range;} + String getRangeString() { + switch(range){ + case 1: return "Cuerpo a cuerpo"; + case 2: return "Área"; + case 3: return "A distancia"; + default: return null; + } + } + int getDistance() {return distance;} + String getKeywords() {return keywords;} + int getAtk() {return atk;} + int getDef() {return def;} + int[] getDamage() {return damage;} - public boolean isUsed(){return used;} + boolean isUsed(){return used;} - public void use(){ - if(type >= ENCUENTRO && !used) + void use(){ + if(frequency >= ENCUENTRO && !used) used = true; } - public void recover(){used = false;} + void recover(){used = false;} } \ No newline at end of file diff --git a/app/src/main/java/com/kauron/dungeonmanager/PowerEditor.java b/app/src/main/java/com/kauron/dungeonmanager/PowerEditor.java new file mode 100644 index 0000000..ba48561 --- /dev/null +++ b/app/src/main/java/com/kauron/dungeonmanager/PowerEditor.java @@ -0,0 +1,41 @@ +package com.kauron.dungeonmanager; + +import android.support.v7.app.ActionBarActivity; +import android.os.Bundle; +import android.view.Menu; +import android.view.MenuItem; + + +public class PowerEditor extends ActionBarActivity { + + public static final String NAME="name", FREQ="freq", KEYWORDS="keywords", RANGE="range", DISTANCE="distance"; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_power_editor); + } + + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.menu_power_editor, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); + + //noinspection SimplifiableIfStatement + if (id == R.id.action_settings) { + return true; + } + + return super.onOptionsItemSelected(item); + } +} diff --git a/app/src/main/res/drawable-hdpi/ic_add_user.png b/app/src/main/res/drawable-hdpi/ic_add_user.png new file mode 100644 index 0000000000000000000000000000000000000000..354b2608cc0c8554ca4b76224d1a9b2823721208 GIT binary patch literal 449 zcmV;y0Y3hTP)S6oqSxKL`rxMpqV8vQ&41x)NPj?56H?;RA>TeE?kuBDnDfU%;gc5!6j7LdDji zd8c>=CJ+W~I$>_S)qCLEO_FmaxpOCz%ZWrHkw_%^Ckn%G0E~mteltD=jz9whnkP^L z9(VI)(25y1se^g0=9j@o7xNKKP~v8O2t4;-KH`SjPyzTch7-oGT9{XSs#>88P&6Ls zCyYO^44~NL6yP{TfNf3zYAFJ2a0;+uX1gGE%T!Is@4=Q?Zm8TBi>E$kB`iF62x<_0m{0Eq*mFf(vso=lyhCDsX zuPIkBvoGu>?RZ`PxHKFXH&LB@mfE~(R2>5I@lUHnWj+rc3C%}bP@Xmf8PKK*;Aa#d rkN|%*KtXqCa^zrEBoc{4B98h3HJgDWm*JP&00000NkvXXu0mjf8V$K? literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_delete.png b/app/src/main/res/drawable-hdpi/ic_delete.png new file mode 100644 index 0000000000000000000000000000000000000000..1bde929bcf2fe2a0dc71420bfa3ca1d67bd8d1c4 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpUtJ)SO(Ar-gY&UEBzHV|+%ed$^j-cDg3@G;fei*|BJWxEyQNsrN$m z&nn-3@~hx{&vbkKlxIt`Epr>cx?GG3W6|oLV7ANs#cS2Pwx?!A)3!t`^|o6qrgN?Q z{`{EP?$@-KI20NfP>BP)tW}9dA|9KoU-w5ZUU=ZfBX@U!d2CNFpSkcV-}i)nQkaI_ h^T^y&!cHAob|0A&?2PN)iUR$?;OXk;vd$@?2>|B8UaSBB literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_edit.png b/app/src/main/res/drawable-hdpi/ic_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..04db68d5e673dbee2e1bba33a465fc87611a8f63 GIT binary patch literal 423 zcmV;Y0a*TtP)*3rcb>V;i zE)?BGMNybAVZyZh#Btn?s;Gu4s4Z*wUG!7eP9~N}!DnL$3ts;cfECcUWdZd|lpL3+ zXabi6OVl*rx6xOEZCs*kS)$6uZzcFYP%}%Mq7Ej0Gx;9Zt@ zLwP2?Xur5#mqS_*oCUxmETu@p<$t z#Gj!)CVmDzdEon*_-POPIT~Q%r_iGie}M+GioZld?3?9-5PyY+HQei^_*|r61o&$- zqUqJF8T<_z)%NV?ioZo;8s9Bl@aElSTt!(0FW literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_add_user.png b/app/src/main/res/drawable-mdpi/ic_add_user.png new file mode 100644 index 0000000000000000000000000000000000000000..65efcf38c58dc1fe3bd3dfe708a8c08f5cf36bb2 GIT binary patch literal 334 zcmV-U0kQsxP)s}|HlY8AdehNRgv&Ks6mBD zV$w)z+wfR^8e7y6;{ZazIu%K+C=hSKp)Qx)U?_BV<#F;?c4a5te!9N3tYk@cvh!rSxfF=-I0I?L3m^3ub4-t`GKzJn( z2LLfMHA2J-h>sF!F**i?kPs!7gUWzYWLgfxlPGaO6or<9@F_|h5K9FIoT0R4oJuJk gZNiO$Q84HL025kXk9OuK!2kdN07*qoM6N<$f_D3KuK)l5 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_delete.png b/app/src/main/res/drawable-mdpi/ic_delete.png new file mode 100644 index 0000000000000000000000000000000000000000..66136522dcd8bbebe839f7ed74f0070016f7b1dc GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJsh%#5Ar-gYPCv`rpupqSsBO+( z$T{2a9$0udWbbp;A{~RnoN1d%o+9eP_ zYyOehyXGkiNX^R9(_z(wsuOCdZbJE`U%#*Sr|DS7?=ba z7+6eL!Ws`~39S&??2vG+Lbg0K>G#Eo)uys`#wWu0BEqG4zr59C2Re|!)78&qol`;+ E0ML|3&j0`b literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_edit.png b/app/src/main/res/drawable-mdpi/ic_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..7804a819801ba1fdf607825b3bae5cbff07e71a2 GIT binary patch literal 285 zcmV+&0pk9NP)<>q6;!N&-^VB!-5 zeqrL%(0Ge-X5uphE}8fofghRp0)Zcx_!9A<*)#DK>etG_*T{v!hi}ju%|Cn_W2JK8 jyI4zQ6E3neX+ZM@_StB0LKy;c00000NkvXXu0mjfxUhOE literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_add_user.png b/app/src/main/res/drawable-xhdpi/ic_add_user.png new file mode 100644 index 0000000000000000000000000000000000000000..d565a219cc169fd69c889a3b2939ed8a3ce5db4b GIT binary patch literal 552 zcmV+@0@wYCP)G3N<$?016v>Mx*#{9tDI(S-VgIM~ zo%)^9uxn?}&YYR)`>oI0%-Q{ZX6BqZ6NxYk!!QiPFbu;mjM1di>0;0UM!*yp1zn&d z?8VEZ@HI&N!7Z2t(J+>;2gezT+c^gu5v7|xC6~$C|?8)9F|ukKxxng4CYy0 zF&1zFe;GNr9GD#hJ*c^6R4#1#@!cQZDi$k4vSW%6EcGmy6rE z0eyZb-w)nAF8_14IApTCHLE8Ll~=rjc2fdY4VPE!m=bW|69Gw60`7bwAVmQbKmkSs q#AUBwoCw1(48t%C!!QiP{K_|H=xPxSmk8eg0000~)y=BYSF&44@D`iZ=0Zysza`#13pQI#4?Z+^!R?1?bCq?f_>O7r}3W}wW%@A%;Upz z&i|?B>$bnAojG+jm(yr88jVJyAxaPg{nEO$A@!w2m+*tqcj;$SYfg+1gLh+u1bp)d zC0Frw{t^UJHo)6Af!M*Lg!pfbW(*8NSt%M!1$1Sn!W2&h_6$m<&Ic z0pBHkNQsXff#sR+l-_5=bB++Ql(RW<^@PKgH%utAFl46sR!&p5yqJwC$#+Z2CM|I+}zHTV<*>{x|29AMWvyhfwZ dXfztD^92=5$CXub{ht5;002ovPDHLkV1o9#;J^R? literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_add_user.png b/app/src/main/res/drawable-xxhdpi/ic_add_user.png new file mode 100644 index 0000000000000000000000000000000000000000..b8d83ee7eed7a0b16a7853626ab3a655a1aecd4a GIT binary patch literal 814 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>VEXFm;uunK>+S55*&>cIZo=O+ zx>_^}SxwIDEoNQ$F$5 zZnV*mKcTwI<_a?GVda}QD zzvk0O`RBpEe=A)qdANT1WXTr!pAqL&Z>BuFE$gd$_=B?k#Jo*Rdd~#*S*GsS5z3SQ z7xdG1In$ZyC3p5UT()eJ|H~EDCUZe4vbWHc?Xms&oeZA~POygDs@a&;o~%E?o=YQP z3e%yi)*u*8Vyy04MzQ&3MDb_7=)xM6bHj9A*=TBGsR6Hlh)gk{sk&*Sy z(uN-&`Jc$_JG-e`bHQJyJIiIbCB9kS+041;+OyMleJ$MXn;b8+S^hzNZ(N(k3%(<3 ze2Qf@Kb{%eZnvNNy-Fa$8L0x5?xUN5b-XI|fS@Xd7hCyG1$-xX|MdAfPV&tEYO z$6igheroyM=~%V-K`&$OZJoDQ*eIG$OPXC3$9h9j+x)clr>)hGRr}iw`=4l93S=>U zv%4126CK=l_3b~Sb*Ij=o;#u(zjN(`zyEKSrcAr@*lTt5g15(Zr{+JNVq0PTc>8YS z_3sv5RJymysO`S?`wFR=&GEU+`39$NaO&U5XXf1h)6viW#Y6rR{fuq@pSSiUJQsNv z+Z1)+p?e(P)&_1>4*Oje{B2@&{%-Go{CZT7!OAmLqo!DC3sc$jH4Q5-aIKiOrojs6 pQ5bS~l-l7n^9>Vn3Iww4fAE(27Z)?>>)r;*c)I$ztaD0e0sx~Ja!CLH literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_delete.png b/app/src/main/res/drawable-xxhdpi/ic_delete.png new file mode 100644 index 0000000000000000000000000000000000000000..e111a9ab8dcd6c30f30b3bfd7721b824307660c6 GIT binary patch literal 412 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>U`+OOaSW-r_4aP8*I@^dhKn96 z-!1WeEjDRtiD;={uA$Sbd5?H_>^hp*e4p_>Z~lGfr0s-%HcMjFJtwIEQSJ?!^T$o{ z>uua;-_83eP`BYndwtwLcBi_v)5L#nDfpE1PMhJ*>1e=iIJ6ra>7jH29aQvJgOcPb;HH;hd&qw!h734l#===Nt!*ji=mrB15Fw}B0v@hT< zKAUb=qB}(|g@ePOWNpa5+D9T8KbODyubZrRDB$PY46XE>?4R*_)Ss9?d+xPQx#y`) gt?~C7NDzhIwAL3cKiH8RwjbnDPgg&ebxsLQ0I6h_LjV8( literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_edit.png b/app/src/main/res/drawable-xxhdpi/ic_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..37e6a8ea9c43727167d65fe51b98db1f88969e4c GIT binary patch literal 755 zcmV}@u}f~T?2r3T5Q$JkB8o)RYTI3kB#}$x64`Z266==xedgzN-T&#k zpOZ7GHEqYvIp;a`c|Z011FvV!%$)DcsjDM|5JCtcgb+dqA;f7y2%Xje>yWi%?Xxx_ zlMnt%>o@E0s190N5Xv6^dlmdjpD=52hd`2h$J|h$WpAl-nZ?Jw!0iO|S z7@;G+$x3SkzM>XjghB3@^&|A5`Y&)tjw6&%{|mb!hAk%?p`5}1L&*ODT|VknUCQZ7 z7yv(ncI($_Zx0!d5S^lSddFX8{W8{jbVeimvaa)vzts9U$p>Wyp9#CY<1a~wUuikT zE1}0a!8`tVjuz5*J342b=ox>p^Mt#2~KXM{2E=UHFpfX@h3@Y}4f za>TDRy0>TmUxOe0V86;ceyjDR0RM+|wRilv))ylDHQw>(Sf2~2lLCK(cl=rL>7oLEqj&sf>thlAChzz&t&c?bo52s^p$LBq_&WTp z-tn8P4@CIeyyMTX-WTBiwr&Sshrh!+exvoC2!E${{OQ)aBK%$8hj2%P@BY7<(UXX` zMfiKb58;*wf3J7^Y1V!b{yy+SxGBJoy5BqgRO<~9{sHhqxGus!=pDb_dQF6X$orEi z5&l&Xei!&5ToK_P_KrWrdRc_u?HWHG;F1Wx$31>LfC9f4eBA&?Tt5mb9^feWx&e-X zuN&Yv___g3fUg_iB>1`kz!wg13VhuFr>&Ea)eLY3eBA(N!PgCN9(>&Z7p#+!)C_PD ld_o8zgb+dqA%qa(H6!i}pX_jaZ?6CV002ovPDHLkV1f&KaTfpp literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index a57b37f..a59ef49 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -11,6 +11,17 @@ android:background="@color/primary" android:layout_width="match_parent" android:layout_height="wrap_content"> + + + + + + tools:text="@string/FUE" /> + tools:text="@string/CON" /> + tools:text="@string/DES" /> + tools:text="@string/INT" /> + tools:text="@string/SAB" /> + tools:text="@string/CAR" /> @@ -372,7 +384,7 @@ android:layout_row="0" android:layout_column="0" android:id="@+id/CA" - android:hint="@string/CA" /> + tools:text="@string/CA" /> + tools:text="@string/FORT" /> + tools:text="@string/REF" /> + tools:text="@string/VOL" /> diff --git a/app/src/main/res/layout/activity_power_editor.xml b/app/src/main/res/layout/activity_power_editor.xml new file mode 100644 index 0000000..2f2d883 --- /dev/null +++ b/app/src/main/res/layout/activity_power_editor.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_welcome.xml b/app/src/main/res/layout/activity_welcome.xml index ac2b636..5df66dc 100644 --- a/app/src/main/res/layout/activity_welcome.xml +++ b/app/src/main/res/layout/activity_welcome.xml @@ -2,29 +2,57 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:paddingLeft="@dimen/activity_horizontal_margin" - android:paddingRight="@dimen/activity_horizontal_margin" - android:paddingTop="@dimen/activity_vertical_margin" - android:paddingBottom="@dimen/activity_vertical_margin" tools:context="com.kauron.dungeonmanager.Welcome" android:orientation="vertical"> + -