Advertisement
Guest User

Untitled

a guest
Jul 25th, 2016
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.54 KB | None | 0 0
  1. #region using directives
  2.  
  3. using System;
  4. using System.Collections.Generic;
  5. using System.IO;
  6. using System.Text.RegularExpressions;
  7. using PoGo.NecroBot.Logic;
  8. using PoGo.NecroBot.Logic.Logging;
  9. using PokemonGo.RocketAPI;
  10. using PokemonGo.RocketAPI.Enums;
  11. using POGOProtos.Enums;
  12. using POGOProtos.Inventory.Item;
  13. using Newtonsoft.Json;
  14. #endregion
  15.  
  16. namespace PoGo.NecroBot.CLI
  17. {
  18. public class GlobalSettings
  19. {
  20. public ISettings apiSettings;
  21. public ILogicSettings botSettings;
  22.  
  23. public void Save(string fileName)
  24. {
  25. string output = JsonConvert.SerializeObject(this);
  26.  
  27. //make configs, always call this function with just "
  28.  
  29. Directory.CreateDirectory(System.Reflection.Assembly.GetEntryAssembly().Location + "\\Configs");
  30.  
  31. File.WriteAllText(Directory.GetCurrentDirectory() + "\\" + fileName, output);
  32.  
  33. }
  34.  
  35. public GlobalSettings(bool couldLoad)
  36. {
  37. if (!couldLoad)
  38. {
  39. apiSettings = new DefaultClientSettings();
  40. botSettings = new DefaultLogicSettings();
  41. }
  42. }
  43. }
  44. public class DefaultClientSettings : ISettings
  45. {
  46. public AuthType AuthType { get { return (AuthType)Enum.Parse(typeof(AuthType), "Google", true); } }
  47. public string PtcUsername { get { return "username2"; } }
  48. public string PtcPassword { get { return "pw"; } }
  49. public double DefaultLatitude { get { return 52.379189; } }
  50. public double DefaultLongitude { get { return 4.899431; } }
  51. public double DefaultAltitude { get { return 10; } }
  52.  
  53. public string GoogleRefreshToken { get; set; }
  54. }
  55.  
  56. public class DefaultLogicSettings : ILogicSettings
  57. {
  58. private ICollection<KeyValuePair<ItemId, int>> _itemRecycleFilter;
  59. private ICollection<PokemonId> _pokemonsNotToCatch;
  60.  
  61. private ICollection<PokemonId> _pokemonsNotToTransfer;
  62. private ICollection<PokemonId> _pokemonsToEvolve;
  63.  
  64. //public AuthType AuthType => (AuthType)Enum.Parse(typeof(AuthType), UserSettings.Default.AuthType, true);
  65. //public string PtcUsername => UserSettings.Default.PtcUsername;
  66. //public string PtcPassword => UserSettings.Default.PtcPassword;
  67. //public double DefaultLatitude => UserSettings.Default.DefaultLatitude;
  68. //public double DefaultLongitude => UserSettings.Default.DefaultLongitude;
  69. //public double DefaultAltitude => UserSettings.Default.DefaultAltitude;
  70. public float KeepMinIvPercentage { get { return 85; }}
  71. public int KeepMinCp { get { return 1000; } }
  72. public double WalkingSpeedInKilometerPerHour { get { return 50; } }
  73. public bool EvolveAllPokemonWithEnoughCandy { get { return false; } }
  74. public bool TransferDuplicatePokemon { get { return true; } }
  75. public int DelayBetweenPokemonCatch { get { return 5000; } }
  76. public bool UsePokemonToNotCatchFilter { get { return false; } }
  77. public int KeepMinDuplicatePokemon { get { return 1; } }
  78. public bool PrioritizeIvOverCp { get { return false; }}
  79. public int MaxTravelDistanceInMeters { get { return 1000; } }
  80. public string GpxFile { get { return "GPXFile.gpx"; } }
  81. public bool UseGpxPathing { get { return false; } }
  82. public bool UseLuckyEggsWhileEvolving { get { return false; } }
  83. public bool EvolveAllPokemonAboveIv { get { return false; } }
  84. public float EvolveAboveIvValue { get { return 95; } }
  85.  
  86. //Type and amount to keep
  87. public ICollection<KeyValuePair<ItemId, int>> ItemRecycleFilter
  88. {
  89. get
  90. {
  91. //Type of pokemons to evolve
  92. var defaultItems = new List<KeyValuePair<ItemId, int>>
  93. {
  94. new KeyValuePair<ItemId, int>(ItemId.ItemUnknown, 0),
  95. new KeyValuePair<ItemId, int>(ItemId.ItemPokeBall, 25),
  96. new KeyValuePair<ItemId, int>(ItemId.ItemGreatBall, 50),
  97. new KeyValuePair<ItemId, int>(ItemId.ItemUltraBall, 75),
  98. new KeyValuePair<ItemId, int>(ItemId.ItemMasterBall, 100),
  99. new KeyValuePair<ItemId, int>(ItemId.ItemPotion, 0),
  100. new KeyValuePair<ItemId, int>(ItemId.ItemSuperPotion, 25),
  101. new KeyValuePair<ItemId, int>(ItemId.ItemHyperPotion, 50),
  102. new KeyValuePair<ItemId, int>(ItemId.ItemMaxPotion, 75),
  103. new KeyValuePair<ItemId, int>(ItemId.ItemRevive, 25),
  104. new KeyValuePair<ItemId, int>(ItemId.ItemMaxRevive, 50),
  105. new KeyValuePair<ItemId, int>(ItemId.ItemLuckyEgg, 200),
  106. new KeyValuePair<ItemId, int>(ItemId.ItemIncenseOrdinary, 100),
  107. new KeyValuePair<ItemId, int>(ItemId.ItemIncenseSpicy, 100),
  108. new KeyValuePair<ItemId, int>(ItemId.ItemIncenseCool, 100),
  109. new KeyValuePair<ItemId, int>(ItemId.ItemIncenseFloral, 100),
  110. new KeyValuePair<ItemId, int>(ItemId.ItemTroyDisk, 100),
  111. new KeyValuePair<ItemId, int>(ItemId.ItemXAttack, 100),
  112. new KeyValuePair<ItemId, int>(ItemId.ItemXDefense, 100),
  113. new KeyValuePair<ItemId, int>(ItemId.ItemXMiracle, 100),
  114. new KeyValuePair<ItemId, int>(ItemId.ItemRazzBerry, 50),
  115. new KeyValuePair<ItemId, int>(ItemId.ItemBlukBerry, 10),
  116. new KeyValuePair<ItemId, int>(ItemId.ItemNanabBerry, 10),
  117. new KeyValuePair<ItemId, int>(ItemId.ItemWeparBerry, 30),
  118. new KeyValuePair<ItemId, int>(ItemId.ItemPinapBerry, 30),
  119. new KeyValuePair<ItemId, int>(ItemId.ItemSpecialCamera, 100),
  120. new KeyValuePair<ItemId, int>(ItemId.ItemIncubatorBasicUnlimited, 100),
  121. new KeyValuePair<ItemId, int>(ItemId.ItemIncubatorBasic, 100),
  122. new KeyValuePair<ItemId, int>(ItemId.ItemPokemonStorageUpgrade, 100),
  123. new KeyValuePair<ItemId, int>(ItemId.ItemItemStorageUpgrade, 100)
  124. };
  125. return defaultItems;
  126. }
  127. }
  128.  
  129.  
  130. public ICollection<PokemonId> PokemonsToEvolve
  131. {
  132. get
  133. {
  134. //Type of pokemons to evolve
  135. var defaultPokemon = new List<PokemonId>
  136. {
  137. PokemonId.Zubat,
  138. PokemonId.Pidgey,
  139. PokemonId.Rattata
  140. };
  141. return defaultPokemon;
  142. }
  143. }
  144.  
  145. public ICollection<PokemonId> PokemonsNotToTransfer
  146. {
  147. get
  148. {
  149. //Type of pokemons not to transfer
  150. var defaultPokemon = new List<PokemonId>
  151. {
  152. PokemonId.Dragonite,
  153. PokemonId.Charizard,
  154. PokemonId.Zapdos,
  155. PokemonId.Snorlax,
  156. PokemonId.Alakazam,
  157. PokemonId.Mew,
  158. PokemonId.Mewtwo
  159. };
  160. return defaultPokemon;
  161. }
  162. }
  163.  
  164. //Do not catch those
  165. public ICollection<PokemonId> PokemonsNotToCatch
  166. {
  167. get
  168. {
  169. //Type of pokemons not to catch
  170. var defaultPokemon = new List<PokemonId>
  171. {
  172. PokemonId.Zubat,
  173. PokemonId.Pidgey,
  174. PokemonId.Rattata
  175. };
  176. return defaultPokemon;
  177. }
  178. }
  179.  
  180. public ICollection<KeyValuePair<ItemId, int>> LoadItemList(string filename,
  181. List<KeyValuePair<ItemId, int>> defaultItems)
  182. {
  183.  
  184. return defaultItems;
  185. }
  186.  
  187. private static ICollection<PokemonId> LoadPokemonList(string filename, List<PokemonId> defaultPokemon)
  188. {
  189.  
  190. return defaultPokemon;
  191. }
  192. }
  193.  
  194. public class GetClientSettings : ISettings
  195. {
  196. public AuthType AuthType => (AuthType) Enum.Parse(typeof(AuthType), UserSettings.Default.AuthType, true);
  197. public string PtcUsername => UserSettings.Default.PtcUsername;
  198. public string PtcPassword => UserSettings.Default.PtcPassword;
  199. public double DefaultLatitude => UserSettings.Default.DefaultLatitude;
  200. public double DefaultLongitude => UserSettings.Default.DefaultLongitude;
  201. public double DefaultAltitude => UserSettings.Default.DefaultAltitude;
  202.  
  203. public string GoogleRefreshToken { get; set; }
  204. }
  205.  
  206. public class GetLogicSettings : ILogicSettings
  207. {
  208. private ICollection<KeyValuePair<ItemId, int>> _itemRecycleFilter;
  209. private ICollection<PokemonId> _pokemonsNotToCatch;
  210.  
  211. private ICollection<PokemonId> _pokemonsNotToTransfer;
  212. private ICollection<PokemonId> _pokemonsToEvolve;
  213.  
  214. //public AuthType AuthType => (AuthType)Enum.Parse(typeof(AuthType), UserSettings.Default.AuthType, true);
  215. //public string PtcUsername => UserSettings.Default.PtcUsername;
  216. //public string PtcPassword => UserSettings.Default.PtcPassword;
  217. //public double DefaultLatitude => UserSettings.Default.DefaultLatitude;
  218. //public double DefaultLongitude => UserSettings.Default.DefaultLongitude;
  219. //public double DefaultAltitude => UserSettings.Default.DefaultAltitude;
  220. public float KeepMinIvPercentage => UserSettings.Default.KeepMinIVPercentage;
  221. public int KeepMinCp => UserSettings.Default.KeepMinCP;
  222. public double WalkingSpeedInKilometerPerHour => UserSettings.Default.WalkingSpeedInKilometerPerHour;
  223. public bool EvolveAllPokemonWithEnoughCandy => UserSettings.Default.EvolveAllPokemonWithEnoughCandy;
  224. public bool TransferDuplicatePokemon => UserSettings.Default.TransferDuplicatePokemon;
  225. public int DelayBetweenPokemonCatch => UserSettings.Default.DelayBetweenPokemonCatch;
  226. public bool UsePokemonToNotCatchFilter => UserSettings.Default.UsePokemonToNotCatchFilter;
  227. public int KeepMinDuplicatePokemon => UserSettings.Default.KeepMinDuplicatePokemon;
  228. public bool PrioritizeIvOverCp => UserSettings.Default.PrioritizeIVOverCP;
  229. public int MaxTravelDistanceInMeters => UserSettings.Default.MaxTravelDistanceInMeters;
  230. public string GpxFile => UserSettings.Default.GPXFile;
  231. public bool UseGpxPathing => UserSettings.Default.UseGPXPathing;
  232. public bool UseLuckyEggsWhileEvolving => UserSettings.Default.useLuckyEggsWhileEvolving;
  233. public bool EvolveAllPokemonAboveIv => UserSettings.Default.EvolveAllPokemonAboveIV;
  234. public float EvolveAboveIvValue => UserSettings.Default.EvolveAboveIVValue;
  235.  
  236. //Type and amount to keep
  237. public ICollection<KeyValuePair<ItemId, int>> ItemRecycleFilter
  238. {
  239. get
  240. {
  241. //Type of pokemons to evolve
  242. var defaultItems = new List<KeyValuePair<ItemId, int>>
  243. {
  244. new KeyValuePair<ItemId, int>(ItemId.ItemUnknown, 0),
  245. new KeyValuePair<ItemId, int>(ItemId.ItemPokeBall, 25),
  246. new KeyValuePair<ItemId, int>(ItemId.ItemGreatBall, 50),
  247. new KeyValuePair<ItemId, int>(ItemId.ItemUltraBall, 75),
  248. new KeyValuePair<ItemId, int>(ItemId.ItemMasterBall, 100),
  249. new KeyValuePair<ItemId, int>(ItemId.ItemPotion, 0),
  250. new KeyValuePair<ItemId, int>(ItemId.ItemSuperPotion, 25),
  251. new KeyValuePair<ItemId, int>(ItemId.ItemHyperPotion, 50),
  252. new KeyValuePair<ItemId, int>(ItemId.ItemMaxPotion, 75),
  253. new KeyValuePair<ItemId, int>(ItemId.ItemRevive, 25),
  254. new KeyValuePair<ItemId, int>(ItemId.ItemMaxRevive, 50),
  255. new KeyValuePair<ItemId, int>(ItemId.ItemLuckyEgg, 200),
  256. new KeyValuePair<ItemId, int>(ItemId.ItemIncenseOrdinary, 100),
  257. new KeyValuePair<ItemId, int>(ItemId.ItemIncenseSpicy, 100),
  258. new KeyValuePair<ItemId, int>(ItemId.ItemIncenseCool, 100),
  259. new KeyValuePair<ItemId, int>(ItemId.ItemIncenseFloral, 100),
  260. new KeyValuePair<ItemId, int>(ItemId.ItemTroyDisk, 100),
  261. new KeyValuePair<ItemId, int>(ItemId.ItemXAttack, 100),
  262. new KeyValuePair<ItemId, int>(ItemId.ItemXDefense, 100),
  263. new KeyValuePair<ItemId, int>(ItemId.ItemXMiracle, 100),
  264. new KeyValuePair<ItemId, int>(ItemId.ItemRazzBerry, 50),
  265. new KeyValuePair<ItemId, int>(ItemId.ItemBlukBerry, 10),
  266. new KeyValuePair<ItemId, int>(ItemId.ItemNanabBerry, 10),
  267. new KeyValuePair<ItemId, int>(ItemId.ItemWeparBerry, 30),
  268. new KeyValuePair<ItemId, int>(ItemId.ItemPinapBerry, 30),
  269. new KeyValuePair<ItemId, int>(ItemId.ItemSpecialCamera, 100),
  270. new KeyValuePair<ItemId, int>(ItemId.ItemIncubatorBasicUnlimited, 100),
  271. new KeyValuePair<ItemId, int>(ItemId.ItemIncubatorBasic, 100),
  272. new KeyValuePair<ItemId, int>(ItemId.ItemPokemonStorageUpgrade, 100),
  273. new KeyValuePair<ItemId, int>(ItemId.ItemItemStorageUpgrade, 100)
  274. };
  275. _itemRecycleFilter = _itemRecycleFilter ?? LoadItemList("Configs\\ConfigItemList.ini", defaultItems);
  276. return _itemRecycleFilter;
  277. }
  278. }
  279.  
  280.  
  281. public ICollection<PokemonId> PokemonsToEvolve
  282. {
  283. get
  284. {
  285. //Type of pokemons to evolve
  286. var defaultPokemon = new List<PokemonId>
  287. {
  288. PokemonId.Zubat,
  289. PokemonId.Pidgey,
  290. PokemonId.Rattata
  291. };
  292. _pokemonsToEvolve = _pokemonsToEvolve ??
  293. LoadPokemonList("Configs\\ConfigPokemonsToEvolve.ini", defaultPokemon);
  294. return _pokemonsToEvolve;
  295. }
  296. }
  297.  
  298. public ICollection<PokemonId> PokemonsNotToTransfer
  299. {
  300. get
  301. {
  302. //Type of pokemons not to transfer
  303. var defaultPokemon = new List<PokemonId>
  304. {
  305. PokemonId.Dragonite,
  306. PokemonId.Charizard,
  307. PokemonId.Zapdos,
  308. PokemonId.Snorlax,
  309. PokemonId.Alakazam,
  310. PokemonId.Mew,
  311. PokemonId.Mewtwo
  312. };
  313. _pokemonsNotToTransfer = _pokemonsNotToTransfer ??
  314. LoadPokemonList("Configs\\ConfigPokemonsToKeep.ini", defaultPokemon);
  315. return _pokemonsNotToTransfer;
  316. }
  317. }
  318.  
  319. //Do not catch those
  320. public ICollection<PokemonId> PokemonsNotToCatch
  321. {
  322. get
  323. {
  324. //Type of pokemons not to catch
  325. var defaultPokemon = new List<PokemonId>
  326. {
  327. PokemonId.Zubat,
  328. PokemonId.Pidgey,
  329. PokemonId.Rattata
  330. };
  331. _pokemonsNotToCatch = _pokemonsNotToCatch ??
  332. LoadPokemonList("Configs\\ConfigPokemonsNotToCatch.ini", defaultPokemon);
  333. return _pokemonsNotToCatch;
  334. }
  335. }
  336.  
  337. public ICollection<KeyValuePair<ItemId, int>> LoadItemList(string filename,
  338. List<KeyValuePair<ItemId, int>> defaultItems)
  339. {
  340. ICollection<KeyValuePair<ItemId, int>> result = new List<KeyValuePair<ItemId, int>>();
  341.  
  342. Directory.CreateDirectory(Directory.GetCurrentDirectory() + "\\Configs");
  343.  
  344. if (File.Exists(Directory.GetCurrentDirectory() + "\\" + filename))
  345. {
  346. Logger.Write($"Loading File: {filename}");
  347.  
  348. string content;
  349. using (var reader = new StreamReader(filename))
  350. {
  351. content = reader.ReadToEnd();
  352. reader.Close();
  353. }
  354.  
  355. content = Regex.Replace(content, @"\\/\*(.|\n)*?\*\/", ""); //todo: supposed to remove comment blocks
  356.  
  357.  
  358. var tr = new StringReader(content);
  359.  
  360. var itemInfo = tr.ReadLine();
  361. while (itemInfo != null)
  362. {
  363. var itemInfoArray = itemInfo.Split(' ');
  364. var itemName = itemInfoArray.Length > 1 ? itemInfoArray[0] : "";
  365. int itemAmount;
  366. if (!int.TryParse(itemInfoArray.Length > 1 ? itemInfoArray[1] : "100", out itemAmount))
  367. itemAmount = 100;
  368.  
  369. ItemId item;
  370. if (Enum.TryParse(itemName, out item))
  371. {
  372. result.Add(new KeyValuePair<ItemId, int>(item, itemAmount));
  373. }
  374. itemInfo = tr.ReadLine();
  375. }
  376. }
  377. else
  378. {
  379. Logger.Write($"File: {filename} not found, creating new...", LogLevel.Warning);
  380. using (var w = File.AppendText(Directory.GetCurrentDirectory() + "\\" + filename))
  381. {
  382. defaultItems.ForEach(itemInfo => w.WriteLine($"{itemInfo.Key} {itemInfo.Value}"));
  383. defaultItems.ForEach(itemInfo => result.Add(itemInfo));
  384. w.Close();
  385. }
  386. }
  387. return result;
  388. }
  389.  
  390. private static ICollection<PokemonId> LoadPokemonList(string filename, List<PokemonId> defaultPokemon)
  391. {
  392. ICollection<PokemonId> result = new List<PokemonId>();
  393.  
  394. Directory.CreateDirectory(Directory.GetCurrentDirectory() + "\\Configs");
  395.  
  396. if (File.Exists(Directory.GetCurrentDirectory() + "\\" + filename))
  397. {
  398. Logger.Write($"Loading File: {filename}");
  399.  
  400. string content;
  401. using (var reader = new StreamReader(filename))
  402. {
  403. content = reader.ReadToEnd();
  404. reader.Close();
  405. }
  406.  
  407. content = Regex.Replace(content, @"\\/\*(.|\n)*?\*\/", ""); //todo: supposed to remove comment blocks
  408.  
  409.  
  410. var tr = new StringReader(content);
  411.  
  412. var pokemonName = tr.ReadLine();
  413. while (pokemonName != null)
  414. {
  415. PokemonId pokemon;
  416. if (Enum.TryParse(pokemonName, out pokemon))
  417. {
  418. result.Add(pokemon);
  419. }
  420. pokemonName = tr.ReadLine();
  421. }
  422. }
  423. else
  424. {
  425. Logger.Write($"File: {filename} not found, creating new...", LogLevel.Warning);
  426. using (var w = File.AppendText(Directory.GetCurrentDirectory() + "\\" + filename))
  427. {
  428. defaultPokemon.ForEach(pokemon => w.WriteLine(pokemon.ToString()));
  429. defaultPokemon.ForEach(pokemon => result.Add(pokemon));
  430. w.Close();
  431. }
  432. }
  433. return result;
  434. }
  435. }
  436. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement