Dependencies:   4DGL-uLCD-SE Motor SparkfunAnalogJoystick mbed

Fork of Fire_Mbed_2_0 by Jake Ramey

Committer:
rpgjake
Date:
Tue Mar 14 22:37:14 2017 +0000
Revision:
0:b7a07b6cf5d0
Child:
1:3a9ef60cbbfc
fire mbed ece 4180

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rpgjake 0:b7a07b6cf5d0 1 #include "mbed.h"
rpgjake 0:b7a07b6cf5d0 2 #include "SparkfunAnalogJoystick.h"
rpgjake 0:b7a07b6cf5d0 3 #include "uLCD_4DGL.h"
rpgjake 0:b7a07b6cf5d0 4 #include "FEmain.h"
rpgjake 0:b7a07b6cf5d0 5 #define MapSecA 123
rpgjake 0:b7a07b6cf5d0 6 #define MapSecB 123
rpgjake 0:b7a07b6cf5d0 7
rpgjake 0:b7a07b6cf5d0 8 #include "Motor.h"
rpgjake 0:b7a07b6cf5d0 9
rpgjake 0:b7a07b6cf5d0 10 Motor m(p21, p24, p25); // pwm, fwd, rev
rpgjake 0:b7a07b6cf5d0 11
rpgjake 0:b7a07b6cf5d0 12 #define FORTRESS 0
rpgjake 0:b7a07b6cf5d0 13 #define HOUSE 1
rpgjake 0:b7a07b6cf5d0 14 #define KEEP 2
rpgjake 0:b7a07b6cf5d0 15 #define GRASS 3
rpgjake 0:b7a07b6cf5d0 16 #define TREES 4
rpgjake 0:b7a07b6cf5d0 17 #define COMP 2
rpgjake 0:b7a07b6cf5d0 18 #define USER 1
rpgjake 0:b7a07b6cf5d0 19
rpgjake 0:b7a07b6cf5d0 20
rpgjake 0:b7a07b6cf5d0 21 DigitalOut myled(LED1);
rpgjake 0:b7a07b6cf5d0 22 uLCD_4DGL uLCD(p9,p10,p11);
rpgjake 0:b7a07b6cf5d0 23 DigitalIn pb5(p5);
rpgjake 0:b7a07b6cf5d0 24 DigitalIn pb6(p6);
rpgjake 0:b7a07b6cf5d0 25 DigitalIn pb7(p7);
rpgjake 0:b7a07b6cf5d0 26 DigitalIn pb8(p8);
rpgjake 0:b7a07b6cf5d0 27 #define M_PI 3.14159265358979323846
rpgjake 0:b7a07b6cf5d0 28 Serial pc(USBTX, USBRX);
rpgjake 0:b7a07b6cf5d0 29 SparkfunAnalogJoystick joysttick(p18, p19, p20);
rpgjake 0:b7a07b6cf5d0 30 #define x_sector 0x003B
rpgjake 0:b7a07b6cf5d0 31 int analog2Keypad(SparkfunAnalogJoystick *joystick);
rpgjake 0:b7a07b6cf5d0 32 int player_turn;
rpgjake 0:b7a07b6cf5d0 33
rpgjake 0:b7a07b6cf5d0 34 struct tiles {
rpgjake 0:b7a07b6cf5d0 35 char v;
rpgjake 0:b7a07b6cf5d0 36 int x;
rpgjake 0:b7a07b6cf5d0 37 int y;
rpgjake 0:b7a07b6cf5d0 38 char passable;} fortress_t,house_t,keep_t,grass_t,trees_t;
rpgjake 0:b7a07b6cf5d0 39
rpgjake 0:b7a07b6cf5d0 40 tiles* tile_array[5] = {&fortress_t,&house_t,&keep_t,&grass_t,&trees_t};
rpgjake 0:b7a07b6cf5d0 41
rpgjake 0:b7a07b6cf5d0 42
rpgjake 0:b7a07b6cf5d0 43 typedef struct units {
rpgjake 0:b7a07b6cf5d0 44 job_t job;
rpgjake 0:b7a07b6cf5d0 45 int v;
rpgjake 0:b7a07b6cf5d0 46 int FoF;//1 = USER // 2= COMP
rpgjake 0:b7a07b6cf5d0 47 int xloc;
rpgjake 0:b7a07b6cf5d0 48 int yloc;
rpgjake 0:b7a07b6cf5d0 49 int xlast;
rpgjake 0:b7a07b6cf5d0 50 int ylast;
rpgjake 0:b7a07b6cf5d0 51 int remain_moves;
rpgjake 0:b7a07b6cf5d0 52 int health;
rpgjake 0:b7a07b6cf5d0 53 int status;
rpgjake 0:b7a07b6cf5d0 54 } person_t;
rpgjake 0:b7a07b6cf5d0 55
rpgjake 0:b7a07b6cf5d0 56
rpgjake 0:b7a07b6cf5d0 57 static person_t Mc;
rpgjake 0:b7a07b6cf5d0 58 static person_t Ak;
rpgjake 0:b7a07b6cf5d0 59 static person_t Ap;
rpgjake 0:b7a07b6cf5d0 60 static person_t Healer;
rpgjake 0:b7a07b6cf5d0 61 static person_t Brigand;
rpgjake 0:b7a07b6cf5d0 62 static person_t Thief;
rpgjake 0:b7a07b6cf5d0 63 static person_t Soldier;
rpgjake 0:b7a07b6cf5d0 64 static person_t Wolf;
rpgjake 0:b7a07b6cf5d0 65 static person_t Wolfa;
rpgjake 0:b7a07b6cf5d0 66 static person_t Wolfb;
rpgjake 0:b7a07b6cf5d0 67 static person_t Wolfc;
rpgjake 0:b7a07b6cf5d0 68
rpgjake 0:b7a07b6cf5d0 69
rpgjake 0:b7a07b6cf5d0 70
rpgjake 0:b7a07b6cf5d0 71
rpgjake 0:b7a07b6cf5d0 72 person_t* person_array[12] = {NULL,&Mc,&Ak,&Ap,&Healer,&Brigand,&Thief,&Soldier,&Wolf,&Wolfa,&Wolfb,&Wolfc};
rpgjake 0:b7a07b6cf5d0 73
rpgjake 0:b7a07b6cf5d0 74 int Map1_1[8][8] = {
rpgjake 0:b7a07b6cf5d0 75 {FORTRESS, FORTRESS, FORTRESS, GRASS, GRASS, GRASS, HOUSE, GRASS},
rpgjake 0:b7a07b6cf5d0 76 {FORTRESS, FORTRESS, FORTRESS, GRASS, GRASS, GRASS, GRASS, GRASS},
rpgjake 0:b7a07b6cf5d0 77 {FORTRESS, FORTRESS, FORTRESS, GRASS, TREES, GRASS, GRASS, GRASS},
rpgjake 0:b7a07b6cf5d0 78 {GRASS, GRASS, GRASS, GRASS, GRASS, GRASS, GRASS, GRASS},
rpgjake 0:b7a07b6cf5d0 79 {GRASS, GRASS, GRASS, GRASS, GRASS, GRASS, GRASS, GRASS},
rpgjake 0:b7a07b6cf5d0 80 {GRASS, GRASS, GRASS, GRASS, TREES, TREES, TREES, GRASS},
rpgjake 0:b7a07b6cf5d0 81 {GRASS, GRASS, HOUSE, TREES, GRASS, KEEP, GRASS, GRASS},
rpgjake 0:b7a07b6cf5d0 82 {GRASS, GRASS, GRASS, GRASS, GRASS, GRASS, GRASS, GRASS} };
rpgjake 0:b7a07b6cf5d0 83
rpgjake 0:b7a07b6cf5d0 84 int unitsMap1_1[8][8] = {
rpgjake 0:b7a07b6cf5d0 85 {0, 0, 0, 0, 0, 0, 0, 0},
rpgjake 0:b7a07b6cf5d0 86 {0, 0, 0, 0, 0, 0, 0, 0},
rpgjake 0:b7a07b6cf5d0 87 {0, 0, 0, 0, 0, 0, 0, 0},
rpgjake 0:b7a07b6cf5d0 88 {0, 0, 0, 0, 0, 0, 0, 0},
rpgjake 0:b7a07b6cf5d0 89 {0, 0, 0, 0, 0, 0, 0, 0},
rpgjake 0:b7a07b6cf5d0 90 {0, 0, 0, 0, 0, 0, 0, 0},
rpgjake 0:b7a07b6cf5d0 91 {0, 0, 0, 0, 0, 0, 0, 0},
rpgjake 0:b7a07b6cf5d0 92 {0, 0, 0, 0, 0, 0, 0, 0} };
rpgjake 0:b7a07b6cf5d0 93
rpgjake 0:b7a07b6cf5d0 94
rpgjake 0:b7a07b6cf5d0 95
rpgjake 0:b7a07b6cf5d0 96
rpgjake 0:b7a07b6cf5d0 97 void initialize(void);
rpgjake 0:b7a07b6cf5d0 98 int user_selecting(void);//return selection
rpgjake 0:b7a07b6cf5d0 99 int user_action(int selection);
rpgjake 0:b7a07b6cf5d0 100 int display_status(int selection);
rpgjake 0:b7a07b6cf5d0 101 int user_movement(int selection);
rpgjake 0:b7a07b6cf5d0 102 int combat(person_t* attacker, person_t* defender);
rpgjake 0:b7a07b6cf5d0 103 int ai_movement(void);
rpgjake 0:b7a07b6cf5d0 104 int state;
rpgjake 0:b7a07b6cf5d0 105 int cursor_x;
rpgjake 0:b7a07b6cf5d0 106 int cursor_y;
rpgjake 0:b7a07b6cf5d0 107 void kill_unit(person_t* dead_unit);
rpgjake 0:b7a07b6cf5d0 108
rpgjake 0:b7a07b6cf5d0 109 int main() {
rpgjake 0:b7a07b6cf5d0 110 uLCD.media_init();
rpgjake 0:b7a07b6cf5d0 111 pb5.mode(PullUp);
rpgjake 0:b7a07b6cf5d0 112 pb6.mode(PullUp);
rpgjake 0:b7a07b6cf5d0 113 pb7.mode(PullUp);
rpgjake 0:b7a07b6cf5d0 114 pb8.mode(PullUp);
rpgjake 0:b7a07b6cf5d0 115 initialize();
rpgjake 0:b7a07b6cf5d0 116 int selection;
rpgjake 0:b7a07b6cf5d0 117 int action;
rpgjake 0:b7a07b6cf5d0 118 player_turn =1;
rpgjake 0:b7a07b6cf5d0 119 cursor_x = 0;
rpgjake 0:b7a07b6cf5d0 120 cursor_y = 0;
rpgjake 0:b7a07b6cf5d0 121 state = 0;
rpgjake 0:b7a07b6cf5d0 122 person_t* temp_persona;
rpgjake 0:b7a07b6cf5d0 123 while(1) {
rpgjake 0:b7a07b6cf5d0 124 if (state == 0){
rpgjake 0:b7a07b6cf5d0 125 selection = user_selecting();}
rpgjake 0:b7a07b6cf5d0 126 //else if (state ==1)
rpgjake 0:b7a07b6cf5d0 127 //ret_val = display_status(selection);
rpgjake 0:b7a07b6cf5d0 128 else if (state == 2){
rpgjake 0:b7a07b6cf5d0 129 action = user_movement(selection);}
rpgjake 0:b7a07b6cf5d0 130 else if (state == 3){
rpgjake 0:b7a07b6cf5d0 131 if (player_turn ==1){
rpgjake 0:b7a07b6cf5d0 132 player_turn = 2;
rpgjake 0:b7a07b6cf5d0 133 }
rpgjake 0:b7a07b6cf5d0 134 else {
rpgjake 0:b7a07b6cf5d0 135 player_turn =1;
rpgjake 0:b7a07b6cf5d0 136 }
rpgjake 0:b7a07b6cf5d0 137 for(int i=1; i<12;i++){
rpgjake 0:b7a07b6cf5d0 138 temp_persona = person_array[i];
rpgjake 0:b7a07b6cf5d0 139 temp_persona->remain_moves = temp_persona->job.movement;
rpgjake 0:b7a07b6cf5d0 140 }
rpgjake 0:b7a07b6cf5d0 141 state = 0;
rpgjake 0:b7a07b6cf5d0 142 }
rpgjake 0:b7a07b6cf5d0 143 //else if (state == 4)
rpgjake 0:b7a07b6cf5d0 144 }
rpgjake 0:b7a07b6cf5d0 145 }
rpgjake 0:b7a07b6cf5d0 146 //cleric - lord - ax
rpgjake 0:b7a07b6cf5d0 147 //noth - spear
rpgjake 0:b7a07b6cf5d0 148
rpgjake 0:b7a07b6cf5d0 149
rpgjake 0:b7a07b6cf5d0 150
rpgjake 0:b7a07b6cf5d0 151 void initialize(void){
rpgjake 0:b7a07b6cf5d0 152 pc.printf("init function\n");
rpgjake 0:b7a07b6cf5d0 153 init_jobs();
rpgjake 0:b7a07b6cf5d0 154 keep_t.x = x_sector;
rpgjake 0:b7a07b6cf5d0 155 house_t.x = x_sector;
rpgjake 0:b7a07b6cf5d0 156 grass_t.x = x_sector;
rpgjake 0:b7a07b6cf5d0 157 trees_t.x = x_sector;
rpgjake 0:b7a07b6cf5d0 158 fortress_t.x = x_sector;
rpgjake 0:b7a07b6cf5d0 159 fortress_t.y = 0x5042;
rpgjake 0:b7a07b6cf5d0 160 trees_t.y = 0x5052;
rpgjake 0:b7a07b6cf5d0 161 keep_t.y = 0x5054;
rpgjake 0:b7a07b6cf5d0 162 grass_t.y = 0x5056;
rpgjake 0:b7a07b6cf5d0 163 house_t.y = 0x5058;
rpgjake 0:b7a07b6cf5d0 164 uLCD.set_sector_address(Mapx, Mapy);
rpgjake 0:b7a07b6cf5d0 165 uLCD.display_image(0,0);
rpgjake 0:b7a07b6cf5d0 166 Mc.job = Lord;
rpgjake 0:b7a07b6cf5d0 167 Mc.v = 1;
rpgjake 0:b7a07b6cf5d0 168 Mc.FoF = USER;
rpgjake 0:b7a07b6cf5d0 169 Mc.xlast = 1;
rpgjake 0:b7a07b6cf5d0 170 Mc.xloc = 1;
rpgjake 0:b7a07b6cf5d0 171 Mc.ylast = 3;
rpgjake 0:b7a07b6cf5d0 172 Mc.yloc = 3;
rpgjake 0:b7a07b6cf5d0 173 Mc.remain_moves = Mc.job.movement;
rpgjake 0:b7a07b6cf5d0 174 Mc.health = Mc.job.maxHealth;
rpgjake 0:b7a07b6cf5d0 175 uLCD.set_sector_address(Mc.job.x, Mc.job.y);
rpgjake 0:b7a07b6cf5d0 176 uLCD.display_image((Mc.xloc*16),(Mc.yloc*16));
rpgjake 0:b7a07b6cf5d0 177
rpgjake 0:b7a07b6cf5d0 178 Ak.job = Armor;
rpgjake 0:b7a07b6cf5d0 179 Ak.v = 2;
rpgjake 0:b7a07b6cf5d0 180 Ak.FoF = USER;
rpgjake 0:b7a07b6cf5d0 181 Ak.xlast = 1;
rpgjake 0:b7a07b6cf5d0 182 Ak.xloc = 1;
rpgjake 0:b7a07b6cf5d0 183 Ak.ylast = 4;
rpgjake 0:b7a07b6cf5d0 184 Ak.yloc = 4;
rpgjake 0:b7a07b6cf5d0 185 Ak.remain_moves = Ak.job.movement;
rpgjake 0:b7a07b6cf5d0 186 Ak.health = Ak.job.maxHealth;
rpgjake 0:b7a07b6cf5d0 187
rpgjake 0:b7a07b6cf5d0 188 uLCD.set_sector_address(Ak.job.x, Ak.job.y);
rpgjake 0:b7a07b6cf5d0 189 uLCD.display_image((Ak.xloc*16),(Ak.yloc*16));
rpgjake 0:b7a07b6cf5d0 190
rpgjake 0:b7a07b6cf5d0 191 Ap.job = Pirate;
rpgjake 0:b7a07b6cf5d0 192 Ap.v = 3;
rpgjake 0:b7a07b6cf5d0 193 Ap.FoF = USER;
rpgjake 0:b7a07b6cf5d0 194 Ap.xlast = 2;
rpgjake 0:b7a07b6cf5d0 195 Ap.xloc = 2;
rpgjake 0:b7a07b6cf5d0 196 Ap.ylast = 3;
rpgjake 0:b7a07b6cf5d0 197 Ap.yloc = 3;
rpgjake 0:b7a07b6cf5d0 198 Ap.remain_moves = Ap.job.movement;
rpgjake 0:b7a07b6cf5d0 199 Ap.health = Ap.job.maxHealth;
rpgjake 0:b7a07b6cf5d0 200
rpgjake 0:b7a07b6cf5d0 201 uLCD.set_sector_address(Ap.job.x, Ap.job.y);
rpgjake 0:b7a07b6cf5d0 202 uLCD.display_image((Ap.xloc*16),(Ap.yloc*16));
rpgjake 0:b7a07b6cf5d0 203
rpgjake 0:b7a07b6cf5d0 204 Healer.job = Cleric;
rpgjake 0:b7a07b6cf5d0 205 Healer.v = 4;
rpgjake 0:b7a07b6cf5d0 206 Healer.FoF = USER;
rpgjake 0:b7a07b6cf5d0 207 Healer.xlast = 0;
rpgjake 0:b7a07b6cf5d0 208 Healer.xloc = 0;
rpgjake 0:b7a07b6cf5d0 209 Healer.ylast = 3;
rpgjake 0:b7a07b6cf5d0 210 Healer.yloc = 3;
rpgjake 0:b7a07b6cf5d0 211 Healer.remain_moves = Healer.job.movement;
rpgjake 0:b7a07b6cf5d0 212 Healer.health = Healer.job.maxHealth;
rpgjake 0:b7a07b6cf5d0 213
rpgjake 0:b7a07b6cf5d0 214 uLCD.set_sector_address(Healer.job.x, Healer.job.y);
rpgjake 0:b7a07b6cf5d0 215 uLCD.display_image((Healer.xloc*16),(Healer.yloc*16));
rpgjake 0:b7a07b6cf5d0 216
rpgjake 0:b7a07b6cf5d0 217 Wolf.job = Beast;
rpgjake 0:b7a07b6cf5d0 218 Wolf.v = 8;
rpgjake 0:b7a07b6cf5d0 219 Wolf.FoF = COMP;
rpgjake 0:b7a07b6cf5d0 220 Wolf.xlast = 7;
rpgjake 0:b7a07b6cf5d0 221 Wolf.xloc = 7;
rpgjake 0:b7a07b6cf5d0 222 Wolf.ylast = 4;
rpgjake 0:b7a07b6cf5d0 223 Wolf.yloc = 4;
rpgjake 0:b7a07b6cf5d0 224 Wolf.remain_moves = Wolf.job.movement;
rpgjake 0:b7a07b6cf5d0 225 Wolf.health = Wolf.job.maxHealth;
rpgjake 0:b7a07b6cf5d0 226
rpgjake 0:b7a07b6cf5d0 227 uLCD.set_sector_address(Wolf.job.x, Wolf.job.y);
rpgjake 0:b7a07b6cf5d0 228 uLCD.display_image((Wolf.xloc*16),(Wolf.yloc*16));
rpgjake 0:b7a07b6cf5d0 229 unitsMap1_1[Wolf.yloc][Wolf.xloc] = Wolf.v;
rpgjake 0:b7a07b6cf5d0 230
rpgjake 0:b7a07b6cf5d0 231 Wolfa.job = Beast;
rpgjake 0:b7a07b6cf5d0 232 Wolfa.v = 9;
rpgjake 0:b7a07b6cf5d0 233 Wolfa.FoF = COMP;
rpgjake 0:b7a07b6cf5d0 234 Wolfa.xlast = 7;
rpgjake 0:b7a07b6cf5d0 235 Wolfa.xloc = 7;
rpgjake 0:b7a07b6cf5d0 236 Wolfa.ylast = 5;
rpgjake 0:b7a07b6cf5d0 237 Wolfa.yloc = 5;
rpgjake 0:b7a07b6cf5d0 238 Wolfa.remain_moves = Wolfa.job.movement;
rpgjake 0:b7a07b6cf5d0 239 Wolfa.health = Wolfa.job.maxHealth;
rpgjake 0:b7a07b6cf5d0 240
rpgjake 0:b7a07b6cf5d0 241 uLCD.set_sector_address(Wolfa.job.x, Wolfa.job.y);
rpgjake 0:b7a07b6cf5d0 242 uLCD.display_image((Wolfa.xloc*16),(Wolfa.yloc*16));
rpgjake 0:b7a07b6cf5d0 243 unitsMap1_1[Wolfa.yloc][Wolfa.xloc] = Wolfa.v;
rpgjake 0:b7a07b6cf5d0 244
rpgjake 0:b7a07b6cf5d0 245 Wolfb.job = Beast;
rpgjake 0:b7a07b6cf5d0 246 Wolfb.v = 10;
rpgjake 0:b7a07b6cf5d0 247 Wolfb.FoF = COMP;
rpgjake 0:b7a07b6cf5d0 248 Wolfb.xlast = 6;
rpgjake 0:b7a07b6cf5d0 249 Wolfb.xloc = 6;
rpgjake 0:b7a07b6cf5d0 250 Wolfb.ylast = 4;
rpgjake 0:b7a07b6cf5d0 251 Wolfb.yloc = 4;
rpgjake 0:b7a07b6cf5d0 252 Wolfb.remain_moves = Wolfb.job.movement;
rpgjake 0:b7a07b6cf5d0 253 Wolfb.health = Wolfb.job.maxHealth;
rpgjake 0:b7a07b6cf5d0 254
rpgjake 0:b7a07b6cf5d0 255 uLCD.set_sector_address(Wolfb.job.x, Wolfb.job.y);
rpgjake 0:b7a07b6cf5d0 256 uLCD.display_image((Wolfb.xloc*16),(Wolfb.yloc*16));
rpgjake 0:b7a07b6cf5d0 257 unitsMap1_1[Wolfb.yloc][Wolfb.xloc] = Wolfb.v;
rpgjake 0:b7a07b6cf5d0 258
rpgjake 0:b7a07b6cf5d0 259
rpgjake 0:b7a07b6cf5d0 260 Wolfc.job = Beast;
rpgjake 0:b7a07b6cf5d0 261 Wolfc.v = 11;
rpgjake 0:b7a07b6cf5d0 262 Wolfc.FoF = COMP;
rpgjake 0:b7a07b6cf5d0 263 Wolfc.xlast = 7;
rpgjake 0:b7a07b6cf5d0 264 Wolfc.xloc = 7;
rpgjake 0:b7a07b6cf5d0 265 Wolfc.ylast = 3;
rpgjake 0:b7a07b6cf5d0 266 Wolfc.yloc = 3;
rpgjake 0:b7a07b6cf5d0 267 Wolfc.remain_moves = Wolfc.job.movement;
rpgjake 0:b7a07b6cf5d0 268 Wolfc.health = Wolfc.job.maxHealth;
rpgjake 0:b7a07b6cf5d0 269
rpgjake 0:b7a07b6cf5d0 270 uLCD.set_sector_address(Wolfc.job.x, Wolfc.job.y);
rpgjake 0:b7a07b6cf5d0 271 uLCD.display_image((Wolfc.xloc*16),(Wolfc.yloc*16));
rpgjake 0:b7a07b6cf5d0 272 unitsMap1_1[Wolfc.yloc][Wolfc.xloc] = Wolfc.v;
rpgjake 0:b7a07b6cf5d0 273
rpgjake 0:b7a07b6cf5d0 274 unitsMap1_1[Mc.yloc][Mc.xloc] = Mc.v;
rpgjake 0:b7a07b6cf5d0 275 unitsMap1_1[Ak.yloc][Ak.xloc] = Ak.v;
rpgjake 0:b7a07b6cf5d0 276 unitsMap1_1[Ap.yloc][Ap.xloc] = Ap.v;
rpgjake 0:b7a07b6cf5d0 277 unitsMap1_1[Healer.yloc][Healer.xloc] = Healer.v;
rpgjake 0:b7a07b6cf5d0 278
rpgjake 0:b7a07b6cf5d0 279 return;
rpgjake 0:b7a07b6cf5d0 280 }
rpgjake 0:b7a07b6cf5d0 281 int user_selecting(void){
rpgjake 0:b7a07b6cf5d0 282 int xlast;
rpgjake 0:b7a07b6cf5d0 283 int ylast;
rpgjake 0:b7a07b6cf5d0 284 int action = 0;
rpgjake 0:b7a07b6cf5d0 285 int person_index = 0;
rpgjake 0:b7a07b6cf5d0 286 int tile_index = 0;
rpgjake 0:b7a07b6cf5d0 287 int keypad = 5;
rpgjake 0:b7a07b6cf5d0 288 int ret =0;
rpgjake 0:b7a07b6cf5d0 289 person_t* temp_person;
rpgjake 0:b7a07b6cf5d0 290 tiles* tile_erased;
rpgjake 0:b7a07b6cf5d0 291 int j = pb5;
rpgjake 0:b7a07b6cf5d0 292 int y = pb8;
rpgjake 0:b7a07b6cf5d0 293 while(action == 0){
rpgjake 0:b7a07b6cf5d0 294 keypad = 5;
rpgjake 0:b7a07b6cf5d0 295 xlast = cursor_x;
rpgjake 0:b7a07b6cf5d0 296 ylast = cursor_y;
rpgjake 0:b7a07b6cf5d0 297 while((keypad == 5)&&(j ==1)){
rpgjake 0:b7a07b6cf5d0 298 wait(1);
rpgjake 0:b7a07b6cf5d0 299 j = pb5;
rpgjake 0:b7a07b6cf5d0 300 y = pb8;
rpgjake 0:b7a07b6cf5d0 301 keypad = analog2Keypad(&joysttick);
rpgjake 0:b7a07b6cf5d0 302 if (y==0){
rpgjake 0:b7a07b6cf5d0 303 state = 3;
rpgjake 0:b7a07b6cf5d0 304 return 0;
rpgjake 0:b7a07b6cf5d0 305 }
rpgjake 0:b7a07b6cf5d0 306 }
rpgjake 0:b7a07b6cf5d0 307 switch (keypad)
rpgjake 0:b7a07b6cf5d0 308 {
rpgjake 0:b7a07b6cf5d0 309 case 1:
rpgjake 0:b7a07b6cf5d0 310 {
rpgjake 0:b7a07b6cf5d0 311 cursor_x = cursor_x -1;
rpgjake 0:b7a07b6cf5d0 312 cursor_y = cursor_y +1;
rpgjake 0:b7a07b6cf5d0 313 }
rpgjake 0:b7a07b6cf5d0 314 break;
rpgjake 0:b7a07b6cf5d0 315 case 2:
rpgjake 0:b7a07b6cf5d0 316 {
rpgjake 0:b7a07b6cf5d0 317 cursor_y = cursor_y +1;
rpgjake 0:b7a07b6cf5d0 318 }
rpgjake 0:b7a07b6cf5d0 319 break;
rpgjake 0:b7a07b6cf5d0 320 case 3:
rpgjake 0:b7a07b6cf5d0 321 {
rpgjake 0:b7a07b6cf5d0 322 cursor_x = cursor_x +1;
rpgjake 0:b7a07b6cf5d0 323 cursor_y = cursor_y +1;
rpgjake 0:b7a07b6cf5d0 324 }
rpgjake 0:b7a07b6cf5d0 325 break;
rpgjake 0:b7a07b6cf5d0 326 case 4:
rpgjake 0:b7a07b6cf5d0 327 {
rpgjake 0:b7a07b6cf5d0 328 cursor_x = cursor_x -1;
rpgjake 0:b7a07b6cf5d0 329 }
rpgjake 0:b7a07b6cf5d0 330 break;
rpgjake 0:b7a07b6cf5d0 331 case 5:
rpgjake 0:b7a07b6cf5d0 332 break;
rpgjake 0:b7a07b6cf5d0 333 case 6:
rpgjake 0:b7a07b6cf5d0 334 {
rpgjake 0:b7a07b6cf5d0 335 cursor_x = cursor_x +1;
rpgjake 0:b7a07b6cf5d0 336 }
rpgjake 0:b7a07b6cf5d0 337 break;
rpgjake 0:b7a07b6cf5d0 338 case 7:
rpgjake 0:b7a07b6cf5d0 339 {
rpgjake 0:b7a07b6cf5d0 340 cursor_x = cursor_x -1;
rpgjake 0:b7a07b6cf5d0 341 cursor_y = cursor_y -1;
rpgjake 0:b7a07b6cf5d0 342 }
rpgjake 0:b7a07b6cf5d0 343 break;
rpgjake 0:b7a07b6cf5d0 344 case 8:
rpgjake 0:b7a07b6cf5d0 345 {
rpgjake 0:b7a07b6cf5d0 346 cursor_y = cursor_y -1;
rpgjake 0:b7a07b6cf5d0 347 }
rpgjake 0:b7a07b6cf5d0 348 break;
rpgjake 0:b7a07b6cf5d0 349 case 9:
rpgjake 0:b7a07b6cf5d0 350 {
rpgjake 0:b7a07b6cf5d0 351 cursor_x = cursor_x + 1;
rpgjake 0:b7a07b6cf5d0 352 cursor_y = cursor_y - 1;
rpgjake 0:b7a07b6cf5d0 353 }
rpgjake 0:b7a07b6cf5d0 354 break;
rpgjake 0:b7a07b6cf5d0 355 }
rpgjake 0:b7a07b6cf5d0 356 if (cursor_y <0)
rpgjake 0:b7a07b6cf5d0 357 cursor_y = 0;
rpgjake 0:b7a07b6cf5d0 358 if (cursor_x <0)
rpgjake 0:b7a07b6cf5d0 359 cursor_x = 0;
rpgjake 0:b7a07b6cf5d0 360 if (cursor_y >7)
rpgjake 0:b7a07b6cf5d0 361 cursor_y = 7;
rpgjake 0:b7a07b6cf5d0 362 if (cursor_x >7)
rpgjake 0:b7a07b6cf5d0 363 cursor_x = 7;
rpgjake 0:b7a07b6cf5d0 364
rpgjake 0:b7a07b6cf5d0 365
rpgjake 0:b7a07b6cf5d0 366 if((xlast != cursor_x) || (ylast != cursor_y)){
rpgjake 0:b7a07b6cf5d0 367 person_index = unitsMap1_1[ylast][xlast];
rpgjake 0:b7a07b6cf5d0 368 tile_index = Map1_1[ylast][xlast];
rpgjake 0:b7a07b6cf5d0 369 if (person_index != 0){
rpgjake 0:b7a07b6cf5d0 370 temp_person = person_array[person_index];
rpgjake 0:b7a07b6cf5d0 371 uLCD.set_sector_address(temp_person->job.x, temp_person->job.y);
rpgjake 0:b7a07b6cf5d0 372 uLCD.display_image((xlast*16), (ylast*16));
rpgjake 0:b7a07b6cf5d0 373 }
rpgjake 0:b7a07b6cf5d0 374 else{
rpgjake 0:b7a07b6cf5d0 375 tile_erased = tile_array[tile_index];
rpgjake 0:b7a07b6cf5d0 376 if (tile_index == 0){
rpgjake 0:b7a07b6cf5d0 377 uLCD.set_sector_address(tile_erased->x, tile_erased->y);
rpgjake 0:b7a07b6cf5d0 378 uLCD.display_image(0, 0);
rpgjake 0:b7a07b6cf5d0 379 }
rpgjake 0:b7a07b6cf5d0 380 else{
rpgjake 0:b7a07b6cf5d0 381 uLCD.set_sector_address(tile_erased->x, tile_erased->y);
rpgjake 0:b7a07b6cf5d0 382 uLCD.display_image(xlast*16, ylast*16);
rpgjake 0:b7a07b6cf5d0 383 }
rpgjake 0:b7a07b6cf5d0 384 }
rpgjake 0:b7a07b6cf5d0 385 uLCD.rectangle((cursor_x*16), (cursor_y*16), ((cursor_x*16)+15), ((cursor_y*16)+15), 0x000000);
rpgjake 0:b7a07b6cf5d0 386 }
rpgjake 0:b7a07b6cf5d0 387 int a = pb5;
rpgjake 0:b7a07b6cf5d0 388 //int b = pb6;
rpgjake 0:b7a07b6cf5d0 389 int c = pb7;
rpgjake 0:b7a07b6cf5d0 390 int d = pb8;
rpgjake 0:b7a07b6cf5d0 391 if (pb5 == 0){
rpgjake 0:b7a07b6cf5d0 392 state = 2;
rpgjake 0:b7a07b6cf5d0 393 action = 1;
rpgjake 0:b7a07b6cf5d0 394 }
rpgjake 0:b7a07b6cf5d0 395 //else if (pb6 == 0){
rpgjake 0:b7a07b6cf5d0 396 //state = 3;
rpgjake 0:b7a07b6cf5d0 397 //action = 2;
rpgjake 0:b7a07b6cf5d0 398 //}
rpgjake 0:b7a07b6cf5d0 399 else if (pb7 == 0){
rpgjake 0:b7a07b6cf5d0 400 action = 3;
rpgjake 0:b7a07b6cf5d0 401 }
rpgjake 0:b7a07b6cf5d0 402 else if (pb8 == 0){
rpgjake 0:b7a07b6cf5d0 403 action = 4;
rpgjake 0:b7a07b6cf5d0 404 }
rpgjake 0:b7a07b6cf5d0 405 }
rpgjake 0:b7a07b6cf5d0 406 if (pb5 == 0){
rpgjake 0:b7a07b6cf5d0 407 state = 2;
rpgjake 0:b7a07b6cf5d0 408 action = 1;
rpgjake 0:b7a07b6cf5d0 409 }
rpgjake 0:b7a07b6cf5d0 410 return action;
rpgjake 0:b7a07b6cf5d0 411 }
rpgjake 0:b7a07b6cf5d0 412
rpgjake 0:b7a07b6cf5d0 413
rpgjake 0:b7a07b6cf5d0 414 int user_movement(int selection){
rpgjake 0:b7a07b6cf5d0 415 int Index_j;
rpgjake 0:b7a07b6cf5d0 416 Index_j = unitsMap1_1[cursor_y][cursor_x];
rpgjake 0:b7a07b6cf5d0 417 person_t* User_person;
rpgjake 0:b7a07b6cf5d0 418 if (Index_j == 0){
rpgjake 0:b7a07b6cf5d0 419 state = 4;
rpgjake 0:b7a07b6cf5d0 420 return 69;
rpgjake 0:b7a07b6cf5d0 421 }
rpgjake 0:b7a07b6cf5d0 422 User_person = person_array[Index_j];
rpgjake 0:b7a07b6cf5d0 423 if ((User_person->remain_moves) == 0)
rpgjake 0:b7a07b6cf5d0 424 {
rpgjake 0:b7a07b6cf5d0 425 state = 0;
rpgjake 0:b7a07b6cf5d0 426 return 0;
rpgjake 0:b7a07b6cf5d0 427 }
rpgjake 0:b7a07b6cf5d0 428 if ((User_person->FoF) != player_turn)
rpgjake 0:b7a07b6cf5d0 429 {
rpgjake 0:b7a07b6cf5d0 430 state = 0;
rpgjake 0:b7a07b6cf5d0 431 return 0;
rpgjake 0:b7a07b6cf5d0 432 }
rpgjake 0:b7a07b6cf5d0 433 int j = pb7;
rpgjake 0:b7a07b6cf5d0 434 int xloc_u = 1;
rpgjake 0:b7a07b6cf5d0 435 int yloc_u = 1;
rpgjake 0:b7a07b6cf5d0 436 int xlast = 1;
rpgjake 0:b7a07b6cf5d0 437 int ylast = 1;
rpgjake 0:b7a07b6cf5d0 438 while(j==1){
rpgjake 0:b7a07b6cf5d0 439 j = pb7;
rpgjake 0:b7a07b6cf5d0 440 xloc_u = (User_person->xloc);
rpgjake 0:b7a07b6cf5d0 441 yloc_u = User_person->yloc;
rpgjake 0:b7a07b6cf5d0 442 xlast = User_person->xlast;
rpgjake 0:b7a07b6cf5d0 443 ylast = User_person->ylast;
rpgjake 0:b7a07b6cf5d0 444 int keypad = 5;
rpgjake 0:b7a07b6cf5d0 445 while((keypad == 5)&&(j==1)){
rpgjake 0:b7a07b6cf5d0 446 wait(1);
rpgjake 0:b7a07b6cf5d0 447 j = pb7;
rpgjake 0:b7a07b6cf5d0 448 keypad = analog2Keypad(&joysttick);
rpgjake 0:b7a07b6cf5d0 449 }
rpgjake 0:b7a07b6cf5d0 450 switch (keypad)
rpgjake 0:b7a07b6cf5d0 451 {
rpgjake 0:b7a07b6cf5d0 452 case 1:
rpgjake 0:b7a07b6cf5d0 453 xloc_u = xloc_u -1;
rpgjake 0:b7a07b6cf5d0 454 yloc_u = yloc_u +1;
rpgjake 0:b7a07b6cf5d0 455 break;
rpgjake 0:b7a07b6cf5d0 456 case 2:
rpgjake 0:b7a07b6cf5d0 457 yloc_u = yloc_u +1;
rpgjake 0:b7a07b6cf5d0 458 break;
rpgjake 0:b7a07b6cf5d0 459 case 3:
rpgjake 0:b7a07b6cf5d0 460 xloc_u = xloc_u +1;
rpgjake 0:b7a07b6cf5d0 461 yloc_u = yloc_u +1;
rpgjake 0:b7a07b6cf5d0 462 break;
rpgjake 0:b7a07b6cf5d0 463 case 4:
rpgjake 0:b7a07b6cf5d0 464 xloc_u = xloc_u -1;
rpgjake 0:b7a07b6cf5d0 465 break;
rpgjake 0:b7a07b6cf5d0 466 case 5:
rpgjake 0:b7a07b6cf5d0 467 break;
rpgjake 0:b7a07b6cf5d0 468 case 6:
rpgjake 0:b7a07b6cf5d0 469 xloc_u = xloc_u +1;
rpgjake 0:b7a07b6cf5d0 470 break;
rpgjake 0:b7a07b6cf5d0 471 case 7:
rpgjake 0:b7a07b6cf5d0 472 xloc_u = xloc_u -1;
rpgjake 0:b7a07b6cf5d0 473 yloc_u = yloc_u -1;
rpgjake 0:b7a07b6cf5d0 474 break;
rpgjake 0:b7a07b6cf5d0 475 case 8:
rpgjake 0:b7a07b6cf5d0 476 yloc_u = yloc_u -1;
rpgjake 0:b7a07b6cf5d0 477 break;
rpgjake 0:b7a07b6cf5d0 478 case 9:
rpgjake 0:b7a07b6cf5d0 479 xloc_u = xloc_u + 1;
rpgjake 0:b7a07b6cf5d0 480 yloc_u = yloc_u - 1;
rpgjake 0:b7a07b6cf5d0 481 break;
rpgjake 0:b7a07b6cf5d0 482 }
rpgjake 0:b7a07b6cf5d0 483 if (yloc_u <0)
rpgjake 0:b7a07b6cf5d0 484 yloc_u = 0;
rpgjake 0:b7a07b6cf5d0 485 if (xloc_u <0)
rpgjake 0:b7a07b6cf5d0 486 xloc_u = 0;
rpgjake 0:b7a07b6cf5d0 487 if (yloc_u >7)
rpgjake 0:b7a07b6cf5d0 488 yloc_u = 7;
rpgjake 0:b7a07b6cf5d0 489 if (xloc_u >7)
rpgjake 0:b7a07b6cf5d0 490 xloc_u = 7;
rpgjake 0:b7a07b6cf5d0 491 int x_change = 0;
rpgjake 0:b7a07b6cf5d0 492 if (xloc_u != xlast)
rpgjake 0:b7a07b6cf5d0 493 x_change = 1;
rpgjake 0:b7a07b6cf5d0 494 int y_change = 0;
rpgjake 0:b7a07b6cf5d0 495 if (yloc_u != ylast)
rpgjake 0:b7a07b6cf5d0 496 y_change = 1;
rpgjake 0:b7a07b6cf5d0 497 if (((User_person->remain_moves)-(y_change+x_change))<0){
rpgjake 0:b7a07b6cf5d0 498 xloc_u = xlast;
rpgjake 0:b7a07b6cf5d0 499 yloc_u = ylast;
rpgjake 0:b7a07b6cf5d0 500 x_change = 0;
rpgjake 0:b7a07b6cf5d0 501 y_change = 0;
rpgjake 0:b7a07b6cf5d0 502 }
rpgjake 0:b7a07b6cf5d0 503
rpgjake 0:b7a07b6cf5d0 504
rpgjake 0:b7a07b6cf5d0 505 int unit_index = unitsMap1_1[yloc_u][xloc_u];
rpgjake 0:b7a07b6cf5d0 506 if (unit_index != 0){
rpgjake 0:b7a07b6cf5d0 507 person_t* target;
rpgjake 0:b7a07b6cf5d0 508 target = person_array[unit_index];
rpgjake 0:b7a07b6cf5d0 509 int alliance = target->FoF;
rpgjake 0:b7a07b6cf5d0 510 if (alliance ==player_turn){
rpgjake 0:b7a07b6cf5d0 511 m.speed(1.0);
rpgjake 0:b7a07b6cf5d0 512 xloc_u = xlast;
rpgjake 0:b7a07b6cf5d0 513 yloc_u = ylast;
rpgjake 0:b7a07b6cf5d0 514 x_change = 0;
rpgjake 0:b7a07b6cf5d0 515 y_change = 0;
rpgjake 0:b7a07b6cf5d0 516 wait(1.0);
rpgjake 0:b7a07b6cf5d0 517 m.speed(0.0);
rpgjake 0:b7a07b6cf5d0 518 }
rpgjake 0:b7a07b6cf5d0 519 else if(((xloc_u!=xlast)||(yloc_u!=ylast))&& (alliance != (User_person-> FoF)))
rpgjake 0:b7a07b6cf5d0 520 {
rpgjake 0:b7a07b6cf5d0 521 combat(User_person, target);
rpgjake 0:b7a07b6cf5d0 522 User_person->remain_moves = 0;
rpgjake 0:b7a07b6cf5d0 523 state = 0;
rpgjake 0:b7a07b6cf5d0 524 return 0;
rpgjake 0:b7a07b6cf5d0 525 }
rpgjake 0:b7a07b6cf5d0 526 }
rpgjake 0:b7a07b6cf5d0 527 int tile_index = Map1_1[yloc_u][xloc_u];
rpgjake 0:b7a07b6cf5d0 528 if (tile_index == 0){
rpgjake 0:b7a07b6cf5d0 529 m.speed(1.0);
rpgjake 0:b7a07b6cf5d0 530 xloc_u = xlast;
rpgjake 0:b7a07b6cf5d0 531 yloc_u = ylast;
rpgjake 0:b7a07b6cf5d0 532 x_change = 0;
rpgjake 0:b7a07b6cf5d0 533 y_change = 0;
rpgjake 0:b7a07b6cf5d0 534 wait(1.0);
rpgjake 0:b7a07b6cf5d0 535 m.speed(0.0);
rpgjake 0:b7a07b6cf5d0 536 }
rpgjake 0:b7a07b6cf5d0 537
rpgjake 0:b7a07b6cf5d0 538 if((xlast != xloc_u) || (ylast != yloc_u)){
rpgjake 0:b7a07b6cf5d0 539 tile_index = Map1_1[ylast][xlast];
rpgjake 0:b7a07b6cf5d0 540 unitsMap1_1[ylast][xlast] = 0;
rpgjake 0:b7a07b6cf5d0 541 unitsMap1_1[yloc_u][xloc_u] = User_person->v;
rpgjake 0:b7a07b6cf5d0 542 tiles* tile_erased = tile_array[tile_index];
rpgjake 0:b7a07b6cf5d0 543 if (tile_index == 0){
rpgjake 0:b7a07b6cf5d0 544 uLCD.set_sector_address(tile_erased->x, tile_erased->y);
rpgjake 0:b7a07b6cf5d0 545 uLCD.display_image(0, 0);
rpgjake 0:b7a07b6cf5d0 546 }
rpgjake 0:b7a07b6cf5d0 547 else{
rpgjake 0:b7a07b6cf5d0 548 uLCD.set_sector_address(tile_erased->x, tile_erased->y);
rpgjake 0:b7a07b6cf5d0 549 uLCD.display_image(xlast*16, ylast*16);
rpgjake 0:b7a07b6cf5d0 550 }
rpgjake 0:b7a07b6cf5d0 551 uLCD.set_sector_address(User_person->job.x,User_person->job.y);
rpgjake 0:b7a07b6cf5d0 552 User_person->xloc = xloc_u;
rpgjake 0:b7a07b6cf5d0 553 User_person->yloc = yloc_u;
rpgjake 0:b7a07b6cf5d0 554 User_person->xlast = xloc_u;
rpgjake 0:b7a07b6cf5d0 555 User_person->ylast = yloc_u;
rpgjake 0:b7a07b6cf5d0 556 User_person->remain_moves = (User_person->remain_moves) - x_change - y_change;
rpgjake 0:b7a07b6cf5d0 557 uLCD.display_image(((User_person->xloc)*16), ((User_person->yloc)*16));
rpgjake 0:b7a07b6cf5d0 558 }
rpgjake 0:b7a07b6cf5d0 559 }
rpgjake 0:b7a07b6cf5d0 560 state = 0;
rpgjake 0:b7a07b6cf5d0 561 return 0;
rpgjake 0:b7a07b6cf5d0 562 }
rpgjake 0:b7a07b6cf5d0 563
rpgjake 0:b7a07b6cf5d0 564 int analog2Keypad(SparkfunAnalogJoystick *joystick) {
rpgjake 0:b7a07b6cf5d0 565 if (joystick->distance() > .1) { //not in deadzone, accept input
rpgjake 0:b7a07b6cf5d0 566 if ((joystick->angle() > 0.0 && joystick->angle() < 22.5) ||(joystick->angle() > 337.5 && joystick->angle() < 360.0)) {
rpgjake 0:b7a07b6cf5d0 567 return 6;
rpgjake 0:b7a07b6cf5d0 568 } else if (joystick->angle() >= 22.5 && joystick->angle() < 67.5) {
rpgjake 0:b7a07b6cf5d0 569 return 9;
rpgjake 0:b7a07b6cf5d0 570 } else if (joystick->angle() >= 67.5 && joystick->angle() < 112.5) {
rpgjake 0:b7a07b6cf5d0 571 return 8;
rpgjake 0:b7a07b6cf5d0 572 } else if (joystick->angle() >= 112.5 && joystick->angle() < 157.5) {
rpgjake 0:b7a07b6cf5d0 573 return 7;
rpgjake 0:b7a07b6cf5d0 574 } else if (joystick->angle() >= 157.5 && joystick->angle() < 202.5) {
rpgjake 0:b7a07b6cf5d0 575 return 4;
rpgjake 0:b7a07b6cf5d0 576 } else if (joystick->angle() >= 202.5 && joystick->angle() < 247.5) {
rpgjake 0:b7a07b6cf5d0 577 return 1;
rpgjake 0:b7a07b6cf5d0 578 } else if (joystick->angle() >= 247.5 && joystick->angle() < 292.5) {
rpgjake 0:b7a07b6cf5d0 579 return 2;
rpgjake 0:b7a07b6cf5d0 580 } else if (joystick->angle() >= 292.5 && joystick->angle() < 337.5) {
rpgjake 0:b7a07b6cf5d0 581 return 3;
rpgjake 0:b7a07b6cf5d0 582 }
rpgjake 0:b7a07b6cf5d0 583 } else {
rpgjake 0:b7a07b6cf5d0 584 return 5;
rpgjake 0:b7a07b6cf5d0 585 }
rpgjake 0:b7a07b6cf5d0 586 }
rpgjake 0:b7a07b6cf5d0 587
rpgjake 0:b7a07b6cf5d0 588 int combat(person_t* attacker, person_t* defender){
rpgjake 0:b7a07b6cf5d0 589 int d_health = (defender->health)-((attacker->job.damage)-(defender->job.defence));
rpgjake 0:b7a07b6cf5d0 590 int a_health;
rpgjake 0:b7a07b6cf5d0 591 if (d_health < (defender->health))
rpgjake 0:b7a07b6cf5d0 592 defender->health = d_health;
rpgjake 0:b7a07b6cf5d0 593 if ((defender->health)>0){
rpgjake 0:b7a07b6cf5d0 594 a_health = (defender->health)-(((attacker->job.damage)-(defender->job.defence))/2);
rpgjake 0:b7a07b6cf5d0 595 attacker->health = a_health;
rpgjake 0:b7a07b6cf5d0 596 }
rpgjake 0:b7a07b6cf5d0 597 pc.printf("attacker health %d \n",attacker->health);
rpgjake 0:b7a07b6cf5d0 598 pc.printf("defender health %d \n",defender->health);
rpgjake 0:b7a07b6cf5d0 599 if ((defender->health)<=0)
rpgjake 0:b7a07b6cf5d0 600 kill_unit(defender);
rpgjake 0:b7a07b6cf5d0 601 if ((attacker->health)<=0)
rpgjake 0:b7a07b6cf5d0 602 kill_unit(attacker);
rpgjake 0:b7a07b6cf5d0 603
rpgjake 0:b7a07b6cf5d0 604
rpgjake 0:b7a07b6cf5d0 605 return 0;
rpgjake 0:b7a07b6cf5d0 606 }
rpgjake 0:b7a07b6cf5d0 607
rpgjake 0:b7a07b6cf5d0 608 void kill_unit(person_t* dead_unit){
rpgjake 0:b7a07b6cf5d0 609 int xloc = dead_unit->xloc;
rpgjake 0:b7a07b6cf5d0 610 int yloc = dead_unit->yloc;
rpgjake 0:b7a07b6cf5d0 611 unitsMap1_1[yloc][xloc] = 0;
rpgjake 0:b7a07b6cf5d0 612 int tile_index = Map1_1[yloc][xloc];
rpgjake 0:b7a07b6cf5d0 613 tiles* tile_dead_spot;
rpgjake 0:b7a07b6cf5d0 614 tile_dead_spot = tile_array[tile_index];
rpgjake 0:b7a07b6cf5d0 615 uLCD.set_sector_address(tile_dead_spot->x,tile_dead_spot->y);
rpgjake 0:b7a07b6cf5d0 616 uLCD.display_image(((dead_unit->xloc)*16), ((dead_unit->yloc)*16));
rpgjake 0:b7a07b6cf5d0 617
rpgjake 0:b7a07b6cf5d0 618 return;
rpgjake 0:b7a07b6cf5d0 619 }
rpgjake 0:b7a07b6cf5d0 620