DeviceStats.py 38 KB

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