Moti Barski super


Posts : 498 Join date : 2011-08-02
 | Subject: dIContacter a skill that manages friends and contacts, also a guideline for data collection skills Tue Aug 18, 2020 11:44 am | |
| living grimoire guideline for writing data collection DISkills see case 400 to 402 it fills the friend data of a respective array of size 3 : 0,1,2 called conditions[] as such : condition 0 <- there is someone there to trigger the alg condition 1 <- name condition 2 <- number this alg enables overrite of data B4 saving it, as well as skipping asking for respective data that has been collected already. an interesting feature of this alg is, the final save can be replaced with a switch case to enter other scenarios : case 402 can turn 500, much like a visual novel. DIContacter java class : - Code:
-
package chobit;
import java.util.Arrays; import java.util.Hashtable; import java.util.Set;
public class DIContacter extends DISkill { private Hashtable<String, String> friends = new Hashtable<>(); // key : name ,value: phone number private Hashtable<String, String> personUtil = new Hashtable<>(); // skill, personUtil name private Hashtable<String, Integer> rank = new Hashtable<>(); // name, rank // map : name, location // personVisual : visual representation Str, name : dictionary private String activePerson = ""; private Hashtable<String, String> phoneBook = new Hashtable<>();// name, phone number private int algMode = 0; private int outputAlg = 0; private TimeGate timeGate = new TimeGate(); private DISkillUtils diSkillUtil = new DISkillUtils(); private RegexUtil regexUtil = new RegexUtil(); private String tempStr = ""; private String lastSummoned = ""; private String lastSkill = ""; // burst alg vars private String[] conditions = new String[3]; // SMS shoud use #prefix private String myNumber = "0506667788"; public DIContacter(Kokoro kokoro) { super(kokoro); Arrays.fill(conditions, ""); }
@Override public void input(String ear, String skin, String eye) { // data provision to external persons : if (ear.contains("what is your number")) { Set<String> keys = personUtil.keySet(); outputAlg = 9002; for (String key : keys) { if (personUtil.get(key).isEmpty()) { outputAlg = 9001; break; } ; } } // ***test initial summon /* * this if is to be deleted and instead use, see marker 1 */ if (ear.contains("t1")) { algMode = 400; timeGate.close(9); outputAlg = 400; } // add contact like in the show chobits if (ear.contains("contact")) { tempStr = this.regexUtil.contactRegex(ear); this.algMode = 11; timeGate.close(2); } // handle order from soul(other diskill) String order = kokoro.toHeart.getOrDefault("DIContacter", ""); // if (order.contains("sms")) { if (order.contains("sms")) { // external skill can summon smsing String target = regexUtil.afterWord("sms", order); if (phoneBook.getOrDefault(target, "").isEmpty()) { outputAlg = 100; } else { lastSummoned = target; outputAlg = 101; } } else { switch (order) { case "ok": rank.put(lastSummoned, 2); // diskilled alg was successful, the friend should rank up case "fail": // diskilled alg was a failure, the friend should rank down int temp = rank.get(lastSummoned); temp--; if (temp < 1) { rank.remove(lastSummoned); personUtil.remove(lastSkill); } break; default: // summon or set time to make friend if (!personUtil.getOrDefault(order, "").isEmpty() && !order.isEmpty()) { outputAlg = inviteOrGoTo(order); lastSummoned = friends.get(personUtil.get(order)); lastSkill = order; } else {// make a friend /* * marker 1 see algmode = 400 can also schedule a time to run friend make alg */ }
break; } } // alg set up switch (algMode) { case 11: if (!this.timeGate.isClosed()) { algMode = 0; } else { String number = regexUtil.phoneRegex1(ear); if (!number.isEmpty()) { phoneBook.put(tempStr, number); outputAlg = 1; } } break; case 400: case 401: case 402: if (!this.timeGate.isClosed()) { algMode = 0; } else { if (eye.contains("movement")) { conditions[0] = "true"; } String regexTemp = ""; // check on data fields with overide for new regex compatible inputs regexTemp = regexUtil.afterWord("name is", ear); if (regexTemp != "") { conditions[1] = regexTemp; } // per condition regexTemp = regexUtil.phoneRegex1(ear); if (regexTemp != "") { conditions[2] = regexTemp; } // per condition if (!conditions[algMode % 100].isEmpty()) { algMode = nextAlg(); outputAlg = algMode; int save = 400 + conditions.length - 1; if (save == 402) { friends.put(conditions[1], conditions[2]); phoneBook.put(conditions[1], conditions[2]); } } } break; default: break; } }
private int nextAlg() { int x = algMode % 100; for (int i = algMode % 100; i < conditions.length; i++) { if (!conditions[i].isEmpty()) { x = i + 1; } else { break; } } x = algMode - algMode % 100 + x; return x; } @Override public void output(Neuron noiron) { switch (outputAlg) { case 1: noiron.algParts.add(diSkillUtil .verbatimGorithm(new APVerbatim("contact added"))); outputAlg = 0; break; case 2: noiron.algParts.add(diSkillUtil.verbatimGorithm(new APVerbatim("invited " + lastSummoned))); outputAlg = 0; break; case 3: // inform, go to + cancel if requested, sms #prefix noiron.algParts.add(diSkillUtil.verbatimGorithm(new APVerbatim("asked to go to " + lastSummoned))); outputAlg = 0; break; case 100: noiron.algParts.add(diSkillUtil.verbatimGorithm(new APVerbatim("cope, not in my contacts"))); outputAlg = 0; break; case 101: noiron.algParts.add(diSkillUtil.verbatimGorithm(new APVerbatim("smsing", lastSummoned))); outputAlg = 0; break; case 400: // inform, go to + cancel if requested, sms #prefix noiron.algParts.add(diSkillUtil.verbatimGorithm(new APVerbatim("seeking friend"))); outputAlg = 0; break; case 401: // inform, go to + cancel if requested, sms #prefix noiron.algParts.add(diSkillUtil.verbatimGorithm(new APVerbatim("what is your name"))); outputAlg = 0; break; case 402: // inform, go to + cancel if requested, sms #prefix noiron.algParts.add(diSkillUtil.verbatimGorithm(new APVerbatim("what is your number"))); outputAlg = 0; break; case 403: // inform, go to + cancel if requested, sms #prefix noiron.algParts.add(diSkillUtil.verbatimGorithm(new APVerbatim("aquired friend"))); outputAlg = 0; break; case 9001: // inform, go to + cancel if requested, sms #prefix noiron.algParts.add(diSkillUtil.verbatimGorithm(new APVerbatim(this.myNumber))); outputAlg = 0; break; case 9002: // inform, go to + cancel if requested, sms #prefix noiron.algParts.add(diSkillUtil.verbatimGorithm(new APVerbatim("I don't need a friend at the moment"))); outputAlg = 0; break; default: break; } }
private int inviteOrGoTo(String diskill) { switch (diskill) { case "ditraveler": return 3;// go to default: return 2;// invite } } }
 _________________ MB over and out  | |
|