// Requires:
// - common.js

////////////
// Cheeses //
////////////

// Quick lookups for cross-references
var _C_NONE=0, _C_CHEDDAR=1, _C_MARBLE=2, _C_SWISS=3, _C_BRIE=4, _C_SB=5, _C_WCHED=6, _C_RB=7, _C_MOON=8, _C_GNARLED=9;
var _C_MAKI=10, _C_COMBAT=11, _C_GLUTTER=12, _C_SUSH=13, _C_RUMBLE=14, _C_ANCIENT=15, _C_RUNIC=16, _C_GOUDA=17, _C_SHELL=18, _C_GUMBO=19;
var _C_CRUNCHY=20, _C_HAV_ORG=21, _C_HAV_GRN=22, _C_HAV_BLU=23, _C_HAV_PUR=24, _C_HAV_RED=25, _C_HAV_YEL=26, _C_HAV_INF=27, _C_GINGERB=28, _C_ONYX=29;
var _C_WICKED=30, _C_LIME=31, _C_VSTIL=32, _C_VENGE=33;

// cheeses_raw allows us to insert and modify cheeses easily and position them alphabetically or as we see fit
var cheeses_raw=[
// ID, Name, title_req, Default Cost, [List of attracted mice]
  [0,"Select : ",0,0,[]],
  [1,"Cheddar Cheese",1,10,[1,2,3,5,6,7,8,9,10,11,12,13,18,21,22,24,27,29,33,35,38,49,69,70,71,72,74,75,76,78,80,81,83,84,85,87,88,90,92,97,211,212,214]],
  [2,"Marble Cheese",1,50,[1,2,3,5,6,7,8,9,10,11,12,13,18,21,22,24,27,29,32,33,34,35,37,38,44,49,69,70,71,72,74,75,76,78,80,81,83,84,85,86,87,90,91,92,94,95,96,97,99,102,211,212,214]],
  [3,"Swiss Cheese",1,100,[1,2,3,5,6,7,8,9,10,11,12,13,18,21,22,24,27,29,32,33,34,35,37,38,44,45,47,48,49,69,70,71,72,74,75,76,78,80,81,83,84,85,86,87,88,90,91,92,93,94,95,96,97,98,99,100,102,103,105,106,107,108,118,119,120,130,131,132,203,204,205,206,207,208,209,211,212,214]],
  [4,"Brie Cheese",1,200,[1,2,3,5,6,7,8,9,10,11,12,13,18,21,22,24,27,29,32,33,34,35,37,38,44,45,47,48,49,69,70,71,72,74,75,76,78,80,81,83,84,85,86,87,88,90,91,92,93,94,95,96,97,98,99,100,102,103,105,106,107,108,109,110,111,112,113,118,119,120,121,123,124,125,130,131,132,133,134,135,136,137,203,204,205,206,207,208,209,211,212,214]],
  [5,"Super Brie",1,0,[1,2,3,5,6,7,8,9,10,11,12,13,18,21,22,24,27,29,32,33,34,35,37,38,44,45,48,49,51,66,69,70,71,72,74,75,76,78,79,80,81,83,84,85,86,87,88,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,118,119,120,121,122,123,124,125,130,131,132,133,134,135,136,137,203,204,205,206,207,208,209,211,212,214]],
  [6,"White Cheddar Cheese",2,5,[5,6,7,8,9,10,11,12,13,18,21,22,24,27,29,47,69,70,71,72,74,78,81,83,84,90,211,212,214]],
  [7,"Radioactive Blue Cheese",4,500,[1,2,3,5,6,7,8,9,10,11,12,13,18,20,21,22,23,24,25,26,28,29,32,33,34,35,36,38,44,45,49,52,53,54,55,56,59,63,69,70,71,72,74,75,76,78,81,83,84,86,87,90,170,173,177]],
  [8,"Moon Cheese",4,9,[1,5,13,21,22,23,24,25,26,28,33,36,45,49,81,83,84,85]],
  [9,"Gnarled Cheese",4,600,[1,5,10,11,12,24,29,32,34,49,69,70,71,72,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,94,95,96,97,98,99,100,101,102,103,105,231]],
  [10,"Maki Cheese",5,5,[5,9,10,11,13,21,22,23,24,25,26,28,29,32,33,34,35,36,37,38,44,45,48,49,52,53,54,56,59,63,69,70,71,72,74,75,76,78,80,81,83,84,87,90,94,106,107,108,118,119,120,130,131,132]],
  [11,"Combat Cheese",5,95,[40,44]],
  [12,"Glutter Cheese",5,50,[39,44]],
  [13,"Susheese Cheese",5,55,[41,44]],
  [14,"Rumble Cheese",5,170,[43]],
  [15,"Ancient Cheese",5,900,[23,25,26,28,36,52,53,54,55,56,59,60,63,64,66,67,68,170,173,177]],
  [16,"Runic Cheese",6,1350,[23,56,57,60,61,62,64,66,67,173]],
  [17,"Gouda Cheese",1,600,[5,6,7,8,9,10,11,12,13,21,22,24,29,32,33,34,35,37,38,45,69,71,74,81,85,90,91,92,93,94,95,96,97,98,99,100,102,103,105,106,107,108,109,110,111,112,113,118,119,120,121,122,123,124,125,130,131,132,133,134,135,136,137,214]],
  [18,"Shell Cheese",6,551,[69,90,91,94,130,131,132,138,139,140,141]],
  [19,"Gumbo Cheese",6,818,[69,90,91,94,118,119,120,126,127,128,129]],
  [20,"Crunchy Cheese",6,1073,[69,90,91,94,106,107,108,114,115,116,117]],
  [21,"Creamy Havarti",6,1344,[69,158]],
  [22,"Crunchy Havarti",6,544,[69,152]],
  [23,"Magical Havarti",6,278,[69,155]],
  [24,"Pungent Havarti",6,1078,[69,160]],
  [25,"Spicy Havarti",6,1611,[69,165]],
  [26,"Sweet Havarti",6,811,[69,150]],
  [27,"Inferno Havarti",6,2142,[200, 201, 202]],
  [28,"Gingerbread Cheese",1,400,[1,2,3,5,6,7,8,9,10,11,12,13,18,21,22,24,27,29,32,33,34,35,37,38,44,45,47,48,49,66,69,70,71,72,74,75,76,78,79,80,81,83,84,85,86,87,88,90,91,92,93,94,95,96,97,98,99,100,101,102,103,105,106,107,108,109,110,111,112,113,118,119,120,121,123,124,125,130,131,132,133,134,135,136,137,203,204,205,206,207,208,209]],
  [29,"Onyx Gorgonzola",5,960,[221]],
  [30,"Wicked Gnarly Cheese",4,1000,[29,75,76,77,79,81,82,83,84,85,86,88,89,101,230]],
  [31,"Limelight Cheese",4,1500,[232,233,234,235,236,237,250,251,255,256,257]],
  [32,"Vanilla Stilton",6,818,[259,258,261,262,263,265,266,267]],
  [33,"Vengeful Vanilla Stilton",6,1262,[258,259,261,262,263,264,265,266,267]]
];

// In this format: [dependent_cheeseId, multiplier of SB+ price, addition to multiplied SB+ price, number of cheese created]
// eg. Moon cost = Meteorite(loot) + 2 Magic Essence + 3 Curds and Whey
// Moon = 2xSB + 3x3 = 2xSB + 9
// i.e. [18, 2, 9, 1] --> Moon
// 3 Maki = 3xSB + 14
// i.e. [16, 3, 14, 3] --> Maki
var superbrie_derived_cheese_cost_raw=[
  [_C_ANCIENT, 1, 800, 1], // Ancient
  [_C_GNARLED, 1, 0, 1], // Gnarled
  [_C_MAKI, 3, 14, 3], // Maki
  [_C_MOON, 2, 9, 1], //Moon
  [_C_RB, 1, 0, 1] // Radioactive Blue
];

// This is how we decide the order after. We keep this alphabetical.
var cheeses_order=[
  _C_NONE, _C_ANCIENT, _C_BRIE, _C_CHEDDAR, _C_COMBAT, _C_CRUNCHY, _C_GINGERB, _C_GLUTTER, _C_GNARLED, _C_GOUDA, _C_GUMBO,
  _C_HAV_ORG, _C_HAV_GRN, _C_HAV_INF, _C_HAV_BLU, _C_HAV_PUR, _C_HAV_RED, _C_HAV_YEL, _C_LIME, _C_MAKI, _C_MARBLE, _C_MOON, _C_ONYX,
  _C_RB, _C_RUMBLE, _C_RUNIC, _C_SHELL, _C_SB, _C_SUSH, _C_SWISS, _C_WCHED, _C_WICKED, _C_VSTIL, _C_VENGE
];

// Populate cheese related arrays
var n_cheeses=cheeses_order.length;
var cheeses=new Array(n_cheeses);
var cheeses_title_req=new Array(n_cheeses);
var default_cheese_cost=new Array(n_cheeses);
var cheese_cost=new Array(n_cheeses);   // Duplicate copy for using with impunity and overwriting
var cheeseattraction=new Array(n_cheeses);
var superbrie_cheeseid=_C_SB;
for (i=0; i<n_cheeses; i++) {
  cheeseId=cheeses_order[i];
  cheeses[i]=cheeses_raw[cheeseId][1];
  cheeses_title_req[i]=cheeses_raw[cheeseId][2];
  default_cheese_cost[i]=cheeses_raw[cheeseId][3];
  cheese_cost[i]=cheeses_raw[cheeseId][3];
  cheeseattraction[i]=cheeses_raw[cheeseId][4];
}

// This will help us get the order number from cheeseID
var cheeses_rev_order=new Array(cheeses_raw.length);
// Default all to -1
for (i=0; i<cheeses_rev_order.length; i++) {
  cheeses_rev_order[i]=-1;
}
// Fill it up.
for (i=0; i<n_cheeses; i++) {
  cheeses_rev_order[cheeses_order[i]]=i
}

var superbrie_derived_cheese_cost=new Array(superbrie_derived_cheese_cost_raw.length);
for (i=0; i<superbrie_derived_cheese_cost_raw.length; i++) {
  superbrie_derived_cheese_cost[i]=new Array(4);
  superbrie_derived_cheese_cost[i][0]=cheeses_rev_order[superbrie_derived_cheese_cost_raw[i][0]];
  superbrie_derived_cheese_cost[i][1]=superbrie_derived_cheese_cost_raw[i][1];
  superbrie_derived_cheese_cost[i][2]=superbrie_derived_cheese_cost_raw[i][2];
  superbrie_derived_cheese_cost[i][3]=superbrie_derived_cheese_cost_raw[i][3];
}


function getCheeseId(cheeseName) {
  return getIndexFromStringArray(cheeseName, cheeses);
}
