DeviceStats.py 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import time
  4. import os.path
  5. import TextConfig
  6. from lib.RepeatTimer import RepeatTimer
  7. import configparser
  8. class DeviceStats(object):
  9. #TODO: via config.ini deaktivierbare Stats, z.B. angry dauerhaft auf 0 setzen
  10. #TODO: Abhängigkeit der Mondphase einbauen - Bei Vollmond gehen manche Stats schneller höch
  11. #TODO: Abhängigkeit der Blauen Stunde / Goldenen Stunde, bedingt an Wetter und Wolken
  12. MAX_VALUE:float = 1000
  13. SAVE_STATS_INTERVAL = 1
  14. #angry = 0.0
  15. #aroused = 0.0
  16. #hungry = 0.0
  17. #happyness = 0.0
  18. #funny = 0.0
  19. #annoyed = 0.0
  20. #irritated = 0.0
  21. #bored = 0.0
  22. #intelligent = 0.0
  23. #sleepy = 0.0
  24. #energy = 0.0
  25. #exhausted = 0.0
  26. #depressive = 0.0
  27. #sad = 0.0
  28. #useless = 0.0
  29. #usefull = 0.0
  30. #compfortable = 0.0
  31. #temperate = 0.0 # Wohl temperiert - ist die Temperatur angenehm
  32. #shy = 0.0
  33. #excited = 0.0
  34. #toLoud = 0.0 # Zu laut
  35. #toQuiet = 0.0 # Zu leise
  36. #playful = 0.0
  37. #naiv = 0.0
  38. #freezy = 0.0
  39. #hot = 0.0
  40. #humanity = 0.0
  41. #lonely = 0.0
  42. #soziality = 0.0
  43. #lastTimeToLoud = 0
  44. #lastTimeToQuiet = 0
  45. #lastTimeAngry = 0
  46. #lastTimeLonely = 0
  47. lastUpdate = 0
  48. def __init__(self):
  49. self._angry = 0.0
  50. self._aroused = 0.0
  51. self._hungry = 0.0
  52. self._happyness = 0.0
  53. self._funny = 0.0
  54. self._annoyed = 0.0
  55. self._irritated = 0.0
  56. self._bored = 0.0
  57. self._intelligent = 0.0
  58. self._sleepy = 0.0
  59. self._energy = 0.0
  60. self._exhausted = 0.0
  61. self._depressive = 0.0
  62. self._sad = 0.0
  63. self._useless = 0.0
  64. self._usefull = 0.0
  65. self._compfortable = 0.0
  66. self._temperate = 0.0
  67. self._shy = 0.0
  68. self._excited = 0.0
  69. self._toLoud = 0.0
  70. self._toQuiet = 0.0
  71. self._playful = 0.0
  72. self._naiv = 0.0
  73. self._freezy = 0.0
  74. self._hot = 0.0
  75. self._lonely = 0.0
  76. self._humanity = 0.0
  77. self._soziality = 0.0
  78. self._lastTimeToLoud = 0.0
  79. self._lastTimeToQuiet = 0.0
  80. self._lastTimeAngry = 0.0
  81. self._lastTimeLonely = 0.0
  82. self._locked_angry = -1.0
  83. self._locked_aroused = -1.0
  84. self._locked_hungry = -1.0
  85. self._locked_happyness = -1.0
  86. self._locked_funny = -1.0
  87. self._locked_annoyed = -1.0
  88. self._locked_irritated = -1.0
  89. self._locked_bored = -1.0
  90. self._locked_intelligent = -1.0
  91. self._locked_sleepy = -1.0
  92. self._locked_energy = -1.0
  93. self._locked_exhausted = -1.0
  94. self._locked_depressive = -1.0
  95. self._locked_sad = -1.0
  96. self._locked_useless = -1.0
  97. self._locked_usefull = -1.0
  98. self._locked_compfortable = -1.0
  99. self._locked_temperate = -1.0
  100. self._locked_shy = -1.0
  101. self._locked_excited = -1.0
  102. self._locked_toLoud = -1.0
  103. self._locked_toQuiet = -1.0
  104. self._locked_playful = -1.0
  105. self._locked_naiv = -1.0
  106. self._locked_freezy = -1.0
  107. self._locked_hot = -1.0
  108. self._locked_lonely = -1.0
  109. self._locked_humanity = -1.0
  110. self._locked_soziality = -1.0
  111. self.textconfig = TextConfig.TextConfig("cache/stats.txt")
  112. self.Load()
  113. self.Thread_Save = RepeatTimer(self.SAVE_STATS_INTERVAL*60, self.Save)
  114. self.Thread_Save.start()
  115. if(True):
  116. config = configparser.ConfigParser()
  117. config.read('config/stats.ini')
  118. if "Locked_Stats" in config:
  119. if "angry" in config["Locked_Stats"]:
  120. self._locked_angry = float(config["Locked_Stats"]["angry"])
  121. if "aroused" in config["Locked_Stats"]:
  122. self._locked_aroused = float(config["Locked_Stats"]["aroused"])
  123. if "hungry" in config["Locked_Stats"]:
  124. self._locked_hungry = float(config["Locked_Stats"]["hungry"])
  125. if "happyness" in config["Locked_Stats"]:
  126. self._locked_happyness = float(config["Locked_Stats"]["happyness"])
  127. if "funny" in config["Locked_Stats"]:
  128. self._locked_funny = float(config["Locked_Stats"]["funny"])
  129. if "annoyed" in config["Locked_Stats"]:
  130. self._locked_annoyed = float(config["Locked_Stats"]["annoyed"])
  131. if "irritated" in config["Locked_Stats"]:
  132. self._locked_irritated = float(config["Locked_Stats"]["irritated"])
  133. if "bored" in config["Locked_Stats"]:
  134. self._locked_bored = float(config["Locked_Stats"]["bored"])
  135. if "intelligent" in config["Locked_Stats"]:
  136. self._locked_intelligent = float(config["Locked_Stats"]["intelligent"])
  137. if "sleepy" in config["Locked_Stats"]:
  138. self._locked_sleepy = float(config["Locked_Stats"]["sleepy"])
  139. if "energy" in config["Locked_Stats"]:
  140. self._locked_energy = float(config["Locked_Stats"]["energy"])
  141. if "exhausted" in config["Locked_Stats"]:
  142. self._locked_exhausted = float(config["Locked_Stats"]["exhausted"])
  143. if "depressive" in config["Locked_Stats"]:
  144. self._locked_depressive = float(config["Locked_Stats"]["depressive"])
  145. if "sad" in config["Locked_Stats"]:
  146. self._locked_sad = float(config["Locked_Stats"]["sad"])
  147. if "useless" in config["Locked_Stats"]:
  148. self._locked_useless = float(config["Locked_Stats"]["useless"])
  149. if "usefull" in config["Locked_Stats"]:
  150. self._locked_usefull = float(config["Locked_Stats"]["usefull"])
  151. if "compfortable" in config["Locked_Stats"]:
  152. self._locked_compfortable = float(config["Locked_Stats"]["compfortable"])
  153. if "temperate" in config["Locked_Stats"]:
  154. self._locked_temperate = float(config["Locked_Stats"]["temperate"])
  155. if "shy" in config["Locked_Stats"]:
  156. self._locked_shy = float(config["Locked_Stats"]["shy"])
  157. if "excited" in config["Locked_Stats"]:
  158. self._locked_excited = float(config["Locked_Stats"]["excited"])
  159. if "toLoud" in config["Locked_Stats"]:
  160. self._locked_toLoud = float(config["Locked_Stats"]["toLoud"])
  161. if "toQuiet" in config["Locked_Stats"]:
  162. self._locked_toQuiet = float(config["Locked_Stats"]["toQuiet"])
  163. if "playful" in config["Locked_Stats"]:
  164. self._locked_playful = float(config["Locked_Stats"]["playful"])
  165. if "naiv" in config["Locked_Stats"]:
  166. self._locked_naiv = float(config["Locked_Stats"]["naiv"])
  167. if "freezy" in config["Locked_Stats"]:
  168. self._locked_freezy = float(config["Locked_Stats"]["freezy"])
  169. if "hot" in config["Locked_Stats"]:
  170. self._locked_hot = float(config["Locked_Stats"]["hot"])
  171. if "lonely" in config["Locked_Stats"]:
  172. self._locked_lonely = float(config["Locked_Stats"]["lonely"])
  173. if "humanity" in config["Locked_Stats"]:
  174. self._locked_humanity = float(config["Locked_Stats"]["humanity"])
  175. if "soziality" in config["Locked_Stats"]:
  176. self._locked_soziality = float(config["Locked_Stats"]["soziality"])
  177. @property
  178. def angry(self) -> float:
  179. if self._locked_angry >= 0:
  180. return self._locked_angry
  181. return self._angry
  182. @angry.setter
  183. def angry(self, value:float):
  184. if value<0:
  185. self._aroused = 0
  186. elif value > self.MAX_VALUE:
  187. self._aroused = self.MAX_VALUE
  188. else:
  189. self._aroused = value
  190. if value > 0:
  191. self._lastTimeAngry = time.time()
  192. @property
  193. def aroused(self) -> float:
  194. if self._locked_aroused >= 0:
  195. return self._locked_aroused
  196. return self._aroused
  197. @aroused.setter
  198. def aroused(self, value:float):
  199. if value<0:
  200. self._aroused = 0
  201. elif value > self.MAX_VALUE:
  202. self._aroused = self.MAX_VALUE
  203. else:
  204. self._aroused = value
  205. @property
  206. def hungry(self) -> float:
  207. if self._locked_hungry >= 0:
  208. return self._locked_hungry
  209. return self._hungry
  210. @hungry.setter
  211. def hungry(self, value:float):
  212. if value<0:
  213. self._hungry = 0
  214. elif value > self.MAX_VALUE:
  215. self._hungry = self.MAX_VALUE
  216. else:
  217. self._hungry = value
  218. @property
  219. def happyness(self) -> float:
  220. if self._locked_happyness >= 0:
  221. return self._locked_happyness
  222. return self._happyness
  223. @happyness.setter
  224. def happyness(self, value:float):
  225. if value<0:
  226. self._happyness = 0
  227. elif value > self.MAX_VALUE:
  228. self._happyness = self.MAX_VALUE
  229. else:
  230. self._happyness = value
  231. @property
  232. def funny(self) -> float:
  233. if self._locked_funny >= 0:
  234. return self._locked_funny
  235. return self._funny
  236. @funny.setter
  237. def funny(self, value:float):
  238. if value<0:
  239. self._funny = 0
  240. elif value > self.MAX_VALUE:
  241. self._funny = self.MAX_VALUE
  242. else:
  243. self._funny = value
  244. @property
  245. def annoyed(self) -> float:
  246. if self._locked_annoyed >= 0:
  247. return self._locked_annoyed
  248. return self._annoyed
  249. @annoyed.setter
  250. def annoyed(self, value:float):
  251. if value<0:
  252. self._annoyed = 0
  253. elif value > self.MAX_VALUE:
  254. self._annoyed = self.MAX_VALUE
  255. else:
  256. self._annoyed = value
  257. @property
  258. def irritated(self) -> float:
  259. if self._locked_irritated >= 0:
  260. return self._locked_irritated
  261. return self._irritated
  262. @irritated.setter
  263. def irritated(self, value:float):
  264. if value<0:
  265. self._irritated = 0
  266. elif value > self.MAX_VALUE:
  267. self._irritated = self.MAX_VALUE
  268. else:
  269. self._irritated = value
  270. @property
  271. def bored(self) -> float:
  272. if self._locked_bored >= 0:
  273. return self._locked_bored
  274. return self._bored
  275. @bored.setter
  276. def bored(self, value:float):
  277. if value<0:
  278. self._bored = 0
  279. elif value > self.MAX_VALUE:
  280. self._bored = self.MAX_VALUE
  281. else:
  282. self._bored = value
  283. @property
  284. def intelligent(self) -> float:
  285. if self._locked_intelligent >= 0:
  286. return self._locked_intelligent
  287. return self._intelligent
  288. @intelligent.setter
  289. def intelligent(self, value:float):
  290. if value<0:
  291. self._intelligent = 0
  292. elif value > self.MAX_VALUE:
  293. self._intelligent = self.MAX_VALUE
  294. else:
  295. self._intelligent = value
  296. @property
  297. def sleepy(self) -> float:
  298. if self._locked_sleepy >= 0:
  299. return self._locked_sleepy
  300. return self._sleepy
  301. @sleepy.setter
  302. def sleepy(self, value:float):
  303. if value<0:
  304. self._sleepy = 0
  305. elif value > self.MAX_VALUE:
  306. self._sleepy = self.MAX_VALUE
  307. else:
  308. self._sleepy = value
  309. @property
  310. def energy(self) -> float:
  311. if self._locked_energy >= 0:
  312. return self._locked_energy
  313. return self._energy
  314. @energy.setter
  315. def energy(self, value:float):
  316. if value<0:
  317. self._energy = 0
  318. elif value > self.MAX_VALUE:
  319. self._energy = self.MAX_VALUE
  320. else:
  321. self._energy = value
  322. @property
  323. def exhausted(self) -> float:
  324. if self._locked_exhausted >= 0:
  325. return self._locked_exhausted
  326. return self._exhausted
  327. @exhausted.setter
  328. def exhausted(self, value:float):
  329. if value<0:
  330. self._exhausted = 0
  331. elif value > self.MAX_VALUE:
  332. self._exhausted = self.MAX_VALUE
  333. else:
  334. self._exhausted = value
  335. @property
  336. def depressive(self) -> float:
  337. if self._locked_depressive >= 0:
  338. return self._locked_depressive
  339. return self._depressive
  340. @depressive.setter
  341. def depressive(self, value:float):
  342. if value<0:
  343. self._depressive = 0
  344. elif value > self.MAX_VALUE:
  345. self._depressive = self.MAX_VALUE
  346. else:
  347. self._depressive = value
  348. @property
  349. def sad(self) -> float:
  350. if self._locked_sad >= 0:
  351. return self._locked_sad
  352. return self._sad
  353. @sad.setter
  354. def sad(self, value:float):
  355. if value<0:
  356. self._sad = 0
  357. elif value > self.MAX_VALUE:
  358. self._sad = self.MAX_VALUE
  359. else:
  360. self._sad = value
  361. @property
  362. def useless(self) -> float:
  363. if self._locked_useless >= 0:
  364. return self._locked_useless
  365. return self._useless
  366. @useless.setter
  367. def useless(self, value):
  368. if value<0:
  369. self._useless = 0
  370. elif value > self.MAX_VALUE:
  371. self._useless = self.MAX_VALUE
  372. else:
  373. self._useless = value
  374. @property
  375. def usefull(self) -> float:
  376. if self._locked_usefull >= 0:
  377. return self._locked_usefull
  378. return self._usefull
  379. @usefull.setter
  380. def usefull(self, value:float):
  381. if value<0:
  382. self._usefull = 0
  383. elif value > self.MAX_VALUE:
  384. self._usefull = self.MAX_VALUE
  385. else:
  386. self._usefull = value
  387. @property
  388. def compfortable(self) -> float:
  389. if self._locked_compfortable >= 0:
  390. return self._locked_compfortable
  391. return self._compfortable
  392. @compfortable.setter
  393. def compfortable(self, value:float):
  394. if value<0:
  395. self._compfortable = 0
  396. elif value > self.MAX_VALUE:
  397. self._compfortable = self.MAX_VALUE
  398. else:
  399. self._compfortable = value
  400. @property
  401. def temperate(self) -> float:
  402. if self._locked_temperate >= 0:
  403. return self._locked_temperate
  404. return self._temperate
  405. @temperate.setter
  406. def temperate(self, value:float):
  407. if value<0:
  408. self._temperate = 0
  409. elif value > self.MAX_VALUE:
  410. self._temperate = self.MAX_VALUE
  411. else:
  412. self._temperate = value
  413. @property
  414. def shy(self) -> float:
  415. if self._locked_shy >= 0:
  416. return self._locked_shy
  417. return self._shy
  418. @shy.setter
  419. def shy(self, value:float):
  420. if value<0:
  421. self._shy = 0
  422. elif value > self.MAX_VALUE:
  423. self._shy = self.MAX_VALUE
  424. else:
  425. self._shy = value
  426. @property
  427. def excited(self) -> float:
  428. if self._locked_excited >= 0:
  429. return self._locked_excited
  430. return self._excited
  431. @excited.setter
  432. def excited(self, value:float):
  433. if value<0:
  434. self._excited = 0
  435. elif value > self.MAX_VALUE:
  436. self._excited = self.MAX_VALUE
  437. else:
  438. self._excited = value
  439. @property
  440. def toLoud(self) -> float:
  441. if self._locked_toLoud >= 0:
  442. return self._locked_toLoud
  443. return self._toLoud
  444. @toLoud.setter
  445. def toLoud(self, value:float):
  446. if value<0:
  447. self._toLoud = 0
  448. elif value > self.MAX_VALUE:
  449. self._toLoud = self.MAX_VALUE
  450. else:
  451. self._toLoud = value
  452. if value > 0:
  453. lastTimeToLoud = time.time()
  454. @property
  455. def toQuiet(self) -> float:
  456. if self._locked_toQuiet >= 0:
  457. return self._locked_toQuiet
  458. return self._toQuiet
  459. @toQuiet.setter
  460. def toQuiet(self, value:float):
  461. if value<0:
  462. self._toQuiet = 0
  463. elif value > self.MAX_VALUE:
  464. self._toQuiet = self.MAX_VALUE
  465. else:
  466. self._toQuiet = value
  467. if value > 0:
  468. lastTimeToQuiet = time.time()
  469. @property
  470. def playful(self) -> float:
  471. if self._locked_playful >= 0:
  472. return self._locked_playful
  473. return self._playful
  474. @playful.setter
  475. def playful(self, value:float):
  476. if value<0:
  477. self._playful = 0
  478. elif value > self.MAX_VALUE:
  479. self._playful = self.MAX_VALUE
  480. else:
  481. self._playful = value
  482. @property
  483. def naiv(self) -> float:
  484. if self._locked_naiv >= 0:
  485. return self._locked_naiv
  486. return self._naiv
  487. @naiv.setter
  488. def naiv(self, value:float):
  489. if value<0:
  490. self._naiv = 0
  491. elif value > self.MAX_VALUE:
  492. self._naiv = self.MAX_VALUE
  493. else:
  494. self._naiv = value
  495. @property
  496. def freezy(self) -> float:
  497. if self._locked_freezy >= 0:
  498. return self._locked_freezy
  499. return self._freezy
  500. @freezy.setter
  501. def freezy(self, value:float):
  502. if value<0:
  503. self._freezy = 0
  504. elif value > self.MAX_VALUE:
  505. self._freezy = self.MAX_VALUE
  506. else:
  507. self._freezy = value
  508. @property
  509. def hot(self) -> float:
  510. if self._locked_hot >= 0:
  511. return self._locked_hot
  512. return self._hot
  513. @hot.setter
  514. def hot(self, value:float):
  515. if value<0:
  516. self._hot = 0
  517. elif value > self.MAX_VALUE:
  518. self._hot = self.MAX_VALUE
  519. else:
  520. self._hot = value
  521. @property
  522. def humanity(self) -> float:
  523. if self._locked_humanity >= 0:
  524. return self._locked_humanity
  525. return self._humanity
  526. @humanity.setter
  527. def humanity(self, value:float):
  528. if value<0:
  529. self._humanity = 0
  530. elif value > self.MAX_VALUE:
  531. self._humanity = self.MAX_VALUE
  532. else:
  533. self._humanity = value
  534. @property
  535. def lonely(self) -> float:
  536. if self._locked_lonely >= 0:
  537. return self._locked_lonely
  538. return self._lonely
  539. @lonely.setter
  540. def lonely(self, value:float):
  541. if value<0:
  542. self._lonely = 0
  543. elif value > self.MAX_VALUE:
  544. self._lonely = self.MAX_VALUE
  545. else:
  546. self._lonely = value
  547. if value > 0:
  548. self._lastTimeLonely = time.time()
  549. @property
  550. def soziality(self) -> float:
  551. if self._locked_soziality >= 0:
  552. return self._locked_soziality
  553. return self._soziality
  554. @soziality.setter
  555. def soziality(self, value:float):
  556. if value<0:
  557. self._soziality = 0
  558. elif value > self.MAX_VALUE:
  559. self._soziality = self.MAX_VALUE
  560. else:
  561. self._soziality = value
  562. @property
  563. def lastTimeToQuiet(self):
  564. return self._lastTimeToQuiet
  565. @property
  566. def lastTimeToLoud(self):
  567. return self._lastTimeToLoud
  568. @property
  569. def lastTimeAngry(self):
  570. return self._lastTimeAngry
  571. @property
  572. def lastTimeLonely(self):
  573. return self._lastTimeLonely
  574. def set(self, name:str, val:float) -> bool:
  575. n = name.lower()
  576. if n=="angry": self.angry = val
  577. elif n=="aroused": self.aroused = val
  578. elif n=="hungry": self.hungry = val
  579. elif n=="happyness": self.happyness = val
  580. elif n=="funny": self.funny = val
  581. elif n=="annoyed": self.annoyed = val
  582. elif n=="irritated": self.irritated = val
  583. elif n=="bored": self.bored = val
  584. elif n=="intelligent": self.intelligent = val
  585. elif n=="sleepy": self.sleepy = val
  586. elif n=="energy": self.energy = val
  587. elif n=="exhausted": self.exhausted = val
  588. elif n=="depressive": self.depressive = val
  589. elif n=="sad": self.sad = val
  590. elif n=="useless": self.useless = val
  591. elif n=="usefull": self.usefull = val
  592. elif n=="compfortable": self.compfortable = val
  593. elif n=="temperate": self.temperate = val
  594. elif n=="shy": self.shy = val
  595. elif n=="excited": self.excited = val
  596. elif n=="toLoud": self.toLoud = val
  597. elif n=="toQuiet": self.toQuiet = val
  598. elif n=="playful": self.playful = val
  599. elif n=="naiv": self.naiv = val
  600. elif n=="freezy": self.freezy = val
  601. elif n=="hot": self.hot = val
  602. elif n=="humanity": self.humanity = val
  603. elif n=="lonely": self.lonely = val
  604. elif n=="soziality": self.soziality = val
  605. else: return False
  606. return True
  607. def get(self, name:str) -> float:
  608. n = name.lower()
  609. if n=="angry": return self.angry
  610. elif n=="aroused": return self.aroused
  611. elif n=="hungry": return self.hungry
  612. elif n=="happyness": return self.happyness
  613. elif n=="funny": return self.funny
  614. elif n=="annoyed": return self.annoyed
  615. elif n=="irritated": return self.irritated
  616. elif n=="bored": return self.bored
  617. elif n=="intelligent": return self.intelligent
  618. elif n=="sleepy": return self.sleepy
  619. elif n=="energy": return self.energy
  620. elif n=="exhausted": return self.exhausted
  621. elif n=="depressive": return self.depressive
  622. elif n=="sad": return self.sad
  623. elif n=="useless": return self.useless
  624. elif n=="usefull": return self.usefull
  625. elif n=="compfortable": return self.compfortable
  626. elif n=="temperate": return self.temperate
  627. elif n=="shy": return self.shy
  628. elif n=="excited": return self.excited
  629. elif n=="toLoud": return self.toLoud
  630. elif n=="toQuiet": return self.toQuiet
  631. elif n=="playful": return self.playful
  632. elif n=="naiv": return self.naiv
  633. elif n=="freezy": return self.freezy
  634. elif n=="hot": return self.hot
  635. elif n=="humanity": return self.humanity
  636. elif n=="lonely": return self.lonely
  637. elif n=="soziality": return self.soziality
  638. else: return -1.0
  639. def Save(self):
  640. self.textconfig.setValue({
  641. "max": self.MAX_VALUE,
  642. "angry": self._angry,
  643. "aroused": self.aroused,
  644. "hungry": self.hungry,
  645. "happyness": self._happyness,
  646. "funny": self._funny,
  647. "annoyed":self._annoyed,
  648. "irritated": self.irritated,
  649. "bored": self.bored,
  650. "intelligent": self.intelligent,
  651. "sleepy": self.sleepy,
  652. "energy": self.energy,
  653. "exhausted": self.exhausted,
  654. "depressive": self.depressive,
  655. "sad": self.sad,
  656. "useless": self.useless,
  657. "usefull": self.usefull,
  658. "compfortable": self.compfortable,
  659. "temperate": self.temperate,
  660. "shy": self.shy,
  661. "excited": self.excited,
  662. "toLoud": self.toLoud,
  663. "toQuiet": self.toQuiet,
  664. "playful": self.playful,
  665. "naiv": self.naiv,
  666. "freezy": self.freezy,
  667. "hot": self.hot,
  668. "humanity": self.humanity,
  669. "lonely": self.lonely,
  670. "soziality": self.soziality,
  671. "lastTimeToLoud": self.lastTimeToLoud,
  672. "lastTimeToQuiet": self.lastTimeToQuiet,
  673. "lastTimeAngry": self.lastTimeAngry,
  674. "lastTimeLonely": self.lastTimeLonely,
  675. "lastUpdate": self.lastUpdate
  676. })
  677. self.textconfig.Save()
  678. def Save(self, file = "stats.txt"):
  679. if os.path.isfile(file):
  680. os.remove(file)
  681. with open(file, 'w') as f:
  682. f.writelines([
  683. "max "+str(self.MAX_VALUE)+"\n",
  684. "angry "+str(self.angry)+"\n",
  685. "aroused "+str(self.aroused)+"\n",
  686. "hungry "+str(self.hungry)+"\n",
  687. "happyness "+str(self.happyness)+"\n",
  688. "funny "+str(self.funny)+"\n",
  689. "annoyed "+str(self.annoyed)+"\n",
  690. "irritated "+str(self.irritated)+"\n",
  691. "bored "+str(self.bored)+"\n",
  692. "intelligent "+str(self.intelligent)+"\n",
  693. "sleepy "+str(self.sleepy)+"\n",
  694. "energy "+str(self.energy)+"\n",
  695. "exhausted "+str(self.exhausted)+"\n",
  696. "depressive "+str(self.depressive)+"\n",
  697. "sad "+str(self.sad)+"\n",
  698. "useless "+str(self.useless)+"\n",
  699. "usefull "+str(self.usefull)+"\n",
  700. "compfortable "+str(self.compfortable)+"\n",
  701. "temperate "+str(self.temperate)+"\n",
  702. "shy "+str(self.shy)+"\n",
  703. "excited "+str(self.excited)+"\n",
  704. "toLoud "+str(self.toLoud)+"\n",
  705. "toQuiet "+str(self.toQuiet)+"\n",
  706. "playful "+str(self.playful)+"\n",
  707. "naiv "+str(self.naiv)+"\n",
  708. "freezy "+str(self.freezy)+"\n",
  709. "hot "+str(self.hot)+"\n",
  710. "humanity "+str(self.humanity)+"\n",
  711. "lonely "+str(self.lonely)+"\n",
  712. "soziality "+str(self.soziality)+"\n",
  713. "\n",
  714. "lastTimeToLoud "+str(self.lastTimeToLoud)+"\n",
  715. "lastTimeToQuiet "+str(self.lastTimeToQuiet)+"\n",
  716. "lastTimeAngry "+str(self.lastTimeAngry)+"\n",
  717. "lastTimeLonely "+str(self.lastTimeLonely)+"\n",
  718. "lastUpdate "+str(self.lastUpdate)+"\n"
  719. ])
  720. def Load(self, file = "stats.txt"):
  721. if os.path.isfile(file) == False:
  722. return False
  723. #lines=[]
  724. count=0
  725. max = self.MAX_VALUE
  726. #lines = self._loadTextConfig("stats.txt")
  727. self.textconfig.Load()
  728. lines = self.textconfig.getItems()
  729. count = self.textconfig.count
  730. if count>0:
  731. for c in range(0, count):
  732. itm = lines[c]
  733. if itm["var"]=="angry": self.angry = float(itm["val"]) / max * self.MAX_VALUE
  734. elif itm["var"]=="aroused": self.aroused = float(itm["val"]) / max * self.MAX_VALUE
  735. elif itm["var"]=="hungry": self.hungry = float(itm["val"]) / max * self.MAX_VALUE
  736. elif itm["var"]=="happyness": self.happyness = float(itm["val"]) / max * self.MAX_VALUE
  737. elif itm["var"]=="funny": self.funny = float(itm["val"]) / max * self.MAX_VALUE
  738. elif itm["var"]=="annoyed": self.annoyed = float(itm["val"]) / max * self.MAX_VALUE
  739. elif itm["var"]=="irritated": self.irritated = float(itm["val"]) / max * self.MAX_VALUE
  740. elif itm["var"]=="bored": self.bored = float(itm["val"]) / max * self.MAX_VALUE
  741. elif itm["var"]=="intelligent": self.intelligent = float(itm["val"]) / max * self.MAX_VALUE
  742. elif itm["var"]=="sleepy": self.sleepy = float(itm["val"]) / max * self.MAX_VALUE
  743. elif itm["var"]=="energy": self.energy = float(itm["val"]) / max * self.MAX_VALUE
  744. elif itm["var"]=="exhausted": self.exhausted = float(itm["val"]) / max * self.MAX_VALUE
  745. elif itm["var"]=="depressive": self.depressive = float(itm["val"]) / max * self.MAX_VALUE
  746. elif itm["var"]=="sad": self.sad = float(itm["val"]) / max * self.MAX_VALUE
  747. elif itm["var"]=="useless": self.useless = float(itm["val"]) / max * self.MAX_VALUE
  748. elif itm["var"]=="usefull": self.usefull = float(itm["val"]) / max * self.MAX_VALUE
  749. elif itm["var"]=="compfortable": self.compfortable = float(itm["val"]) / max * self.MAX_VALUE
  750. elif itm["var"]=="temperate": self.temperate = float(itm["val"]) / max * self.MAX_VALUE
  751. elif itm["var"]=="shy": self.shy = float(itm["val"]) / max * self.MAX_VALUE
  752. elif itm["var"]=="excited": self.excited = float(itm["val"]) / max * self.MAX_VALUE
  753. elif itm["var"]=="toLoud": self.toLoud = float(itm["val"]) / max * self.MAX_VALUE
  754. elif itm["var"]=="toQuiet": self.toQuiet = float(itm["val"]) / max * self.MAX_VALUE
  755. elif itm["var"]=="playful": self.playful = float(itm["val"]) / max * self.MAX_VALUE
  756. elif itm["var"]=="naiv": self.naiv = float(itm["val"]) / max * self.MAX_VALUE
  757. elif itm["var"]=="freezy": self.freezy = float(itm["val"]) / max * self.MAX_VALUE
  758. elif itm["var"]=="hot": self.hot = float(itm["val"]) / max * self.MAX_VALUE
  759. elif itm["var"]=="humanity": self.humanity = float(itm["val"]) / max * self.MAX_VALUE
  760. elif itm["var"]=="lonely": self.lonely = float(itm["val"]) / max * self.MAX_VALUE
  761. elif itm["var"]=="soziality": self.soziality = float(itm["val"]) / max * self.MAX_VALUE
  762. elif itm["var"]=="lastTimeToLoud": self._lastTimeToLoud = float(itm["val"]) / max * self.MAX_VALUE
  763. elif itm["var"]=="lastTimeToQuiet": self._lastTimeToQuiet = float(itm["val"]) / max * self.MAX_VALUE
  764. elif itm["var"]=="lastTimeAngry": self._lastTimeAngry = float(itm["val"]) / max * self.MAX_VALUE
  765. elif itm["var"]=="lastTimeLonely": self._lastTimeLonely = float(itm["val"]) / max * self.MAX_VALUE
  766. self.lastUpdate = time.time
  767. return True
  768. return False
  769. def __del__(self):
  770. print("Del DeviceStats")
  771. self.Thread_Save.cancel()
  772. del self._angry
  773. del self._annoyed
  774. del self._aroused
  775. del self._bored
  776. del self._compfortable
  777. del self._depressive
  778. del self._energy
  779. del self._excited
  780. del self._exhausted
  781. del self._freezy
  782. del self._funny
  783. del self._happyness
  784. del self._hot
  785. del self._humanity
  786. del self._hungry
  787. del self._intelligent
  788. del self._irritated
  789. del self._lastTimeToLoud
  790. del self._lastTimeToQuiet
  791. del self._lonely
  792. del self._naiv
  793. del self._playful
  794. del self._sad
  795. del self._shy
  796. del self._sleepy
  797. del self._soziality
  798. del self._temperate
  799. del self._toLoud
  800. del self._toQuiet
  801. del self._usefull
  802. del self._useless
  803. del self._locked_angry
  804. del self._locked_annoyed
  805. del self._locked_aroused
  806. del self._locked_bored
  807. del self._locked_compfortable
  808. del self._locked_depressive
  809. del self._locked_energy
  810. del self._locked_excited
  811. del self._locked_exhausted
  812. del self._locked_freezy
  813. del self._locked_funny
  814. del self._locked_happyness
  815. del self._locked_hot
  816. del self._locked_humanity
  817. del self._locked_hungry
  818. del self._locked_intelligent
  819. del self._locked_irritated
  820. del self._locked_lastTimeToLoud
  821. del self._locked_lastTimeToQuiet
  822. del self._locked_lonely
  823. del self._locked_naiv
  824. del self._locked_playful
  825. del self._locked_sad
  826. del self._locked_shy
  827. del self._locked_sleepy
  828. del self._locked_soziality
  829. del self._locked_temperate
  830. del self._locked_toLoud
  831. del self._locked_toQuiet
  832. del self._locked_usefull
  833. del self._locked_useless
  834. del self.Thread_Save
  835. def getJson(self):
  836. return {
  837. "angry": self.angry,
  838. "aroused": self.aroused,
  839. "hungry": self.hungry,
  840. "happyness": self.happyness,
  841. "funny": self.funny,
  842. "annoyed": self.annoyed,
  843. "irritated": self.irritated,
  844. "bored": self.bored,
  845. "intelligent": self.intelligent,
  846. "sleepy": self.sleepy,
  847. "energy": self.energy,
  848. "exhausted": self.exhausted,
  849. "depressive": self.depressive,
  850. "sad": self.sad,
  851. "useless": self.useless,
  852. "usefull": self.usefull,
  853. "compfortable": self.compfortable,
  854. "temperate": self.temperate,
  855. "shy": self.shy,
  856. "excited": self.excited,
  857. "toLoud": self.toLoud,
  858. "toQuiet": self.toQuiet,
  859. "playful": self.playful,
  860. "naiv": self.naiv,
  861. "freezy": self.freezy,
  862. "hot": self.hot,
  863. "humanity": self.humanity,
  864. "lonely": self.lonely,
  865. "soziality": self.soziality,
  866. "lastTimeToLoud":self.lastTimeToLoud,
  867. "lastTimeToQuiet":self.lastTimeToQuiet,
  868. "lastTimeAngry":self.lastTimeAngry,
  869. "lastTimeLonely":self.lastTimeLonely,
  870. "lastUpdate":self.lastUpdate
  871. }