DeviceStats.py 32 KB

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