コード例 #1
0
        protected override void ReadDelta(BinaryReader reader, NetVersion version)
        {
            NetString name = new NetString();

            name.Read(reader, version);

            NetString iD = new NetString();

            iD.Read(reader, version);


            StardustCore.ModCore.ModMonitor.Log("Name: " + name);
            StardustCore.ModCore.ModMonitor.Log("Mod ID:" + iD);


            //Texture2D texture = new Texture2D(Game1.graphics.GraphicsDevice,width,height);
            if (String.IsNullOrEmpty(iD.Value) || String.IsNullOrEmpty(name.Value))
            {
                ModCore.ModMonitor.Log("FOR SOME REASON THE TEXTURE INFO IS NULL????");
                return;
            }


            Texture2DExtended texture = ModCore.TextureManagers[iD.Value].getTexture(name.Value);

            if (texture == null)
            {
                throw new Exception("FOR SOME REASON NULL IS BEING READ???");
            }
            this.Value = texture;
        }
コード例 #2
0
        protected override void WriteDelta(BinaryWriter writer)
        {
            NetCoreObject obj = new NetCoreObject(Value);

            obj.Write(writer);

            NetList <KeyValuePair <Vector2, MultiTileComponent>, NetKeyValuePair <Vector2, MultiTileComponent, NetVector2, NetMultiTileComponent> > netList = new NetList <KeyValuePair <Vector2, MultiTileComponent>, NetKeyValuePair <Vector2, MultiTileComponent, NetVector2, NetMultiTileComponent> >();

            if (Value.objects == null)
            {
                throw new Exception("Trying to write null object list!");
            }
            foreach (var v in Value.objects)
            {
                StardustCore.ModCore.ModMonitor.Log(v.Value.name);
                netList.Add(v);
            }
            netList.Write(writer);

            NetColor col = new NetColor(Value.categoryColor);

            col.Write(writer);

            NetString catName = new NetString(Value.categoryName);

            catName.Write(writer);
        }
コード例 #3
0
        protected override void WriteDelta(BinaryWriter writer)
        {
            texture = new NetTexture2DExtended(Value.getExtendedTexture());
            texture.Write(writer);

            which = new NetInt(Value.ParentSheetIndex);
            which.Write(writer);

            tilePos = new NetVector2(Value.TileLocation);
            tilePos.Write(writer);

            InventoryMaxSize = new NetInt(Value.inventoryMaxSize);
            InventoryMaxSize.Write(writer);

            sourceRect = new NetRectangle(Value.sourceRect);
            sourceRect.Write(writer);

            boundingBox = new NetRectangle(Value.boundingBox.Value);
            sourceRect.Write(writer);

            drawPosition = new NetVector2(Value.drawPosition);
            drawPosition.Write(writer);

            locationName = new NetString(Value.locationsName);
            locationName.Write(writer);

            /*
             * if (Value.animationManager == null)
             * {
             *  throw new Exception("WTF, why is the animation manager null???????????");
             * }
             * animationManager = new NetAnimationManager(Value.animationManager);
             * animationManager.Write(writer);
             */
        }
コード例 #4
0
        public RESTStatus RestartClientForced(SQLLib sql, object dummy, NetworkConnectionInfo ni, string MachineID)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            string guid = Guid.NewGuid().ToString();

            PushData p = new PushData();

            p.Action  = "restartsystemforced";
            p.ReplyID = guid;

            PushServiceHelper.SendPushService(MachineID, p, 0);
            PushDataResponse resp = PushServiceHelper.PopResponse(MachineID, 0, guid);

            if (resp == null)
            {
                ni.Error   = "No response";
                ni.ErrorID = ErrorFlags.NoData;
                return(RESTStatus.NoContent);
            }

            Dummy      = new NetString();
            Dummy.Data = "OK";

            return(RESTStatus.Success);
        }
コード例 #5
0
ファイル: UsersMGMT.cs プロジェクト: VulpesSARL/Fox-SDC
        public RESTStatus AddUser(SQLLib sql, NetString User, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Fail);
            }

            if (string.IsNullOrWhiteSpace(User.Data) == true)
            {
                ni.Error   = "Missing username";
                ni.ErrorID = ErrorFlags.InvalidID;
                return(RESTStatus.Fail);
            }

            if (Convert.ToInt32(sql.ExecSQLScalar("SELECT COUNT(*) FROM Users WHERE Username=@u",
                                                  new SQLParam("@u", User.Data.Trim()))) != 0)
            {
                ni.Error   = "User already exists";
                ni.ErrorID = ErrorFlags.InvalidID;
                return(RESTStatus.Fail);
            }

            sql.InsertMultiData("Users",
                                new SQLData("Username", User.Data.Trim()),
                                new SQLData("Name", "new user"),
                                new SQLData("Permissions", 0),
                                new SQLData("Password", ""));

            return(RESTStatus.Success);
        }
コード例 #6
0
ファイル: UsersMGMT.cs プロジェクト: VulpesSARL/Fox-SDC
        public RESTStatus DeleteUser(SQLLib sql, NetString User, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Fail);
            }

            if (Convert.ToInt32(sql.ExecSQLScalar("SELECT COUNT(*) FROM Users WHERE Username=@u",
                                                  new SQLParam("@u", User.Data))) == 0)
            {
                ni.Error   = "Invalid User";
                ni.ErrorID = ErrorFlags.InvalidID;
                return(RESTStatus.Fail);
            }

            if (User.Data.ToLower().Trim() == "root")
            {
                ni.Error   = "Invalid User";
                ni.ErrorID = ErrorFlags.InvalidID;
                return(RESTStatus.Fail);
            }

            sql.ExecSQL("DELETE FROM Users WHERE Username=@u",
                        new SQLParam("@u", User.Data));

            return(RESTStatus.Success);
        }
コード例 #7
0
        public RESTStatus ChangeCommentsComputer(SQLLib sql, NetString comments, NetworkConnectionInfo ni, string id)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            lock (ni.sqllock)
            {
                if (Convert.ToInt32(sql.ExecSQLScalar("SELECT COUNT(*) FROM ComputerAccounts WHERE MachineID=@m", new SQLParam("@m", id))) == 0)
                {
                    ni.Error   = "Invalid data";
                    ni.ErrorID = ErrorFlags.InvalidData;
                    return(RESTStatus.NotFound);
                }
            }

            if (comments.Data == null)
            {
                ni.Error   = "Invalid data";
                ni.ErrorID = ErrorFlags.InvalidData;
                return(RESTStatus.Fail);
            }

            lock (ni.sqllock)
            {
                sql.ExecSQL("UPDATE ComputerAccounts SET Comments=@c WHERE MachineID=@m",
                            new SQLParam("@m", id),
                            new SQLParam("@c", comments.Data));
            }

            return(RESTStatus.NoContent);
        }
コード例 #8
0
        protected override void ReadDelta(BinaryReader reader, NetVersion version)
        {
            NetCoreObject obj = new NetCoreObject();

            obj.Read(reader, version);
            //Values already taken care of in NetCoreObject

            NetList <KeyValuePair <Vector2, MultiTileComponent>, NetKeyValuePair <Vector2, MultiTileComponent, NetVector2, NetMultiTileComponent> > netList = new NetList <KeyValuePair <Vector2, MultiTileComponent>, NetKeyValuePair <Vector2, MultiTileComponent, NetVector2, NetMultiTileComponent> >();

            netList.Read(reader, version);
            if (netList.ToList() == null)
            {
                throw new Exception("WTF WHY IS NETLIST NULL?!?!?!?!");
            }

            foreach (var v in netList.ToList())
            {
                StardustCore.ModCore.ModMonitor.Log(v.Value.name, StardewModdingAPI.LogLevel.Alert);
            }

            Value.objects = netList.ToList();
            //this.value.objects=netList.ToArray().ToList();



            NetColor col = new NetColor();

            col.Read(reader, version);
            Value.categoryColor = col.Value;

            NetString name = new NetString();

            name.Read(reader, version);
            Value.categoryName = name.Value;
        }
コード例 #9
0
ファイル: Status.cs プロジェクト: VulpesSARL/Fox-SDC
 public RESTStatus GetWebsocketURL(SQLLib sql, object foo, NetworkConnectionInfo ni)
 {
     WSURL = new NetString()
     {
         Data = Settings.Default.WSPublishURL
     };
     return(RESTStatus.Success);
 }
コード例 #10
0
ファイル: NetStringTests.cs プロジェクト: kxie/m2net
        public void Bytes()
        {
            var bytes = Encoding.ASCII.GetBytes("turtle");

            var ns          = NetString.Create(bytes).ToByteArray();
            var parsedBytes = ns.ParseNetstring()[0].ToArray();

            assertArraysEqual(bytes, parsedBytes);
        }
コード例 #11
0
ファイル: NetStringTests.cs プロジェクト: kxie/m2net
        private void testRoundTrip(string str, Encoding enc)
        {
            var ns    = NetString.Create(str, enc);
            var bytes = ns.ToByteArray();

            var parsedBytes = bytes.ParseNetstring();
            var parsedStr   = enc.GetString(parsedBytes[0].Array, parsedBytes[0].Offset, parsedBytes[0].Count);

            Assert.AreEqual(str, parsedStr);
        }
コード例 #12
0
        /// <summary>
        /// Adds an extra variable to the net class.
        /// </summary>
        /// <param name="Key"></param>
        /// <param name="obj"></param>
        public virtual void addExtraVariable(string Key, object obj)
        {
            NetString str = GameManager.Self.serializer.ToJSONString(obj);

            if (this.extraVariables == null)
            {
                this.extraVariables = new NetDictionary <NetString, NetString>();
            }
            this.extraVariables.Add(Key, str);
        }
コード例 #13
0
        protected override void WriteDelta(BinaryWriter writer)
        {
            NetString name = new NetString(Value.Name);

            name.Write(writer);

            NetString iD = new NetString(Value.modID);

            iD.Write(writer);
        }
コード例 #14
0
 public override bool checkIfComplete(NPC n = null, int number1 = -1, int number2 = -1, Item item = null, string monsterName = null)
 {
     if ((bool)completed)
     {
         return(false);
     }
     if (monsterName == null)
     {
         monsterName = "Green Slime";
     }
     if (n == null && monsterName != null && monsterName.Contains(this.monsterName.Value) && (int)numberKilled < (int)numberToKill)
     {
         numberKilled.Value = Math.Min(numberToKill, (int)numberKilled + 1);
         if ((int)numberKilled >= (int)numberToKill)
         {
             if (target.Value == null || target.Value.Equals("null"))
             {
                 questComplete();
             }
             else
             {
                 NPC actualTarget = Game1.getCharacterFromName(target);
                 objective.Value = new DescriptionElement("Strings\\StringsFromCSFiles:FishingQuest.cs.13277", actualTarget);
                 Game1.playSound("jingle1");
             }
         }
         else if (monster.Value == null)
         {
             if (monsterName == "Frost Jelly" || monsterName == "Sludge")
             {
                 monster.Value      = new Monster("Green Slime", Vector2.Zero);
                 monster.Value.Name = monsterName;
             }
             else
             {
                 monster.Value = new Monster(monsterName, Vector2.Zero);
             }
         }
         Game1.dayTimeMoneyBox.moneyDial.animations.Add(new TemporaryAnimatedSprite("LooseSprites\\Cursors", new Rectangle(387, 497, 3, 8), 800f, 1, 0, Game1.dayTimeMoneyBox.position + new Vector2(228f, 244f), flicker: false, flipped: false, 1f, 0.01f, Color.White, 4f, 0.3f, 0f, 0f)
         {
             scaleChangeChange = -0.012f
         });
     }
     else if (n != null && target.Value != null && !target.Value.Equals("null") && (int)numberKilled >= (int)numberToKill && n.Name.Equals(target.Value) && n.isVillager())
     {
         reloadDescription();
         n.CurrentDialogue.Push(new Dialogue(targetMessage, n));
         moneyReward.Value = reward;
         questComplete();
         Game1.drawDialogue(n);
         return(true);
     }
     return(false);
 }
コード例 #15
0
        protected override void WriteDelta(BinaryWriter writer)
        {
            if (String.IsNullOrEmpty(Value.currentAnimationName))
            {
                NetBool isNull = new NetBool(true);
                writer.Write(isNull);



                NetTexture2DExtended defaultTexture = new NetTexture2DExtended(Value.getExtendedTexture());
                defaultTexture.Write(writer);

                //do read/write null values here!!!
                if (Value == null)
                {
                    throw new Exception("DONT WRITE A NULL VALUE!!!!");
                }
                NetAnimation drawFrame = new NetAnimation(Value.defaultDrawFrame);
                drawFrame.Write(writer);
                return;
                //throw new Exception("Null string value for currentAnimationName!");
            }
            else
            {
                NetBool isNull = new NetBool(false);
                writer.Write(isNull);
            }
            NetString curentAnimationName = new NetString(!String.IsNullOrEmpty(Value.currentAnimationName) ? Value.currentAnimationName : "");

            currentAnimationName.Write(writer);


            NetInt currentAnimationListIndex = new NetInt(Value.currentAnimationListIndex);

            currentAnimationListIndex.Write(writer);

            NetTexture2DExtended texture = new NetTexture2DExtended(Value.getExtendedTexture());

            texture.Write(writer);

            //do read/write null values here!!!
            NetAnimation defaultDrawFrame = new NetAnimation(Value.defaultDrawFrame);

            defaultDrawFrame.Write(writer);

            NetBool enabled = new NetBool(Value.enabled);

            enabled.Write(writer);

            NetString animationData = new NetString(Value.animationDataString);

            animationData.Write(writer);
        }
コード例 #16
0
ファイル: NetStringTests.cs プロジェクト: kxie/m2net
        public void Concat()
        {
            var enc  = Encoding.UTF8;
            var str1 = "turtles in the sky with diamonds";
            var str2 = "喫茶店に行きました。";

            var ns = NetString.Concat(NetString.Create(str1, enc), NetString.Create(str2, enc)).ToByteArray();
            var b  = ns.ParseNetstring()[0].ParseNetstring();

            Assert.AreEqual(str1, b[0].ToString(enc));

            b = b[1].ParseNetstring();
            Assert.AreEqual(str2, b[0].ToString(enc));
        }
コード例 #17
0
        public static void Postfix(NetBuildingRef __instance, NetString ___nameOfIndoors, ref Building __result)
        {
            if (__result != null)
            {
                return;
            }
            var locationFromName = (FarmExpansion)Game1.getLocationFromName("FarmExpansion");

            if (locationFromName == null)
            {
                return;
            }
            __result = locationFromName.getBuildingByName((string)((NetFieldBase <string, NetString>)___nameOfIndoors));
        }
コード例 #18
0
        public RESTStatus RunAdminNowREST(SQLLib sql, object dummy, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            RunAdminNow = true;
            Dummy       = new NetString();
            Dummy.Data  = "OK";

            return(RESTStatus.Success);
        }
コード例 #19
0
        public RESTStatus CloseWSServerMappingPort(SQLLib sql, NetString GUID, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ComputerLogin) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            RemoteNetworkConnectionWSCrosser.CloseSession(ni.Username, GUID.Data);

            Res        = new PushConnectNetworkResult();
            Res.Result = 0;
            return(RESTStatus.Success);
        }
コード例 #20
0
ファイル: StdIO.cs プロジェクト: VulpesSARL/Fox-SDC
        public RESTStatus PopSTDIOData(SQLLib sql, NetString StdIOSession, NetworkConnectionInfo ni, string MachineID)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            if (StdIOSession == null)
            {
                ni.Error   = "Missing Session Data";
                ni.ErrorID = ErrorFlags.InvalidData;
                return(RESTStatus.Fail);
            }

            if (string.IsNullOrWhiteSpace(StdIOSession.Data) == true)
            {
                ni.Error   = "Missing Session Data";
                ni.ErrorID = ErrorFlags.InvalidData;
                return(RESTStatus.Fail);
            }

            string           sess = "stdio-" + StdIOSession.Data;
            PushDataResponse resp = PushServiceHelper.PopResponse(MachineID, 0, sess, true);

            if (resp == null)
            {
                res           = new Push_Stdio_StdOut();
                res.SessionID = StdIOSession.Data;
                res.State     = PushStdoutState.Timeout;
                return(RESTStatus.NoContent);
            }

            try
            {
                res = JsonConvert.DeserializeObject <Push_Stdio_StdOut>(resp.Data.ToString());
            }
            catch
            {
                res           = new Push_Stdio_StdOut();
                res.SessionID = StdIOSession.Data;
                res.State     = PushStdoutState.InternalError;
                return(RESTStatus.NoContent);
            }

            return(RESTStatus.Success);
        }
コード例 #21
0
        private static bool CheckLocationChange(Farmer player, NetString currentLocation, NetLong playerId)
        {
            if (currentLocation != LastActions[playerId].LocationName)
            {
                LastActions[playerId] = new PlayerLastActivity
                {
                    Activity     = "warped",
                    LocationName = currentLocation,
                    When         = Game1.timeOfDay,
                    Hidden       = false
                };
                return(true);
            }

            return(false);
        }
コード例 #22
0
        private static bool CheckUsingTool(Farmer player, NetLong playerId, NetString currentLocation)
        {
            if (player.UsingTool)
            {
                LastActions[playerId] = new PlayerLastActivity
                {
                    Activity     = player.CurrentTool?.Name.ToLower() ?? "N/A",
                    When         = Game1.timeOfDay,
                    LocationName = currentLocation,
                    Hidden       = player.hidden.Value
                };
                return(true);
            }

            return(false);
        }
コード例 #23
0
        private bool CheckCutscene(Farmer player, NetLong playerId, NetString currentLocation)
        {
            if (player.hidden != LastActions[playerId].Hidden && currentLocation == LastActions[playerId].LocationName && !(player.isRidingHorse()))
            {
                LastActions[playerId] = new PlayerLastActivity
                {
                    Activity     = player.hidden ? "startevent" : "endevent",
                    When         = Game1.timeOfDay,
                    LocationName = currentLocation,
                    Hidden       = player.hidden?.Value ?? false
                };

                return(true);
            }
            return(false);
        }
コード例 #24
0
        override protected void BytesToData(byte[] data)
        {
            if (data == null || data.Length < 3)
            {
                return;
            }

            short num = IPAddress.NetworkToHostOrder(BitConverter.ToInt16(data, 0));

            LoginCharacter[] cs = new LoginCharacter[num];

            int i      = 0;
            int offset = 2;

            for (; i < num; i++)
            {
                cs[i]    = new LoginCharacter();
                cs[i].ID = NetConvert.ToUInt32(IPAddress.NetworkToHostOrder(BitConverter.ToInt32(data, offset)));
                offset  += 4;
            }
            num     = IPAddress.NetworkToHostOrder(BitConverter.ToInt16(data, offset));
            offset += 2;
            for (i = 0; i < num; i++)
            {
                NetString s = new NetString(data, offset);
                cs[i].Name = s.ToString();
                offset    += s.TotalLength;
            }
            num     = IPAddress.NetworkToHostOrder(BitConverter.ToInt16(data, offset));
            offset += 2;
            for (i = 0; i < num; i++)
            {
                cs[i].Level = IPAddress.NetworkToHostOrder(BitConverter.ToInt32(data, offset));
                offset     += 4;
            }
            num     = IPAddress.NetworkToHostOrder(BitConverter.ToInt16(data, offset));
            offset += 2;
            for (i = 0; i < num; i++)
            {
                cs[i].IsOnline = Convert.ToBoolean(IPAddress.NetworkToHostOrder(BitConverter.ToInt32(data, offset)));
                offset        += 4;
            }

            this._characters      = cs;
            this._charactersCount = num;
        }
コード例 #25
0
        public RESTStatus CheckFile(SQLLib sql, NetString Req, NetworkConnectionInfo ni, string MachineID)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            string guid = Guid.NewGuid().ToString();

            PushData p = new PushData();

            p.Action          = "checkfile";
            p.ReplyID         = guid;
            p.AdditionalData1 = Req.Data;

            PushServiceHelper.SendPushService(MachineID, p, 0);
            PushDataResponse resp = PushServiceHelper.PopResponse(MachineID, 0, guid);

            if (resp == null)
            {
                ni.Error   = "No response";
                ni.ErrorID = ErrorFlags.NoData;
                return(RESTStatus.NoContent);
            }

            try
            {
                FileRes = new NetInt32();
                if (Int32.TryParse(resp.Data.ToString(), out FileRes.Data) == false)
                {
                    ni.Error   = "Faulty data";
                    ni.ErrorID = ErrorFlags.NoData;
                    return(RESTStatus.NoContent);
                }
            }
            catch
            {
                ni.Error   = "Faulty data";
                ni.ErrorID = ErrorFlags.NoData;
                return(RESTStatus.NoContent);
            }
            return(RESTStatus.Success);
        }
コード例 #26
0
 private static void RevertMapImageSource(ref NetString mapImageSource, ref bool loadedDarkArea, int level, int mineAreaNeg, int mineAreaLevel, int mapNumberToLoad)
 {
     if (mineAreaNeg == 0 || mineAreaNeg == 10 || (mineAreaLevel != 0 && mineAreaLevel != 10))
     {
         if (mineAreaLevel == 40)
         {
             mapImageSource.Value = "Maps\\Mines\\mine_frost";
             if (level >= 70)
             {
                 NetString netString = mapImageSource;
                 netString.Value += "_dark";
                 loadedDarkArea   = true;
             }
         }
         else if (mineAreaLevel == 80)
         {
             mapImageSource.Value = "Maps\\Mines\\mine_lava";
             if (level >= 110 && level != 120)
             {
                 NetString netString2 = mapImageSource;
                 netString2.Value += "_dark";
                 loadedDarkArea    = true;
             }
         }
         else if (mineAreaLevel == 121)
         {
             mapImageSource.Value = "Maps\\Mines\\mine_desert";
             if (mapNumberToLoad % 40 >= 30)
             {
                 NetString netString3 = mapImageSource;
                 netString3.Value += "_dark";
                 loadedDarkArea    = true;
             }
         }
         else
         {
             mapImageSource.Value = "Maps\\Mines\\mine";
         }
     }
     else
     {
         mapImageSource.Value = "Maps\\Mines\\mine";
     }
 }
コード例 #27
0
        protected override void ReadDelta(BinaryReader reader, NetVersion version)
        {
            texture = new NetTexture2DExtended();
            texture.Read(reader, version);

            Value.setExtendedTexture(texture.Value);

            which = new NetInt();
            which.Read(reader, version);
            Value.ParentSheetIndex = which.Value;

            tilePos = new NetVector2();
            tilePos.Read(reader, version);
            Value.TileLocation = tilePos.Value;

            InventoryMaxSize = new NetInt();
            InventoryMaxSize.Read(reader, version);
            Value.inventoryMaxSize = InventoryMaxSize.Value;

            sourceRect = new NetRectangle();
            sourceRect.Read(reader, version);
            Value.sourceRect = sourceRect.Value;

            boundingBox = new NetRectangle();
            boundingBox.Read(reader, version);
            Value.boundingBox.Value = boundingBox.Value;

            drawPosition = new NetVector2();
            drawPosition.Read(reader, version);
            Value.drawPosition = drawPosition.Value;

            locationName = new NetString();
            locationName.Read(reader, version);
            Value.locationsName = locationName.Value;
            Value.thisLocation  = Game1.getLocationFromName(locationName.Value);

            /*
             * animationManager = new NetAnimationManager();
             * animationManager.Read(reader, version);
             * Value.animationManager = animationManager.Value;
             */
        }
コード例 #28
0
        /// <summary>
        /// Method for pulling a string off the byte array.
        /// </summary>
        /// <param name="data">the byte array</param>
        /// <param name="offset">index to start pulling from the array</param>
        /// <returns>returns an AoString object</returns>
        internal static NetString PopString(ref byte[] data, ref Int32 offset)
        {
            if (data == null || data.Length - offset < 3)
            {
                return(new NetString(String.Empty));
            }

            short     len = PopShort(ref data, ref offset);
            NetString ret;

            if (data.Length >= len && len > 0)
            {
                ret = new NetString(data, offset, len);
            }
            else
            {
                ret = new NetString("");
            }
            offset += len;
            return(ret);
        }
コード例 #29
0
        private bool CheckCutscene(Farmer player, NetLong playerId, NetString currentLocation)
        {
            if (player.hidden != LastActions[playerId].Hidden && !(player.isRidingHorse()))
            {
                if (ConfigHelper.GetOptions().ShowCutsceneInfoInChatBox)
                {
                    var verbed = player.hidden ? "entered a" : "finished the";
                    _helper.SelfInfoMessage($"{player.Name} has {verbed} cutscene.");
                }

                LastActions[playerId] = new PlayerLastActivity
                {
                    Activity     = "event",
                    When         = Game1.timeOfDay,
                    LocationName = currentLocation,
                    Hidden       = player.hidden?.Value ?? false
                };

                return(true);
            }

            return(false);
        }
コード例 #30
0
        private static void ParrotUpgradePerch_PerformCompleteAnimation_Postfix(NetString ___upgradeName)
        {
            // Check if the upgrade name is null and then whether it's the right upgrade, and don't do anything if it's not
            if (___upgradeName.Value is not "Resort")
            {
                return;
            }

            // Make sure to add resort built conversation topic to all farmers in the game
            try
            {
                foreach (Farmer f in Game1.getAllFarmers())
                {
                    try
                    {
                        MCTHelperFunctions.AddOrExtendCT(f, "islandResortUnlocked", Config.IslandResortDuration);
                    }
                    catch (Exception ex)
                    {// Check to see if the farmer in question is online, and return different exception messages depending
                        if (!Game1.getOnlineFarmers().Contains(f))
                        {
                            Monitor.Log($"Failed to add resort built conversation topic to an offline farmer with exception: {ex}", LogLevel.Error);
                        }
                        else
                        {
                            Monitor.Log($"Failed to add resort built conversation topic to an online farmer with exception: {ex}", LogLevel.Error);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Monitor.Log($"Failed to add resort built conversation topic with exception: {ex}", LogLevel.Error);
                return;
            }
        }