DeviceStats.py 37 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066
  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._angry = 0
  186. elif value > self.MAX_VALUE:
  187. self._angry = self.MAX_VALUE
  188. else:
  189. self._angry = 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 force(self, name:str, val:float) -> bool:
  608. n = name.lower()
  609. if n=="angry": self._angry = val
  610. elif n=="aroused": self._aroused = val
  611. elif n=="hungry": self._hungry = val
  612. elif n=="happyness": self._happyness = val
  613. elif n=="funny": self._funny = val
  614. elif n=="annoyed": self._annoyed = val
  615. elif n=="irritated": self._irritated = val
  616. elif n=="bored": self._bored = val
  617. elif n=="intelligent": self._intelligent = val
  618. elif n=="sleepy": self._sleepy = val
  619. elif n=="energy": self._energy = val
  620. elif n=="exhausted": self._exhausted = val
  621. elif n=="depressive": self._depressive = val
  622. elif n=="sad": self._sad = val
  623. elif n=="useless": self._useless = val
  624. elif n=="usefull": self._usefull = val
  625. elif n=="compfortable": self._compfortable = val
  626. elif n=="temperate": self._temperate = val
  627. elif n=="shy": self._shy = val
  628. elif n=="excited": self._excited = val
  629. elif n=="toloud": self._toLoud = val
  630. elif n=="toquiet": self._toQuiet = val
  631. elif n=="playful": self._playful = val
  632. elif n=="naiv": self._naiv = val
  633. elif n=="freezy": self._freezy = val
  634. elif n=="hot": self._hot = val
  635. elif n=="humanity": self._humanity = val
  636. elif n=="lonely": self._lonely = val
  637. elif n=="soziality": self._soziality = val
  638. else: return False
  639. return True
  640. def lock(self, name:str, val:float) -> bool:
  641. n = name.lower()
  642. if n=="angry": self._locked_angry = val
  643. elif n=="aroused": self._locked_aroused = val
  644. elif n=="hungry": self._locked_hungry = val
  645. elif n=="happyness": self._locked_happyness = val
  646. elif n=="funny": self._locked_funny = val
  647. elif n=="annoyed": self._locked_annoyed = val
  648. elif n=="irritated": self._locked_irritated = val
  649. elif n=="bored": self._locked_bored = val
  650. elif n=="intelligent": self._locked_intelligent = val
  651. elif n=="sleepy": self._locked_sleepy = val
  652. elif n=="energy": self._locked_energy = val
  653. elif n=="exhausted": self._locked_exhausted = val
  654. elif n=="depressive": self._locked_depressive = val
  655. elif n=="sad": self._locked_sad = val
  656. elif n=="useless": self._locked_useless = val
  657. elif n=="usefull": self._locked_usefull = val
  658. elif n=="compfortable": self._locked_compfortable = val
  659. elif n=="temperate": self._locked_temperate = val
  660. elif n=="shy": self._locked_shy = val
  661. elif n=="excited": self._locked_excited = val
  662. elif n=="toloud": self._locked_toLoud = val
  663. elif n=="toquiet": self._locked_toQuiet = val
  664. elif n=="playful": self._locked_playful = val
  665. elif n=="naiv": self._locked_naiv = val
  666. elif n=="freezy": self._locked_freezy = val
  667. elif n=="hot": self._locked_hot = val
  668. elif n=="humanity": self._locked_humanity = val
  669. elif n=="lonely": self._locked_lonely = val
  670. elif n=="soziality": self._locked_soziality = val
  671. else: return False
  672. return True
  673. def get(self, name:str) -> float:
  674. n = name.lower()
  675. if n=="angry": return self.angry
  676. elif n=="aroused": return self.aroused
  677. elif n=="hungry": return self.hungry
  678. elif n=="happyness": return self.happyness
  679. elif n=="funny": return self.funny
  680. elif n=="annoyed": return self.annoyed
  681. elif n=="irritated": return self.irritated
  682. elif n=="bored": return self.bored
  683. elif n=="intelligent": return self.intelligent
  684. elif n=="sleepy": return self.sleepy
  685. elif n=="energy": return self.energy
  686. elif n=="exhausted": return self.exhausted
  687. elif n=="depressive": return self.depressive
  688. elif n=="sad": return self.sad
  689. elif n=="useless": return self.useless
  690. elif n=="usefull": return self.usefull
  691. elif n=="compfortable": return self.compfortable
  692. elif n=="temperate": return self.temperate
  693. elif n=="shy": return self.shy
  694. elif n=="excited": return self.excited
  695. elif n=="toloud": return self.toLoud
  696. elif n=="toquiet": return self.toQuiet
  697. elif n=="playful": return self.playful
  698. elif n=="naiv": return self.naiv
  699. elif n=="freezy": return self.freezy
  700. elif n=="hot": return self.hot
  701. elif n=="humanity": return self.humanity
  702. elif n=="lonely": return self.lonely
  703. elif n=="soziality": return self.soziality
  704. else: return -1.0
  705. def raw(self, name:str) -> float:
  706. n = name.lower()
  707. if n=="angry": return self._angry
  708. elif n=="aroused": return self._aroused
  709. elif n=="hungry": return self._hungry
  710. elif n=="happyness": return self._happyness
  711. elif n=="funny": return self._funny
  712. elif n=="annoyed": return self._annoyed
  713. elif n=="irritated": return self._irritated
  714. elif n=="bored": return self._bored
  715. elif n=="intelligent": return self._intelligent
  716. elif n=="sleepy": return self._sleepy
  717. elif n=="energy": return self._energy
  718. elif n=="exhausted": return self._exhausted
  719. elif n=="depressive": return self._depressive
  720. elif n=="sad": return self._sad
  721. elif n=="useless": return self._useless
  722. elif n=="usefull": return self._usefull
  723. elif n=="compfortable": return self._compfortable
  724. elif n=="temperate": return self._temperate
  725. elif n=="shy": return self._shy
  726. elif n=="excited": return self._excited
  727. elif n=="toloud": return self._toLoud
  728. elif n=="toquiet": return self._toQuiet
  729. elif n=="playful": return self._playful
  730. elif n=="naiv": return self._naiv
  731. elif n=="freezy": return self._freezy
  732. elif n=="hot": return self._hot
  733. elif n=="humanity": return self._humanity
  734. elif n=="lonely": return self._lonely
  735. elif n=="soziality": return self._soziality
  736. else: return -1.0
  737. def Save(self):
  738. self.textconfig.setValue({
  739. "max": self.MAX_VALUE,
  740. "angry": self._angry,
  741. "aroused": self.aroused,
  742. "hungry": self.hungry,
  743. "happyness": self._happyness,
  744. "funny": self._funny,
  745. "annoyed":self._annoyed,
  746. "irritated": self.irritated,
  747. "bored": self.bored,
  748. "intelligent": self.intelligent,
  749. "sleepy": self.sleepy,
  750. "energy": self.energy,
  751. "exhausted": self.exhausted,
  752. "depressive": self.depressive,
  753. "sad": self.sad,
  754. "useless": self.useless,
  755. "usefull": self.usefull,
  756. "compfortable": self.compfortable,
  757. "temperate": self.temperate,
  758. "shy": self.shy,
  759. "excited": self.excited,
  760. "toLoud": self.toLoud,
  761. "toQuiet": self.toQuiet,
  762. "playful": self.playful,
  763. "naiv": self.naiv,
  764. "freezy": self.freezy,
  765. "hot": self.hot,
  766. "humanity": self.humanity,
  767. "lonely": self.lonely,
  768. "soziality": self.soziality,
  769. "lastTimeToLoud": self.lastTimeToLoud,
  770. "lastTimeToQuiet": self.lastTimeToQuiet,
  771. "lastTimeAngry": self.lastTimeAngry,
  772. "lastTimeLonely": self.lastTimeLonely,
  773. "lastUpdate": self.lastUpdate
  774. })
  775. self.textconfig.Save()
  776. def Save(self, file = "stats.txt"):
  777. if os.path.isfile(file):
  778. os.remove(file)
  779. with open(file, 'w') as f:
  780. f.writelines([
  781. "max "+str(self.MAX_VALUE)+"\n",
  782. "angry "+str(self.angry)+"\n",
  783. "aroused "+str(self.aroused)+"\n",
  784. "hungry "+str(self.hungry)+"\n",
  785. "happyness "+str(self.happyness)+"\n",
  786. "funny "+str(self.funny)+"\n",
  787. "annoyed "+str(self.annoyed)+"\n",
  788. "irritated "+str(self.irritated)+"\n",
  789. "bored "+str(self.bored)+"\n",
  790. "intelligent "+str(self.intelligent)+"\n",
  791. "sleepy "+str(self.sleepy)+"\n",
  792. "energy "+str(self.energy)+"\n",
  793. "exhausted "+str(self.exhausted)+"\n",
  794. "depressive "+str(self.depressive)+"\n",
  795. "sad "+str(self.sad)+"\n",
  796. "useless "+str(self.useless)+"\n",
  797. "usefull "+str(self.usefull)+"\n",
  798. "compfortable "+str(self.compfortable)+"\n",
  799. "temperate "+str(self.temperate)+"\n",
  800. "shy "+str(self.shy)+"\n",
  801. "excited "+str(self.excited)+"\n",
  802. "toLoud "+str(self.toLoud)+"\n",
  803. "toQuiet "+str(self.toQuiet)+"\n",
  804. "playful "+str(self.playful)+"\n",
  805. "naiv "+str(self.naiv)+"\n",
  806. "freezy "+str(self.freezy)+"\n",
  807. "hot "+str(self.hot)+"\n",
  808. "humanity "+str(self.humanity)+"\n",
  809. "lonely "+str(self.lonely)+"\n",
  810. "soziality "+str(self.soziality)+"\n",
  811. "\n",
  812. "lastTimeToLoud "+str(self.lastTimeToLoud)+"\n",
  813. "lastTimeToQuiet "+str(self.lastTimeToQuiet)+"\n",
  814. "lastTimeAngry "+str(self.lastTimeAngry)+"\n",
  815. "lastTimeLonely "+str(self.lastTimeLonely)+"\n",
  816. "lastUpdate "+str(self.lastUpdate)+"\n"
  817. ])
  818. def Load(self, file = "stats.txt"):
  819. if os.path.isfile(file) == False:
  820. return False
  821. #lines=[]
  822. count=0
  823. max = self.MAX_VALUE
  824. #lines = self._loadTextConfig("stats.txt")
  825. self.textconfig.Load()
  826. lines = self.textconfig.getItems()
  827. count = self.textconfig.count
  828. if count>0:
  829. for c in range(0, count):
  830. itm = lines[c]
  831. if itm["var"]=="angry": self.angry = float(itm["val"]) / max * self.MAX_VALUE
  832. elif itm["var"]=="aroused": self.aroused = float(itm["val"]) / max * self.MAX_VALUE
  833. elif itm["var"]=="hungry": self.hungry = float(itm["val"]) / max * self.MAX_VALUE
  834. elif itm["var"]=="happyness": self.happyness = float(itm["val"]) / max * self.MAX_VALUE
  835. elif itm["var"]=="funny": self.funny = float(itm["val"]) / max * self.MAX_VALUE
  836. elif itm["var"]=="annoyed": self.annoyed = float(itm["val"]) / max * self.MAX_VALUE
  837. elif itm["var"]=="irritated": self.irritated = float(itm["val"]) / max * self.MAX_VALUE
  838. elif itm["var"]=="bored": self.bored = float(itm["val"]) / max * self.MAX_VALUE
  839. elif itm["var"]=="intelligent": self.intelligent = float(itm["val"]) / max * self.MAX_VALUE
  840. elif itm["var"]=="sleepy": self.sleepy = float(itm["val"]) / max * self.MAX_VALUE
  841. elif itm["var"]=="energy": self.energy = float(itm["val"]) / max * self.MAX_VALUE
  842. elif itm["var"]=="exhausted": self.exhausted = float(itm["val"]) / max * self.MAX_VALUE
  843. elif itm["var"]=="depressive": self.depressive = float(itm["val"]) / max * self.MAX_VALUE
  844. elif itm["var"]=="sad": self.sad = float(itm["val"]) / max * self.MAX_VALUE
  845. elif itm["var"]=="useless": self.useless = float(itm["val"]) / max * self.MAX_VALUE
  846. elif itm["var"]=="usefull": self.usefull = float(itm["val"]) / max * self.MAX_VALUE
  847. elif itm["var"]=="compfortable": self.compfortable = float(itm["val"]) / max * self.MAX_VALUE
  848. elif itm["var"]=="temperate": self.temperate = float(itm["val"]) / max * self.MAX_VALUE
  849. elif itm["var"]=="shy": self.shy = float(itm["val"]) / max * self.MAX_VALUE
  850. elif itm["var"]=="excited": self.excited = float(itm["val"]) / max * self.MAX_VALUE
  851. elif itm["var"]=="toLoud": self.toLoud = float(itm["val"]) / max * self.MAX_VALUE
  852. elif itm["var"]=="toQuiet": self.toQuiet = float(itm["val"]) / max * self.MAX_VALUE
  853. elif itm["var"]=="playful": self.playful = float(itm["val"]) / max * self.MAX_VALUE
  854. elif itm["var"]=="naiv": self.naiv = float(itm["val"]) / max * self.MAX_VALUE
  855. elif itm["var"]=="freezy": self.freezy = float(itm["val"]) / max * self.MAX_VALUE
  856. elif itm["var"]=="hot": self.hot = float(itm["val"]) / max * self.MAX_VALUE
  857. elif itm["var"]=="humanity": self.humanity = float(itm["val"]) / max * self.MAX_VALUE
  858. elif itm["var"]=="lonely": self.lonely = float(itm["val"]) / max * self.MAX_VALUE
  859. elif itm["var"]=="soziality": self.soziality = float(itm["val"]) / max * self.MAX_VALUE
  860. elif itm["var"]=="lastTimeToLoud": self._lastTimeToLoud = float(itm["val"]) / max * self.MAX_VALUE
  861. elif itm["var"]=="lastTimeToQuiet": self._lastTimeToQuiet = float(itm["val"]) / max * self.MAX_VALUE
  862. elif itm["var"]=="lastTimeAngry": self._lastTimeAngry = float(itm["val"]) / max * self.MAX_VALUE
  863. elif itm["var"]=="lastTimeLonely": self._lastTimeLonely = float(itm["val"]) / max * self.MAX_VALUE
  864. self.lastUpdate = time.time
  865. return True
  866. return False
  867. def __del__(self):
  868. print("Del DeviceStats")
  869. self.Thread_Save.cancel()
  870. del self._angry
  871. del self._annoyed
  872. del self._aroused
  873. del self._bored
  874. del self._compfortable
  875. del self._depressive
  876. del self._energy
  877. del self._excited
  878. del self._exhausted
  879. del self._freezy
  880. del self._funny
  881. del self._happyness
  882. del self._hot
  883. del self._humanity
  884. del self._hungry
  885. del self._intelligent
  886. del self._irritated
  887. del self._lastTimeToLoud
  888. del self._lastTimeToQuiet
  889. del self._lonely
  890. del self._naiv
  891. del self._playful
  892. del self._sad
  893. del self._shy
  894. del self._sleepy
  895. del self._soziality
  896. del self._temperate
  897. del self._toLoud
  898. del self._toQuiet
  899. del self._usefull
  900. del self._useless
  901. del self._locked_angry
  902. del self._locked_annoyed
  903. del self._locked_aroused
  904. del self._locked_bored
  905. del self._locked_compfortable
  906. del self._locked_depressive
  907. del self._locked_energy
  908. del self._locked_excited
  909. del self._locked_exhausted
  910. del self._locked_freezy
  911. del self._locked_funny
  912. del self._locked_happyness
  913. del self._locked_hot
  914. del self._locked_humanity
  915. del self._locked_hungry
  916. del self._locked_intelligent
  917. del self._locked_irritated
  918. del self._locked_lastTimeToLoud
  919. del self._locked_lastTimeToQuiet
  920. del self._locked_lonely
  921. del self._locked_naiv
  922. del self._locked_playful
  923. del self._locked_sad
  924. del self._locked_shy
  925. del self._locked_sleepy
  926. del self._locked_soziality
  927. del self._locked_temperate
  928. del self._locked_toLoud
  929. del self._locked_toQuiet
  930. del self._locked_usefull
  931. del self._locked_useless
  932. del self.Thread_Save
  933. def getJson(self):
  934. return {
  935. "angry": self.angry,
  936. "aroused": self.aroused,
  937. "hungry": self.hungry,
  938. "happyness": self.happyness,
  939. "funny": self.funny,
  940. "annoyed": self.annoyed,
  941. "irritated": self.irritated,
  942. "bored": self.bored,
  943. "intelligent": self.intelligent,
  944. "sleepy": self.sleepy,
  945. "energy": self.energy,
  946. "exhausted": self.exhausted,
  947. "depressive": self.depressive,
  948. "sad": self.sad,
  949. "useless": self.useless,
  950. "usefull": self.usefull,
  951. "compfortable": self.compfortable,
  952. "temperate": self.temperate,
  953. "shy": self.shy,
  954. "excited": self.excited,
  955. "toLoud": self.toLoud,
  956. "toQuiet": self.toQuiet,
  957. "playful": self.playful,
  958. "naiv": self.naiv,
  959. "freezy": self.freezy,
  960. "hot": self.hot,
  961. "humanity": self.humanity,
  962. "lonely": self.lonely,
  963. "soziality": self.soziality,
  964. "lastTimeToLoud":self.lastTimeToLoud,
  965. "lastTimeToQuiet":self.lastTimeToQuiet,
  966. "lastTimeAngry":self.lastTimeAngry,
  967. "lastTimeLonely":self.lastTimeLonely,
  968. "lastUpdate":self.lastUpdate
  969. }