Exemplo n.º 1
0
 public Quest(string txt, int[] players, Resources resources, int locationID, int charID, Item[] items)
 {
     Text=txt;
     PlayerIDs=players;
     ResourcesNeeded = resources;
     LocationID=locationID;
     CharacterID = charID;
     NeededItems = items;
 }
Exemplo n.º 2
0
        public bool HandleMessage(MessageReceivedEventArgs e)
        {
            object Obj;
            JsonObject Message;

            if (SimpleJson.SimpleJson.TryDeserializeObject(e.Message, out Obj))
                Message = (JsonObject)Obj;
            else
                return false;

            if (!Message.ContainsKey("type"))
                return false;

            int p_id = 0;
            int c_id = 0;
            int l_id = 0;

            if (Message.ContainsKey("player_id"))
                p_id = Convert.ToInt32(Message["player_id"]);
            if (Message.ContainsKey("character_id"))
                c_id = Convert.ToInt32(Message["character_id"]);
            if (Message.ContainsKey("location_id"))
                l_id = Convert.ToInt32(Message["location_id"]);

            switch (Message["type"].ToString())
            {
                case "text": //HANDLED
                    AddLogEntry(Message["text"].ToString());
                    return true;
                case "character": //HANDLED
                    AddLogEntry(Character.GetCharacter(c_id).Name + ": " + Message["text"].ToString());
                    return true;
                case "move": //HANDLED
                    UpdatePlayerLocation(Players[p_id], l_id);
                    AddLogEntry(Players[p_id].Name + " moved to " + Places.AllPlaces[l_id].Name);
                    return true;
                case "next": //HANDLED
                    CurrentPlayer = p_id;
                    try
                    {
                        AddLogEntry("It is " + Players[p_id].Name + "'s turn");
                    }
                    catch {	}
                    return true;
                case "question": //HANDLED
                    JsonArray optionsBuf = (JsonArray)Message["options"];
                    string[] options = new string[optionsBuf.Count];
                    AddLogEntry(Players[p_id].Name + " has to decide on the following: " +  Message["question"].ToString() +" These options are available for selection:");
                    for (int i = 0; i < optionsBuf.Count; i++)
                    {
                        options[i] = optionsBuf[i].ToString();
                        AddLogEntry(options[i]);
                    }
                    if (Array.Exists(Connection.ClientIDs, entry => entry == p_id))
                    {
                        ActingOptionMenu = new ActingOptionMenu(p_id, c_id, Message["question"].ToString(), options, SendResponse);
                        InitControlGroup(ActingOptionMenu);
                        ActingOptionMenu.Visible = true;
                    }
                    return true;
                case "change_cards": //HANDLED // TODO: Replace Keys
                    Resources ResourcesBUF = new Resources(
                        Convert.ToInt32(Message["res1"]),
                        Convert.ToInt32(Message["res2"]),
                        Convert.ToInt32(Message["res3"]),
                        Convert.ToInt32(Message["res4"]));
                    Players[p_id].Resources += ResourcesBUF;
                    AddLogEntry(Players[p_id].Name + " " + ResourcesBUF.ToString());
                    return true;
                case "item_gained": //HANDLED
                    Players[p_id].AddItem(new Item(Message["item_name"].ToString()));
                    AddLogEntry(Players[p_id].Name + " gained " + Message["item_name"].ToString());
                    return true;
                case "item_lost": //HANDLED
                    Players[p_id].DeleteItem(new Item(Message["item_name"].ToString()));
                    AddLogEntry(Players[p_id].Name + " lost " + Message["item_name"].ToString());
                    return true;
                case "win":
                    AddLogEntry(Players[p_id].Name + " won.");
                    return true;
                default:
                    return false;
            }
        }
Exemplo n.º 3
0
        public override string ToString()
        {
            int[] Pos = new int[All.Length];
            int[] Neg = new int[All.Length];

            for (int i = 0; i < All.Length; i++)
            {
                if (All[i] > 0)
                {
                    Pos[i] = All[i];
                    Neg[i] = 0;
                }
                else
                {
                    Pos[i] = 0;
                    Neg[i] = -All[i];
                }
            }

            Resources Positive = new Resources(Pos);
            Resources Negative = new Resources(Neg);

            string Out = "";
            if (Positive != new Resources())
                Out += "gained " + Positive.StructureResources();
            if (Positive != new Resources() && Negative != new Resources())
                Out += " and ";
            if (Negative != new Resources())
                Out += "lost " + Negative.StructureResources();
            return Out;
        }