Ejemplo n.º 1
0
        public static bool SetPriority_Prefix(ProfessionManager __instance, ProfessionType type, int priority, HumanAI human)
        {
            priority = Mathf.Clamp(priority, 0, MaxPriority);
            if (!__instance.CanHaveProfession(human))
            {
                return(false);
            }

            __instance.professions[type].SetPriorityDirectly(priority);

            // only one at max priority
            if (priority == MaxPriority && type != ProfessionType.Builder)
            {
                foreach (Profession profession in __instance.professions.Values)
                {
                    if (profession.type != type && profession.type != ProfessionType.Builder && profession.priority == MaxPriority)
                    {
                        __instance.SetPriority(profession.type, MaxPriority - 1, human);
                    }
                }
            }

            // cancel work
            if (priority == 0)
            {
                human.AbortInteractionsWhere(x => ProfessionManager.workInteractions[type].Contains(x.interaction));
            }

            // tutorial
            WorldScripts.Instance.tutorialManager.HasAssignedProfession();
            return(false);
        }
Ejemplo n.º 2
0
        public void ProfessionTest()
        {
            JsonSerializerOptions options = GetOptions();

            Profession f = ProfessionManager.GetInstance().GetProfessionData(typeof(Fighter)).GetNewInstance();
            Profession w = ProfessionManager.GetInstance().GetProfessionData(typeof(Wizard)).GetNewInstance();
            Profession t = ProfessionManager.GetInstance().GetProfessionData(typeof(Thief)).GetNewInstance();

            string sf = JsonSerializer.Serialize(f, options);
            string sw = JsonSerializer.Serialize(w, options);
            string st = JsonSerializer.Serialize(t, options);

            Profession fo = JsonSerializer.Deserialize <Fighter>(sf, options);
            Profession wo = JsonSerializer.Deserialize <Wizard>(sw, options);
            Profession to = JsonSerializer.Deserialize <Thief>(st, options);

            IList <Profession> p = new List <Profession>();

            p.Add(f);
            p.Add(w);
            p.Add(t);

            string s = JsonSerializer.Serialize(p, options);

            IList <Profession> r = JsonSerializer.Deserialize <IList <Profession> >(s, options);
        }
Ejemplo n.º 3
0
        public MainForm(Character c = null)
        {
            InitializeComponent();

            //Race
            foreach (Race r in RaceManager.getRaces())
            {
                RaceComboBox.Items.Add(r.RaceName);
            }
            //Class
            foreach (Profession p in ProfessionManager.getProfessions())
            {
                ClassComboBox.Items.Add(p.ProfessionName);
            }

            if (c == null)
            {
                _char = new Character();
            }
            else
            {
                _char = c;
            }

            UpdateView();
        }
Ejemplo n.º 4
0
        public static Int32 DefenseMod(Race r, Profession prof)
        {
            Int32 result = 0;

            result += RaceManager.getLevelUps(r).Defense.Max;

            result += ProfessionManager.getLevelUps(prof).Defense.Max;

            return(result);
        }
Ejemplo n.º 5
0
        public static Int32 SpeedMod(Race r, Profession prof)
        {
            Int32 result = 0;

            result += RaceManager.getLevelUps(r).Speed;

            result += ProfessionManager.getLevelUps(prof).Speed;

            return(result);
        }
Ejemplo n.º 6
0
        public static Stats Default(Race r, Profession prof)
        {
            Stats result = new Stats();

            result = RaceManager.getStart(r);

            result += ProfessionManager.getStart(prof);

            return(result);
        }
Ejemplo n.º 7
0
        public static Int32 AttackMod(Race r, Profession prof)
        {
            Int32 result = 0;

            result += RaceManager.getLevelUps(r).Attack.Max;

            result += ProfessionManager.getLevelUps(prof).Attack.Max;

            return(result);
        }
Ejemplo n.º 8
0
        public void CharacterTest()
        {
            Character c = new Character("Josh", 5, ProfessionManager.GetInstance().GetProfessionData(typeof(Fighter)).GetNewInstance(), RaceManager.GetInstance().GetAllRaces()[0]);

            JsonSerializerOptions options = GetOptions();

            string s = JsonSerializer.Serialize(c, options);

            Character c2 = JsonSerializer.Deserialize <Character>(s, options);

            string s2 = JsonSerializer.Serialize(c2, options);

            Assert.AreEqual(true, c.Name == c2.Name && c2.Profession.Name == c.Profession.Name && s == s2);
        }
Ejemplo n.º 9
0
        //回调遍历节点
        private void AddTree(string ParentID, Node pNode, string table, ComboTree ct)
        {
            CityManager       cm = new CityManager();
            ProfessionManager pm = new ProfessionManager();

            if (ParentID == "")
            {
                ParentID = "D4";
            }
            string    ParentId = "City_ParentID";
            string    Code     = "City_Code";
            string    Name     = "City_Name";
            DataTable dt       = cm.GetList("").Tables[0];

            if (table == "P")
            {
                ParentId = "ST_ParentID";
                Code     = "ST_Code";
                Name     = "ST_Name";
                dt       = pm.GetList("").Tables[0];
            }
            DataView dvTree = new DataView(dt);

            //过滤ParentID,得到当前的所有子节点
            dvTree.RowFilter = string.Format("{0} = '{1}'", ParentId, ParentID);
            foreach (DataRowView Row in dvTree)
            {
                Node node = new Node();
                if (pNode == null)
                {
                    //添加根节点
                    node.Text = XYEEncoding.strHexDecode(Row[Name].ToString());
                    node.Tag  = XYEEncoding.strHexDecode(Row[Code].ToString());
                    ct.Nodes.Add(node);
                    AddTree(Row[Code].ToString(), node, table, ct);
                    //展开第一级节点
                    node.Expand();
                }
                else
                {
                    //添加当前节点的子节点
                    node.Text = XYEEncoding.strHexDecode(Row[Name].ToString());
                    node.Tag  = XYEEncoding.strHexDecode(Row[Code].ToString());
                    pNode.Nodes.Add(node);
                    AddTree(Row[Code].ToString(), node, table, ct);//再次递归
                }
            }
        }
Ejemplo n.º 10
0
        public static void workInteractions_Postfix(ProfessionManager __instance)
        {
            var workInteractions = __instance.GetFieldValue <Dictionary <ProfessionType, HashSet <Interaction> > >("workInteractions");

            if (!workInteractions[ProfessionType.Farmer].Contains(Specialization.TendToFieldsInteraction))
            {
                workInteractions[ProfessionType.Farmer].Add(Specialization.TendToFieldsInteraction);
            }

            if (!workInteractions[ProfessionType.Forester].Contains(Specialization.ChopTrees))
            {
                workInteractions[ProfessionType.Forester].Add(Specialization.ChopTrees);
            }

            if (!workInteractions[ProfessionType.Forester].Contains(Specialization.SowAndCareForTrees))
            {
                workInteractions[ProfessionType.Forester].Add(Specialization.SowAndCareForTrees);
            }
        }
Ejemplo n.º 11
0
        public static bool GetPrimaryProfession_Prefix(ProfessionManager __instance, ref Profession __result)
        {
            int maxPrio = __instance.professions.Values.Where(x => x.type != ProfessionType.Builder).Max(x => x.priority);

            if (maxPrio == 0)
            {
                if (__instance.professions[ProfessionType.Builder].priority != 0)
                {
                    __result = __instance.professions[ProfessionType.Builder];
                }
                else
                {
                    __result = __instance.professions[ProfessionType.NoJob];
                }
            }
            else
            {
                Profession prof = __instance.professions.Values
                                  .Where(x => x.priority == maxPrio && x.type != ProfessionType.Builder)
                                  .MaxBy(x => x.level + x.GetExperienceProgress());
                __result = prof;
            }
            return(false);
        }
Ejemplo n.º 12
0
 public ProfessionsController()
 {
     this.Manager = new ProfessionManager();
 }
Ejemplo n.º 13
0
 public ProfessionTabModel(ProfessionManager professionManager)
 {
     ProfessionItems = professionManager.Professions;
 }
Ejemplo n.º 14
0
 public static bool SetProfession_Prefix(ProfessionManager __instance, ProfessionType type, HumanAI human)
 {
     __instance.SetPriority(type, MaxPriority, human);
     return(false);
 }
Ejemplo n.º 15
0
 public static void GetStartSkills(int startSkillGrade, Profession profession, out int startPhysicalSkills, out int startMentalSkills, out int startCombinedSkills)
 {
     ProfessionManager.GetInstance().GetProfessionData(profession).GetStartSkills(startSkillGrade, out startPhysicalSkills, out startMentalSkills, out startCombinedSkills);
 }
Ejemplo n.º 16
0
 public ProfessionTab()
 {
     InitializeComponent();
     professionTabModel = new ProfessionTabModel(ProfessionManager.GetInstance());
     BindingContext     = professionTabModel;
 }
Ejemplo n.º 17
0
        //aktualizuje finty zloděje
        public void UpdateThiefManeuvers(Character character)
        {
            List <ThiefManeuver> ltm = ((ThiefData)ProfessionManager.GetInstance().GetProfessionData(this)).ThiefManeuvers;

            _thiefManeuvers = ltm.Where(x => x.IsValid(character)).ToList();
        }
Ejemplo n.º 18
0
 public List <string> GetGuildPositions()
 {
     return(((ThiefData)ProfessionManager.GetInstance().GetProfessionData(this)).GuildPositions);
 }
Ejemplo n.º 19
0
 private void ClassComboBox_SelectedIndexChanged(object sender, EventArgs e)
 {
     _char.Class = ProfessionManager.getProfessions()[ClassComboBox.SelectedIndex];
 }