Example #1
0
		private void AddTopicControls(CraftType craft)
		{
			var metadata = craft.Metadata();
			AddControl(new Overlay(metadata.Overlay));
			AddControl(new Label(24, 5, metadata.Name, Font.Large, ColorScheme.LightPurple));
			var nextDescriptionTop = 40;
			foreach (var descriptionLine in metadata.DescriptionLines)
			{
				var top = nextDescriptionTop;
				nextDescriptionTop += 8;
				AddControl(new Label(top, 5, descriptionLine, Font.Normal, ColorScheme.LightPurple));
			}

			var left = metadata.ShowStatsOnBottom ? 5 : 160;
			var nextStatTop = metadata.ShowStatsOnBottom ? 110 : 5;
			var stats = new[]
			{
				Tuple.Create("MAXIMUM SPEED>", metadata.Speed),
				Tuple.Create("ACCELERATION>", metadata.Acceleration),
				Tuple.Create("FUEL CAPACITY>", metadata.Fuel),
				Tuple.Create("WEAPON PODS>", metadata.WeaponCount),
				Tuple.Create("CARGO SPACE>", metadata.Space),
				Tuple.Create("HWP CAPACITY>", metadata.HwpCount)
			};
			foreach (var stat in stats)
			{
				var top = nextStatTop;
				nextStatTop += 8;
				AddControl(new Label(top, left, stat.Item1, Font.Normal, ColorScheme.LightPurple));
				AddControl(new Label(top, left + Font.Normal.MeasureString(stat.Item1) - 1, stat.Item2.FormatNumber(), Font.Normal, ColorScheme.LightAqua));
			}
		}
        protected override void OnLoad(ConfigNode configNode)
        {
            base.OnLoad(configNode);

            url = ConfigNodeUtil.ParseValue<string>(configNode, "url");
            craftType = ConfigNodeUtil.ParseValue<CraftType>(configNode, "craftType");
        }
Example #3
0
        internal override void InternalDeserialize(NetIncomingMessage lidgrenMsg)
        {
            base.InternalDeserialize(lidgrenMsg);

            CraftType = (CraftType)lidgrenMsg.ReadInt32();
            CraftName = lidgrenMsg.ReadString();
        }
Example #4
0
        protected override void OnLoad(ConfigNode configNode)
        {
            base.OnLoad(configNode);

            url       = ConfigNodeUtil.ParseValue <string>(configNode, "url");
            craftType = ConfigNodeUtil.ParseValue <CraftType>(configNode, "craftType");
        }
        private static void SaveCraftFile(CraftType craftType, string craftName, byte[] craftData)
        {
            var savePath = "";

            switch (craftType)
            {
            case CraftType.Vab:
                savePath = System.VabPath;
                break;

            case CraftType.Sph:
                savePath = System.SphPath;
                break;

            case CraftType.Subassembly:
                savePath = System.SubassemblyPath;
                break;
            }

            if (!Directory.Exists(savePath))
            {
                Directory.CreateDirectory(savePath);
            }

            var craftFile = CommonUtil.CombinePaths(savePath, $"{craftName}.craft");

            File.WriteAllBytes(craftFile, craftData);
            ScreenMessages.PostScreenMessage($"Craft {craftName} saved!", 5f, ScreenMessageStyle.UPPER_CENTER);
        }
Example #6
0
    public void Craft_Microwave(MicrowaveController microwave, Item hand, CraftType craftType, CraftTable craftTable)
    {
        if (microwave.isOpen && microwave.itemInside)
        {
            microwave.Close();
        }
        else if (!microwave.isOpen && microwave.itemInside)
        {
            StartCoroutine(microwave.Work());

            ItemCraftData recept = FindRecept(hand, microwave.itemInside, craftType, craftTable);

            if (recept == null)
            {
                Debug.Log("no recept");
                return;
            }

            Item craftResult = recept.recept.craftResult;
            Debug.Log(craftResult.itemName);
            microwave.itemInside = craftResult;

            AddExpReward(recept);
        }
    }
 private void DrawUploadScreen()
 {
     foreach (KeyValuePair <CraftType, List <string> > entryType in uploadList)
     {
         GUILayout.Label(entryType.Key.ToString(), labelStyle);
         foreach (string entryName in entryType.Value)
         {
             if (playerList.ContainsKey(dmpSettings.playerName))
             {
                 if (playerList[dmpSettings.playerName].ContainsKey(entryType.Key))
                 {
                     if (playerList[dmpSettings.playerName][entryType.Key].Contains(entryName))
                     {
                         GUI.enabled = false;
                     }
                 }
             }
             if (GUILayout.Button(entryName, buttonStyle))
             {
                 uploadCraftType = entryType.Key;
                 uploadCraftName = entryName;
             }
             GUI.enabled = true;
         }
     }
 }
        private void SaveCraftFile(CraftType craftType, string craftName, byte[] craftData)
        {
            string savePath = "";

            switch (craftType)
            {
            case CraftType.VAB:
                savePath = vabPath;
                break;

            case CraftType.SPH:
                savePath = sphPath;
                break;

            case CraftType.SUBASSEMBLY:
                savePath = subassemblyPath;
                break;
            }
            if (!Directory.Exists(savePath))
            {
                Directory.CreateDirectory(savePath);
            }
            string craftFile = Path.Combine(savePath, craftName + ".craft");

            File.WriteAllBytes(craftFile, craftData);
            ScreenMessages.PostScreenMessage("Craft " + craftName + " saved!", 5f, ScreenMessageStyle.UPPER_CENTER);
        }
Example #9
0
 /// <summary>Sets the selected value of the specified list.</summary>
 /// <param name="listId">The list identifier.</param>
 /// <param name="value">The value to select.</param>
 public override void SetListValue(String listId, String value)
 {
     this._type      = value;
     this._craftType =
         Enum.TryParse <CraftType>(value, ignoreCase: true, result: out var craftType) ?
         craftType :
         default;
 }
Example #10
0
 public static string ToNiceString(this CraftType type)
 {
     return(type switch
     {
         CraftType.Bake => "Bakeable",
         CraftType.Chop => "Choppable",
         _ => type.ToString()
     });
 private static void DownloadCraftFile(string playerName, CraftType craftType, string craftName)
 {
     System.MessageSender.SendMessage(new CraftLibraryRequestMsgData
     {
         PlayerName    = SettingsSystem.CurrentSettings.PlayerName,
         RequestedType = craftType,
         CraftOwner    = playerName,
         RequestedName = craftName
     });
 }
Example #12
0
    void AddExpReward(ItemCraftData itemCraftData)
    {
        CraftType craftType = itemCraftData.craftType;
        float     exp       = itemCraftData.expReward;

        if (craftType == CraftType.Cooking)
        {
            skillsInit.cooking.AddExp(exp);
        }
    }
Example #13
0
    public bool Craft_Table(RaycastHit2D[] hits, Item tool, CraftType craftType, CraftTable craftTable)
    {
        GameObject GameObjOnTable = GetGameObjOnTable(hits);

        if (GameObjOnTable == null)
        {
            Debug.Log("TableIsEmpty");
            return(false);
        }

        Item itemOnTabe = GameObjOnTable.GetComponent <ItemCell>().item;


        ItemCraftData recept = FindRecept(tool, itemOnTabe, craftType, craftTable);

        if (recept == null)
        {
            Debug.Log("no recept");
            return(false);
        }

        if (!IsSuitableMinLvl(recept))
        {
            Debug.Log("recept lvl bigger then skill lvl");
            return(false);
        }

        Item craftResult = recept.recept.craftResult;

        // для вызова actionWindow
        if (itemOnTabe.itemOptionData.actionWindowTag != string.Empty)
        {
            Item _itemOnTabe  = Instantiate(itemOnTabe);
            Item _craftResult = Instantiate(craftResult);

            ActionWindowController actionWindow = Global.Component.GetActionWindowController();
            actionWindow.OpenActionWindow(itemOnTabe.itemOptionData.actionWindowTag);
            actionWindow.InitActioWindow(itemOnTabe.itemOptionData.actionWindowTag,
                                         GameObjOnTable,
                                         _itemOnTabe,
                                         _craftResult);


            //UpdateGameObjItem(GameObjOnTable, craftResult);

            return(recept.removeTool);
        }


        UpdateGameObjItem(GameObjOnTable, craftResult);

        AddExpReward(recept);

        return(recept.removeTool);
    }
Example #14
0
 public CraftRecipe(int id, string name, bool isNeedLearn, CraftType type, int[] needItemIDs, int[] needItemCount, int[] getItemIDs, int[] getItemCount)
 {
     this.ID            = id;
     this.Name          = name;
     this.IsNeedLearn   = isNeedLearn;
     this.Type          = type;
     this.NeedItemIDs   = needItemIDs;
     this.NeedItemCount = needItemCount;
     this.GetItemIDs    = getItemIDs;
     this.GetItemCount  = getItemCount;
 }
Example #15
0
        private static void DownloadCraftFile(string playerName, CraftType craftType, string craftName)
        {
            var msgData = NetworkMain.CliMsgFactory.CreateNewMessageData <CraftLibraryRequestMsgData>();

            msgData.PlayerName    = SettingsSystem.CurrentSettings.PlayerName;
            msgData.RequestedType = craftType;
            msgData.CraftOwner    = playerName;
            msgData.RequestedName = craftName;

            System.MessageSender.SendMessage(msgData);
        }
 private void DownloadCraftFile(string playerName, CraftType craftType, string craftName)
 {
     using (MessageWriter mw = new MessageWriter())
     {
         mw.Write <int>((int)CraftMessageType.REQUEST_FILE);
         mw.Write <string>(dmpSettings.playerName);
         mw.Write <string>(playerName);
         mw.Write <int>((int)craftType);
         mw.Write <string>(craftName);
         networkWorker.SendCraftLibraryMessage(mw.GetMessageBytes());
     }
 }
Example #17
0
        public CraftBuilding(StructureSize size, CraftType craft) : base(size)
        {
            Craft = craft;

            // Hardcoded construction of workable materials
            usableItems = new List <ItemType>();

            if (craft == CraftType.CARPENTERY)
            {
                usableItems.Add(ItemType.WOOD_PINE);
            }
        }
Example #18
0
    bool IsSuitableMinLvl(ItemCraftData itemCraftData)
    {
        CraftType craftType   = itemCraftData.craftType;
        int       minCraftLvl = itemCraftData.craftMinLVL;

        if (craftType == CraftType.Cooking &&
            skillsInit.cooking.GetSkillLvl() >= minCraftLvl)
        {
            return(true);
        }

        return(false);
    }
Example #19
0
        public void Deserialize(NetIncomingMessage lidgrenMsg)
        {
            FolderName = lidgrenMsg.ReadString();
            CraftName  = lidgrenMsg.ReadString();
            CraftType  = (CraftType)lidgrenMsg.ReadInt32();

            NumBytes = lidgrenMsg.ReadInt32();

            if (Data.Length < NumBytes)
            {
                Data = new byte[NumBytes];
            }

            lidgrenMsg.ReadBytes(Data, 0, NumBytes);
        }
Example #20
0
        internal override void InternalDeserialize(NetIncomingMessage lidgrenMsg)
        {
            base.InternalDeserialize(lidgrenMsg);

            UploadType = (CraftType)lidgrenMsg.ReadInt32();
            UploadName = lidgrenMsg.ReadString();

            NumBytes = lidgrenMsg.ReadInt32();

            if (CraftData.Length < NumBytes)
            {
                CraftData = new byte[NumBytes];
            }

            lidgrenMsg.ReadBytes(CraftData, 0, NumBytes);
        }
Example #21
0
        public void Deserialize(NetIncomingMessage lidgrenMsg)
        {
            FolderName = lidgrenMsg.ReadString();
            CraftName  = lidgrenMsg.ReadString();
            CraftType  = (CraftType)lidgrenMsg.ReadInt32();

            NumBytes = lidgrenMsg.ReadInt32();

            if (Data.Length < NumBytes)
            {
                Data = new byte[NumBytes];
            }

            lidgrenMsg.ReadBytes(Data, 0, NumBytes);

            Common.ThreadSafeDecompress(this, ref Data, NumBytes, out NumBytes);
        }
        private void UploadCraftFile(CraftType type, string name)
        {
            string uploadPath = "";

            switch (uploadCraftType)
            {
            case CraftType.VAB:
                uploadPath = vabPath;
                break;

            case CraftType.SPH:
                uploadPath = sphPath;
                break;

            case CraftType.SUBASSEMBLY:
                uploadPath = subassemblyPath;
                break;

            default:
                break;
            }
            string filePath = Path.Combine(uploadPath, name + ".craft");

            if (File.Exists(filePath))
            {
                byte[] fileData = File.ReadAllBytes(filePath);
                using (MessageWriter mw = new MessageWriter())
                {
                    mw.Write <int>((int)CraftMessageType.UPLOAD_FILE);
                    mw.Write <string>(dmpSettings.playerName);
                    mw.Write <int>((int)type);
                    mw.Write <string>(name);
                    mw.Write <byte[]>(fileData);
                    networkWorker.SendCraftLibraryMessage(mw.GetMessageBytes());
                    AddCraftEntry(dmpSettings.playerName, uploadCraftType, uploadCraftName);
                    displayCraftUploadingMessage = true;
                }
            }
            else
            {
                DarkLog.Debug("Cannot upload file, " + filePath + " does not exist!");
            }
        }
 private void AddCraftEntry(string playerName, CraftType craftType, string craftName)
 {
     if (!playersWithCrafts.Contains(playerName))
     {
         playersWithCrafts.Add(playerName);
     }
     if (!playerList.ContainsKey(playerName))
     {
         playerList.Add(playerName, new Dictionary <CraftType, List <string> >());
     }
     if (!playerList[playerName].ContainsKey(craftType))
     {
         playerList[playerName].Add(craftType, new List <string>());
     }
     if (!playerList[playerName][craftType].Contains(craftName))
     {
         DarkLog.Debug("Adding " + craftName + ", type: " + craftType.ToString() + " from " + playerName);
         playerList[playerName][craftType].Add(craftName);
     }
 }
 private static void AddCraftEntry(string playerName, CraftType craftType, string craftName)
 {
     if (!System.PlayersWithCrafts.Contains(playerName))
     {
         System.PlayersWithCrafts.Add(playerName);
     }
     if (!System.PlayerList.ContainsKey(playerName))
     {
         System.PlayerList.Add(playerName, new Dictionary <CraftType, List <string> >());
     }
     if (!System.PlayerList[playerName].ContainsKey(craftType))
     {
         System.PlayerList[playerName].Add(craftType, new List <string>());
     }
     if (!System.PlayerList[playerName][craftType].Contains(craftName))
     {
         LunaLog.Log($"[LMP]: Adding {craftName}, type: {craftType} from {playerName}");
         System.PlayerList[playerName][craftType].Add(craftName);
     }
 }
 private static void DeleteCraftEntry(string playerName, CraftType craftType, string craftName)
 {
     if (System.PlayerList.ContainsKey(playerName) &&
         System.PlayerList[playerName].ContainsKey(craftType) &&
         System.PlayerList[playerName][craftType].Contains(craftName))
     {
         System.PlayerList[playerName][craftType].Remove(craftName);
         if (System.PlayerList[playerName][craftType].Count == 0)
         {
             System.PlayerList[playerName].Remove(craftType);
         }
         if (System.PlayerList[playerName].Count == 0 && playerName != SettingsSystem.CurrentSettings.PlayerName)
         {
             System.PlayerList.Remove(playerName);
             if (System.PlayersWithCrafts.Contains(playerName))
             {
                 System.PlayersWithCrafts.Remove(playerName);
             }
         }
     }
 }
 private void DeleteCraftEntry(string playerName, CraftType craftType, string craftName)
 {
     if (playerList.ContainsKey(playerName))
     {
         if (playerList[playerName].ContainsKey(craftType))
         {
             if (playerList[playerName][craftType].Contains(craftName))
             {
                 playerList[playerName][craftType].Remove(craftName);
                 if (playerList[playerName][craftType].Count == 0)
                 {
                     playerList[playerName].Remove(craftType);
                 }
                 if (playerList[playerName].Count == 0)
                 {
                     if (playerName != dmpSettings.playerName)
                     {
                         playerList.Remove(playerName);
                         if (playersWithCrafts.Contains(playerName))
                         {
                             playersWithCrafts.Remove(playerName);
                         }
                     }
                 }
             }
             else
             {
                 DarkLog.Debug("Cannot remove craft entry " + craftName + " for player " + playerName + ", craft does not exist");
             }
         }
         else
         {
             DarkLog.Debug("Cannot remove craft entry " + craftName + " for player " + playerName + ", player does not have any " + craftType + " entries");
         }
     }
     else
     {
         DarkLog.Debug("Cannot remove craft entry " + craftName + " for player " + playerName + ", no player entry");
     }
 }
Example #27
0
        private void UploadCraftFile(CraftType type, string name)
        {
            var uploadPath = "";

            switch (System.UploadCraftType)
            {
            case CraftType.Vab:
                uploadPath = System.VabPath;
                break;

            case CraftType.Sph:
                uploadPath = System.SphPath;
                break;

            case CraftType.Subassembly:
                uploadPath = System.SubassemblyPath;
                break;
            }
            var filePath = CommonUtil.CombinePaths(uploadPath, $"{name}.craft");

            if (File.Exists(filePath))
            {
                var fileData = File.ReadAllBytes(filePath);

                var msgData = NetworkMain.CliMsgFactory.CreateNewMessageData <CraftLibraryUploadMsgData>();
                msgData.PlayerName = SettingsSystem.CurrentSettings.PlayerName;
                msgData.UploadType = type;
                msgData.UploadName = name;
                msgData.CraftData  = fileData;
                msgData.NumBytes   = fileData.Length;

                System.MessageSender.SendMessage(msgData);
                AddCraftEntry(SettingsSystem.CurrentSettings.PlayerName, System.UploadCraftType, System.UploadCraftName);
                DisplayCraftUploadingMessage = true;
            }
            else
            {
                LunaLog.LogError($"[LMP]: Cannot upload file, {filePath} does not exist!");
            }
        }
        private void UploadCraftFile(CraftType type, string name)
        {
            var uploadPath = "";

            switch (System.UploadCraftType)
            {
            case CraftType.VAB:
                uploadPath = System.VabPath;
                break;

            case CraftType.SPH:
                uploadPath = System.SphPath;
                break;

            case CraftType.SUBASSEMBLY:
                uploadPath = System.SubassemblyPath;
                break;
            }
            var filePath = CommonUtil.CombinePaths(uploadPath, name + ".craft");

            if (File.Exists(filePath))
            {
                var fileData = File.ReadAllBytes(filePath);

                System.MessageSender.SendMessage(new CraftLibraryUploadMsgData
                {
                    PlayerName = SettingsSystem.CurrentSettings.PlayerName,
                    UploadType = type,
                    UploadName = name,
                    CraftData  = fileData
                });
                AddCraftEntry(SettingsSystem.CurrentSettings.PlayerName, System.UploadCraftType, System.UploadCraftName);
                DisplayCraftUploadingMessage = true;
            }
            else
            {
                Debug.LogError("[LMP]: Cannot upload file, " + filePath + " does not exist!");
            }
        }
Example #29
0
    ItemCraftData FindRecept(Item tool, Item originItem, CraftType craftType, CraftTable craftTable)
    {
        List <ItemCraftData> sameTool = new List <ItemCraftData>();

        foreach (var cd in itemCraftData)
        {
            if (cd.recept.craftTool.Find(c => c.IsSameItems(tool)))
            {
                sameTool.Add(cd);
            }
        }

        List <ItemCraftData> sameType = sameTool
                                        .Where(r => r.craftType == craftType)
                                        .Where(r => r.craftTable == craftTable).ToList();

        ItemCraftData recept = sameType
                               .Where(r => r.recept.ingredients[0].itemName.Equals(originItem.itemName))
                               .FirstOrDefault();

        return(recept);
    }
 private void DrawDownloadScreen()
 {
     if (playerList.ContainsKey(selectedPlayer))
     {
         foreach (KeyValuePair <CraftType, List <string> > entry in playerList[selectedPlayer])
         {
             GUILayout.Label(entry.Key.ToString(), labelStyle);
             foreach (string craftName in entry.Value)
             {
                 if (selectedPlayer == dmpSettings.playerName)
                 {
                     //Also draw remove button on player screen
                     GUILayout.BeginHorizontal();
                     if (GUILayout.Button(craftName, buttonStyle))
                     {
                         downloadCraftType = entry.Key;
                         downloadCraftName = craftName;
                     }
                     if (GUILayout.Button("Remove", buttonStyle))
                     {
                         deleteCraftType = entry.Key;
                         deleteCraftName = craftName;
                     }
                     GUILayout.EndHorizontal();
                 }
                 else
                 {
                     if (GUILayout.Button(craftName, buttonStyle))
                     {
                         downloadCraftType = entry.Key;
                         downloadCraftName = craftName;
                     }
                 }
             }
         }
     }
 }
 private void DownloadCraftFile(string playerName, CraftType craftType, string craftName)
 {
     using (MessageWriter mw = new MessageWriter())
     {
         mw.Write<int>((int)CraftMessageType.REQUEST_FILE);
         mw.Write<string>(Settings.fetch.playerName);
         mw.Write<string>(playerName);
         mw.Write<int>((int)craftType);
         mw.Write<string>(craftName);
         NetworkWorker.fetch.SendCraftLibraryMessage(mw.GetMessageBytes());
     }
 }
Example #32
0
 private static TopicMetadata Craft(CraftType craft, params ResearchType[] requiredResearch)
 {
     return new TopicMetadata
     {
         Name = craft.Metadata().Name,
         Category = TopicCategory.CraftAndArmament,
         Scheme = ColorScheme.LightPurple,
         RequiredResearch = requiredResearch,
         Subject = craft
     };
 }
 public CopyCraftFile(string url, CraftType craftType, State onState, List<string> parameter)
     : base(onState, parameter)
 {
     this.url = url;
     this.craftType = craftType;
 }
        private void Update()
        {
            safeDisplay = display;
            if (workerEnabled)
            {
                while (craftAddQueue.Count > 0)
                {
                    CraftChangeEntry cce = craftAddQueue.Dequeue();
                    AddCraftEntry(cce.playerName, cce.craftType, cce.craftName);
                }

                while (craftDeleteQueue.Count > 0)
                {
                    CraftChangeEntry cce = craftDeleteQueue.Dequeue();
                    DeleteCraftEntry(cce.playerName, cce.craftType, cce.craftName);
                }

                while (craftResponseQueue.Count > 0)
                {
                    CraftResponseEntry cre = craftResponseQueue.Dequeue();
                    SaveCraftFile(cre.craftType, cre.craftName, cre.craftData);
                }

                if (uploadCraftName != null)
                {
                    UploadCraftFile(uploadCraftType, uploadCraftName);
                    uploadCraftName = null;
                    uploadCraftType = CraftType.VAB;
                }

                if (downloadCraftName != null)
                {
                    DownloadCraftFile(selectedPlayer, downloadCraftType, downloadCraftName);
                    downloadCraftName = null;
                    downloadCraftType = CraftType.VAB;
                }

                if (deleteCraftName != null)
                {
                    DeleteCraftEntry(Settings.fetch.playerName, deleteCraftType, deleteCraftName);
                    using (MessageWriter mw = new MessageWriter())
                    {
                        mw.Write<int>((int)CraftMessageType.DELETE_FILE);
                        mw.Write<string>(Settings.fetch.playerName);
                        mw.Write<int>((int)deleteCraftType);
                        mw.Write<string>(deleteCraftName);
                        NetworkWorker.fetch.SendCraftLibraryMessage(mw.GetMessageBytes());
                    }
                    deleteCraftName = null;
                    deleteCraftType = CraftType.VAB;
                }

                if (displayCraftUploadingMessage && ((UnityEngine.Time.realtimeSinceStartup - lastCraftMessageCheck) > CRAFT_MESSAGE_CHECK_INTERVAL))
                {
                    lastCraftMessageCheck = UnityEngine.Time.realtimeSinceStartup;
                    if (craftUploadMessage != null)
                    {
                        craftUploadMessage.duration = 0f;
                    }
                    if (finishedUploadingCraft)
                    {
                        displayCraftUploadingMessage = false;
                        craftUploadMessage = ScreenMessages.PostScreenMessage("Craft uploaded!", 2f, ScreenMessageStyle.UPPER_CENTER);
                    }
                    else
                    {
                        craftUploadMessage = ScreenMessages.PostScreenMessage("Uploading craft...", 1f, ScreenMessageStyle.UPPER_CENTER);
                    }
                }

            }
        }
 private void AddCraftEntry(string playerName, CraftType craftType, string craftName)
 {
     if (!playersWithCrafts.Contains(playerName))
     {
         playersWithCrafts.Add(playerName);
     }
     if (!playerList.ContainsKey(playerName))
     {
         playerList.Add(playerName, new Dictionary<CraftType, List<string>>());
     }
     if (!playerList[playerName].ContainsKey(craftType))
     {
         playerList[playerName].Add(craftType, new List<string>());
     }
     if (!playerList[playerName][craftType].Contains(craftName))
     {
         DarkLog.Debug("Adding " + craftName + ", type: " + craftType.ToString() + " from " + playerName);
         playerList[playerName][craftType].Add(craftName);
     }
 }
        private void DeleteCraftEntry(string playerName, CraftType craftType, string craftName)
        {
            if (playerList.ContainsKey(playerName))
            {
                if (playerList[playerName].ContainsKey(craftType))
                {
                    if (playerList[playerName][craftType].Contains(craftName))
                    {
                        playerList[playerName][craftType].Remove(craftName);
                        if (playerList[playerName][craftType].Count == 0)
                        {
                            playerList[playerName].Remove(craftType);
                        }
                        if (playerList[playerName].Count == 0)
                        {
                            if (playerName != Settings.fetch.playerName)
                            {
                                playerList.Remove(playerName);
                                if (playersWithCrafts.Contains(playerName))
                                {
                                    playersWithCrafts.Remove(playerName);
                                }
                            }
                        }
                    }
                    else
                    {
                        DarkLog.Debug("Cannot remove craft entry " + craftName + " for player " + playerName + ", craft does not exist");
                    }
                }
                else
                {
                    DarkLog.Debug("Cannot remove craft entry " + craftName + " for player " + playerName + ", player does not have any " + craftType + " entries");
                }

            }
            else
            {
                DarkLog.Debug("Cannot remove craft entry " + craftName + " for player " + playerName + ", no player entry");
            }
        }
Example #37
0
 public static void CraftItem(PlayerSetup.Player player, Room.Room room, string craftItem, CraftType craftType)
 {
     CanCraftAsync(player, room, craftItem, craftType);
 }
Example #38
0
		private int CountCrafts(CraftType craftType)
		{
			return Crafts.Count(craft => craft.CraftType == craftType) +
				TransferredCrafts.Count(craft => craft.Item.CraftType == craftType);
		}
 private void SaveCraftFile(CraftType craftType, string craftName, byte[] craftData)
 {
     string savePath = "";
     switch (uploadCraftType)
     {
         case CraftType.VAB:
             savePath = vabPath;
             break;
         case CraftType.SPH:
             savePath = sphPath;
             break;
         case CraftType.SUBASSEMBLY:
             savePath = subassemblyPath;
             break;
     }
     if (!Directory.Exists(savePath))
     {
         Directory.CreateDirectory(savePath);
     }
     string craftFile = Path.Combine(savePath, craftName + ".craft");
     File.WriteAllBytes(craftFile, craftData);
     ScreenMessages.PostScreenMessage("Craft " + craftName + " saved!", 5f, ScreenMessageStyle.UPPER_CENTER);
 }
 private void Update()
 {
     if (workerEnabled)
     {
         while (craftAddQueue.Count > 0)
         {
             CraftAddEntry cae = craftAddQueue.Dequeue();
             AddCraftEntry(cae.playerName, cae.craftType, cae.craftName);
         }
         while (craftDeleteQueue.Count > 0)
         {
             CraftDeleteEntry cde = craftDeleteQueue.Dequeue();
             DeleteCraftEntry(cde.playerName, cde.craftType, cde.craftName);
         }
         while (craftResponseQueue.Count > 0)
         {
             CraftResponseEntry cre = craftResponseQueue.Dequeue();
             SaveCraftFile(cre.craftType, cre.craftName, cre.craftData);
         }
         safeDisplay = display;
         if (uploadCraftName != null)
         {
             UploadCraftFile(uploadCraftType, uploadCraftName);
             uploadCraftName = null;
             uploadCraftType = CraftType.VAB;
         }
         if (downloadCraftName != null)
         {
             DownloadCraftFile(selectedPlayer, downloadCraftType, downloadCraftName);
             downloadCraftName = null;
             downloadCraftType = CraftType.VAB;
         }
         if (deleteCraftName != null)
         {
             DeleteCraftEntry(Settings.fetch.playerName, deleteCraftType, deleteCraftName);
             using (MessageWriter mw = new MessageWriter())
             {
                 mw.Write<int>((int)CraftMessageType.DELETE_FILE);
                 mw.Write<string>(Settings.fetch.playerName);
                 mw.Write<int>((int)deleteCraftType);
                 mw.Write<string>(deleteCraftName);
                 NetworkWorker.fetch.SendCraftLibraryMessage(mw.GetMessageBytes());
             }
             deleteCraftName = null;
             deleteCraftType = CraftType.VAB;
         }
     }
 }
 private void UploadCraftFile(CraftType type, string name)
 {
     string uploadPath = "";
     switch (uploadCraftType)
     {
         case CraftType.VAB:
             uploadPath = vabPath;
             break;
         case CraftType.SPH:
             uploadPath = sphPath;
             break;
         case CraftType.SUBASSEMBLY:
             uploadPath = subassemblyPath;
             break;
     }
     string filePath = Path.Combine(uploadPath, name + ".craft");
     if (File.Exists(filePath))
     {
         byte[] fileData = File.ReadAllBytes(filePath);
         using (MessageWriter mw = new MessageWriter())
         {
             mw.Write<int>((int)CraftMessageType.UPLOAD_FILE);
             mw.Write<string>(Settings.fetch.playerName);
             mw.Write<int>((int)type);
             mw.Write<string>(name);
             mw.Write<byte[]>(fileData);
             NetworkWorker.fetch.SendCraftLibraryMessage(mw.GetMessageBytes());
             AddCraftEntry(Settings.fetch.playerName, uploadCraftType, uploadCraftName);
             ScreenMessages.PostScreenMessage("Uploading " + uploadCraftName, 3f, ScreenMessageStyle.UPPER_CENTER);
         }
     }
     else
     {
         DarkLog.Debug("Cannot upload file, " + filePath + " does not exist!");
     }
 }
 private void DrawDownloadScreen()
 {
     if (playerList.ContainsKey(selectedPlayer))
     {
         foreach (KeyValuePair<CraftType, List<string>> entry in playerList[selectedPlayer])
         {
             GUILayout.Label(entry.Key.ToString(), labelStyle);
             foreach (string craftName in entry.Value)
             {
                 if (selectedPlayer == Settings.fetch.playerName)
                 {
                     //Also draw remove button on player screen
                     GUILayout.BeginHorizontal();
                     if (GUILayout.Button(craftName, buttonStyle))
                     {
                         downloadCraftType = entry.Key;
                         downloadCraftName = craftName;
                     }
                     if (GUILayout.Button("Remove", buttonStyle))
                     {
                         deleteCraftType = entry.Key;
                         deleteCraftName = craftName;
                     }
                     GUILayout.EndHorizontal();
                 }
                 else
                 {
                     if (GUILayout.Button(craftName, buttonStyle))
                     {
                         downloadCraftType = entry.Key;
                         downloadCraftName = craftName;
                     }
                 }
             }
         }
     }
 }
 private void DrawUploadScreen()
 {
     foreach (KeyValuePair<CraftType, List<string>> entryType in uploadList)
     {
         GUILayout.Label(entryType.Key.ToString(), labelStyle);
         foreach (string entryName in entryType.Value)
         {
             if (playerList.ContainsKey(Settings.fetch.playerName))
             {
                 if (playerList[Settings.fetch.playerName].ContainsKey(entryType.Key))
                 {
                     if (playerList[Settings.fetch.playerName][entryType.Key].Contains(entryName))
                     {
                         GUI.enabled = false;
                     }
                 }
             }
             if (GUILayout.Button(entryName, buttonStyle))
             {
                 uploadCraftType = entryType.Key;
                 uploadCraftName = entryName;
             }
             GUI.enabled = true;
         }
     }
 }
Example #44
0
        public static async Task CanCraftAsync(PlayerSetup.Player player, Room.Room room, string craftItem, CraftType craftType)
        {
            if (string.IsNullOrEmpty(craftItem) && craftType == CraftType.Craft)
            {
                HubContext.Instance.SendToClient("What do you want to craft?", player.HubGuid);
                return;
            }

            //if (string.IsNullOrEmpty(craftItem))
            //{
            //    HubContext.Instance.SendToClient("What do you want to " + craftType + "?", player.HubGuid);
            //    return;
            //}



            var findCraft = Crafting.CraftList().FirstOrDefault(x => x.Name.ToLower().Contains(craftItem.ToLower()));

            var hasCraft = player.CraftingRecipes.FirstOrDefault(x => x.ToLower().Contains(craftItem.ToLower()));

            if (hasCraft == null && findCraft == null)
            {
                HubContext.Instance.SendToClient("You don't know how to craft that.", player.HubGuid);
                return;
            }

            if (string.IsNullOrEmpty(hasCraft))
            {
                HubContext.Instance.SendToClient("You don't know how to do that.", player.HubGuid);
                return;
            }



            bool hasMaterials = false;

            if (craftType == CraftType.Craft && findCraft.CraftCommand == CraftType.Craft)
            {
                hasMaterials = findCraft != null && HasAllMaterials(player, findCraft.Materials, hasCraft);
            }
            else if (craftType == CraftType.Chop && findCraft.CraftCommand == CraftType.Chop)
            {
                hasMaterials = findCraft != null &&
                               room.items.FirstOrDefault(
                    x => x.name.Equals("Chopping block", StringComparison.CurrentCultureIgnoreCase)) !=
                               null &&
                               player.Inventory.FirstOrDefault(x => x.weaponType == Item.Item.WeaponType.Axe) != null;

                if (!hasMaterials)
                {
                    HubContext.Instance.SendToClient("You don't have all the required materials.", player.HubGuid);
                    return;
                }
            }
            else if (craftType == CraftType.Cook && findCraft.CraftCommand == CraftType.Cook)
            {
                var hasIngredients = false;
                foreach (var item in room.items)
                {
                    if (findCraft != null && item.description.room.Contains("fire") || findCraft != null && item.description.room.Contains("stove"))
                    {
                        hasIngredients = true;
                        hasMaterials   = true;
                    }
                }


                if (!hasIngredients)
                {
                    HubContext.Instance.SendToClient("You don't have all the required ingredients.", player.HubGuid);
                    return;
                }
            }
            else if (craftType == CraftType.Brew && findCraft.CraftCommand == CraftType.Brew)
            {
                var hasIngredients = false;
                foreach (var item in room.items)
                {
                    if (findCraft != null && item.name.Contains("Alchemists work bench"))
                    {
                        hasIngredients = true;
                        hasMaterials   = true;
                    }
                }


                if (!hasIngredients)
                {
                    HubContext.Instance.SendToClient("You don't have all the required components.", player.HubGuid);
                    return;
                }
            }
            else if (craftType == CraftType.Forge && findCraft.CraftCommand == CraftType.Forge)
            {
                hasMaterials = findCraft != null &&
                               room.items.FirstOrDefault(
                    x => x.name.Equals("Furnace", StringComparison.CurrentCultureIgnoreCase)) != null && HasAllMaterials(player, findCraft.Materials, hasCraft);;

                if (!hasMaterials)
                {
                    HubContext.Instance.SendToClient("You don't have all the required materials.", player.HubGuid);
                    return;
                }
            }
            else if (craftType == CraftType.Carve && findCraft.CraftCommand == CraftType.Carve)
            {
                hasMaterials = findCraft != null && HasAllMaterials(player, findCraft.Materials, hasCraft);


                if (room.items.Count == 0 || room.items.FirstOrDefault(
                        x => x.name.Equals("Carpentry work bench", StringComparison.CurrentCultureIgnoreCase)) == null)
                {
                    HubContext.Instance.SendToClient("You need to be at a Carpentry work bench.", player.HubGuid);
                    return;
                }
            }
            else if (craftType == CraftType.Knitting && findCraft.CraftCommand == CraftType.Knitting)
            {
                hasMaterials = findCraft != null && HasAllMaterials(player, findCraft.Materials, hasCraft);;


                if (room.items.Count == 0 || room.items.FirstOrDefault(
                        x => x.name.Equals("Knitting desk", StringComparison.CurrentCultureIgnoreCase)) == null)
                {
                    HubContext.Instance.SendToClient("You need to be at a Knitting desk.", player.HubGuid);
                    return;
                }
            }

            if (!hasMaterials)
            {
                if (findCraft.CraftCommand != craftType)
                {
                    HubContext.Instance.SendToClient("You can't do that. try " + findCraft.CraftCommand, player.HubGuid);
                    return;
                }

                return;
            }

            await CraftItem(player, room, findCraft);
        }
Example #45
0
 public static Craft CreateRefueled(CraftType craftType, int number)
 {
     return new Craft
     {
         Id = GameState.Current.Data.NextCraftId++,
         CraftType = craftType,
         Number = number,
         Damage = 0,
         Fuel = craftType.Metadata().Fuel,
         Weapons = new List<CraftWeapon>(),
         Status = CraftStatus.Ready,
         SoldierIds = new List<int>(),
         Stores = Stores.Create()
     };
 }