public void OnPostRoomEvent(BasePlayerMover mover, RoomObject room)
 {
     foreach (IPlayerRoomEventListener listener in IterateListeners<IPlayerRoomEventListener>())
     {
         listener.OnPostRoomEvent(mover, room);
     }
 }
 public ObjectsEditorFilter(Panel displayPanel, Room room)
 {
     _room = room;
     _panel = displayPanel;
     _selectedObject = null;
     _propertyObjectChangedDelegate = new GUIController.PropertyObjectChangedHandler(GUIController_OnPropertyObjectChanged);
 }
示例#3
0
 public static Vector2 GetRoomObjectPositionOnScreen(Room room, RoomObject roomObject)
 {
     Vector2 positionInWorld = new Vector2 (roomObject.transform.position.x, roomObject.transform.position.y);
     float scaleX = singleton.screenRect.width / room.roomSprite.textureRect.width;
     float scaleY = singleton.screenRect.height / room.roomSprite.textureRect.height;
     scaleX = scaleY;
     return new Vector2(singleton.screenRect.center.x + scaleX*positionInWorld.x, singleton.screenRect.center.y + scaleY*positionInWorld.y);
 }
示例#4
0
 public static Rect GetRoomObjectScreenRect(Room room, RoomObject roomObject)
 {
     Vector2 positionInWorld = new Vector2(roomObject.transform.position.x, roomObject.transform.position.y);
     float scaleX = singleton.screenRect.width / room.roomSprite.textureRect.width;
     float scaleY = singleton.screenRect.height / room.roomSprite.textureRect.height;
     scaleX = scaleY;
     float width = roomObject.sprite.textureRect.width;
     float height = roomObject.sprite.textureRect.height;
     return new Rect ((int)(singleton.screenRect.center.x + scaleX * positionInWorld.x), (int)(singleton.screenRect.center.y + scaleY * positionInWorld.y), (int)(scaleX*width), (int)(scaleY*height));
 }
示例#5
0
    public static RoomObject FromObject(JsonData jsonData)
    {
        RoomObject result = new RoomObject();

        result.object_id = (int)jsonData["id"];
        result.position.Set(
            jsonData["x"].IsInt ? (float)((int)jsonData["x"]) : (float)((double)jsonData["x"]),
            jsonData["y"].IsInt ? (float)((int)jsonData["y"]) : (float)((double)jsonData["y"]),
            jsonData["z"].IsInt ? (float)((int)jsonData["z"]) : (float)((double)jsonData["z"]));

        return result;
    }
    /// <summary>
    /// Sets which buttons are active based on the doors in the current room
    /// </summary>
    /// <param name="currentRoom">The current room that the players are in</param>
    public void PopulateMenu(RoomObject currentRoom)
    {
        m_currentRoom = currentRoom;

        m_northButton.gameObject.SetActive(currentRoom.NorthDoor.IsDoorEnabled);
        m_eastButton.gameObject.SetActive(currentRoom.EastDoor.IsDoorEnabled);
        m_southButton.gameObject.SetActive(currentRoom.SouthDoor.IsDoorEnabled);
        m_westButton.gameObject.SetActive(currentRoom.WestDoor.IsDoorEnabled);
        
        if (currentRoom is ExitRoom)
        {
            m_nextFloorButton.gameObject.SetActive(true);
        }
        else
        {
            m_nextFloorButton.gameObject.SetActive(false);
        }
    }
        private void TestRoomObject()
        {
            var TestObj = new RoomObjectObj
            {
                disposable    = true,
                id            = 27,
                isHidden      = false,
                lookDirection = Vector3.forward,
                owner         = "test",
                position      = Vector3.one,
                prefab        = "a test thing"
            };
            var fbb    = new FlatBufferBuilder(1024);
            var offset = TestObj.ToBuffer(fbb);

            fbb.Finish(offset.Value);
            var bArray = fbb.SizedByteArray();
            var bb     = new ByteBuffer(bArray);
            var desObj = RoomObject.GetRootAsRoomObject(bb);

            print("Room Object Test : " + (CompareRoomObjects(TestObj, desObj) ? "Passed" : "Failed"));
        }
示例#8
0
        public virtual bool MouseDown(MouseEventArgs e, RoomEditorState state)
        {
            if (e.Button == MouseButtons.Middle) return false;

            int x = state.WindowXToRoom(e.X);
            int y = state.WindowYToRoom(e.Y);
            RoomObject obj = GetObject(x, y);

            if (obj != null)
            {
                SetSelectedObject(obj);
                Factory.GUIController.SetPropertyGridObject(obj);
                if (e.Button == MouseButtons.Right)
                {
                    ShowContextMenu(e, state);
                }
                else if(!DesignItems[GetItemID(obj)].Locked)
                {
                    _movingObjectWithMouse = true;
                    _mouseOffsetX = x - obj.StartX;
                    _mouseOffsetY = y - obj.StartY;
                }
            }
            else
            {
                _selectedObject = null;
            }

            if (_selectedObject == null)
            {
                if (e.Button == MouseButtons.Right)
                {
                    ShowContextMenu(e, state);
                    return true;
                }
                return false;
            }
            return true;
        }
示例#9
0
    private void ConnectRooms()
    {
        var canRoomsTangle = GameSettings.Instance.roomTangling;

        foreach (var roomObject in roomList)
        {
            foreach (var doorObject in roomObject.doors)
            {
                RoomObject other = null;

                while (other == null || (other == roomObject && !canRoomsTangle))
                {
                    var randomIdx = UnityEngine.Random.Range(0, roomList.Count - 1);
                    other = roomList[randomIdx];
                }

                if (other != null)
                {
                    ConnectRoom(doorObject, other);
                }
            }
        }
    }
示例#10
0
        public RenderInfo(
            RoomObject Data,
            bool UseViewerFrame   = true,
            bool ApplyYOffset     = true,
            byte RootHotspotIndex = 0,
            Real Quality          = DEFAULTQUALITY,
            bool ScalePow2        = false,
            uint Width            = 0,
            uint Height           = 0,
            bool CenterVertical   = false,
            bool CenterHorizontal = false)
        {
            Clear();

            BgfBitmap mainFrame = Data.ViewerFrame;

            if (!UseViewerFrame)
            {
                mainFrame = Data.FrontFrame;
            }

            Calculate(Data, mainFrame, UseViewerFrame, ApplyYOffset, RootHotspotIndex, Quality, ScalePow2, Width, Height, CenterVertical, CenterHorizontal);
        }
    //创建房间的广播回调函数
    public void CreateRoom(ProtocolBase protocol)
    {
        Debug.Log("来啊,我在这里");
        ProtocolBytes proto = (ProtocolBytes)protocol;
        int           start = 0;

        /*string protoName = */
        proto.GetString(start, ref start);

        string room_name = proto.GetString(start, ref start);
        int    peopleNum = proto.GetInt(start, ref start);

        //将房间新房间加入 roomList 然后重新渲染 列表一
        RoomObject room = new RoomObject(room_name)//简化的new
        {
            ExistPerNum = peopleNum
        };

        room.GenerateFraction();
        roomList.Add(room);
        //渲染 列表一 所有房间列表
        RenderListOne();
    }
示例#12
0
    public void lookAtObject(RoomObject obj)
    {
        if (defaultValues.lookAtActive)
        {
            if (obj == null)
            {
                textPrompt.printText(defaultValues.lookAtNotFoundText);
                return;
            }

            if (System.String.IsNullOrWhiteSpace(obj.runtimeLookAtFlavorText))
            {
                textPrompt.printText(defaultValues.lookAtDefaultText.Replace("(NAME)", obj.name));
                return;
            }

            textPrompt.printText(obj.runtimeLookAtFlavorText);
        }
        else
        {
            textPrompt.printText(defaultValues.unknownCommand);
        }
    }
示例#13
0
    private void InitGrid()
    {
        // RoomGridよりGrid情報取得
        GameObject GObj   = GameObject.FindGameObjectWithTag("RoomGrids");
        RoomGrids  rGrids = GObj.GetComponent(typeof(RoomGrids)) as RoomGrids;

        Grids = rGrids.GetGridData();

        // Playerの位置を現在位置へ
        NowPos = Player._Postion.Vector2I;

        // ほか必要なやつを探し出し登録していく
        GameObject[] Objs = GameObject.FindGameObjectsWithTag("RoomObject");

        foreach (GameObject obj in Objs)
        {
            RoomObject rObject = obj.GetComponent(typeof(RoomObject)) as RoomObject;
            int        gX      = rObject._Postion.IntX;
            int        gY      = rObject._Postion.IntY;

            Grids[gX, gY] = rObject.GridDataNum;
        }
    }
示例#14
0
        public void FindSpecificOpenRoom_OfTypeHotelNode_AreEqual()
        {
            // Arrange
            HumanSchematic   newGuest         = new Guest(null, null, null);
            List <HotelNode> hotelNodes       = new List <HotelNode>();
            HotelRoomFactory hotelRoomFactory = new HotelRoomFactory();
            RoomObject       RandomObject     = new RoomObject()
            {
                Classification = "1 Star",
                ID             = 11,
                AreaType       = "Room",
                Position       = new Point(7, 1),
                Dimension      = new Point(1, 1)
            };
            RoomObject expectedObject = new RoomObject()
            {
                Classification = "4 stars",
                ID             = 25,
                AreaType       = "Room",
                Position       = new Point(3, 2),
                Dimension      = new Point(2, 1)
            };
            HotelNode randomHotelNode        = new HotelNode(RandomObject, 0);
            HotelNode expected               = new HotelNode(expectedObject, 0);
            Dictionary <string, string> Data = new Dictionary <string, string>();

            // Act
            randomHotelNode.HotelObject = hotelRoomFactory.HotelRooms(randomHotelNode);
            expected.HotelObject        = hotelRoomFactory.HotelRooms(expected);
            hotelNodes.Add(randomHotelNode);
            hotelNodes.Add(expected);
            Data.Add("Gast1", "Checkin 4stars");
            HotelNode result = newGuest.FindSpecificOpenRoom(Data, hotelNodes);

            // Assert
            Assert.AreEqual(expected, result);
        }
示例#15
0
    /// <summary>
    /// Scrapes user input to find commands and the object referenced and directs it to ActionHandler.
    /// </summary>
    /// <param name="input">The user's input</param>
    public void parseInput(string input)
    {
        string[] words = trimText(input);

        // Player commands are separate from regular commands because actions are in the Player script rather than ActionHandler
        // and regular commands need a minimum of 2 words to work whereas player commands (like "inv") can be one word.
        // Check player commands. If one activates, return.

        string failText = defaultValues.unknownCommand;

        if (words.Length == 0)
        {
            textPrompt.printText(failText);
            return;
        }

        string     command      = words[0];
        RoomObject targetObject = findObjectFromInput(input);

        // parsePlayerCommands needs input to scrape room name from input when player moves.
        bool playerCommandSuccess = parsePlayerCommands(command, input);

        if (playerCommandSuccess)
        {
            return;
        }

        if (words.Length == 1)
        {
            //textPrompt.printText(failText);
            roomTracker.changeRoomViaRoomConnection(input);
            return;
        }

        // Regular Commands: Eat, Talk, Kill, Sit, Use, Pickup, Wear
        parseRegularCommands(command, targetObject);
    }
示例#16
0
        public void CreateGraph_OfTypeHotelGraph_AreEqual()
        {
            // Arrange
            List <RoomObject> roomObjects = new List <RoomObject>();
            RoomObject        randomRoom1 = new RoomObject()
            {
                Classification = "2 Star",
                ID             = 11,
                AreaType       = "Room",
                Position       = new Point(7, 1),
                Dimension      = new Point(1, 1)
            };
            RoomObject randomRoom2 = new RoomObject()
            {
                Classification = "3 stars",
                ID             = 12,
                AreaType       = "Room",
                Position       = new Point(6, 1),
                Dimension      = new Point(1, 1)
            };

            roomObjects.Add(randomRoom1);
            roomObjects.Add(randomRoom2);
            HotelGraph       hotelGraph         = new HotelGraph();
            HotelNode        randomHotelNode1   = new HotelNode(randomRoom1, 0);
            HotelNode        randomHotelNode2   = new HotelNode(randomRoom2, 0);
            List <HotelEdge> expectedHotelEdges = new List <HotelEdge>();
            HotelEdge        expectedhotelEdge1 = new HotelEdge(randomHotelNode2, randomHotelNode1);

            // Act
            hotelGraph.GenerateGraph(roomObjects);
            hotelGraph.AddHotelEdge();
            expectedHotelEdges.Add(expectedhotelEdge1);
            // Assert
            Assert.AreEqual(expectedHotelEdges[0].RoomDestination.RoomData, hotelGraph.HotelNodeSet[0].RoomNeighbour[0].RoomDestination.RoomData);
        }
示例#17
0
        static void Main()
        {
            // .net stuff
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // init bgf data model
            CurrentFile = new BgfFile();
            CurrentFile.Frames.AllowEdit = true;

            // init roomobject model for viewer
            RoomObject          = new RoomObject();
            RoomObject.Resource = CurrentFile;

            // init mainform
            MainForm             = new MainForm();
            MainForm.FormClosed += OnMainFormFormClosed;
            MainForm.Show();

            ImageComposerGDI <RoomObject> .Cache.IsEnabled = false;

            // init shrinkform
            SettingsForm = new SettingsForm();
            SettingsForm.DataBindings.Add("Version", CurrentFile, "Version");
            SettingsForm.DataBindings.Add("ShrinkFactor", CurrentFile, "ShrinkFactor");
            SettingsForm.DataBindings.Add("Name", CurrentFile, "Name");

            // init addframsetindexform
            AddFrameSetIndexForm = new AddFrameSetIndexForm();

            // init ticker
            stopWatch = new Stopwatch();
            stopWatch.Start();

            // set running
            IsRunning = true;

            string[] args = Environment.GetCommandLineArgs();

            // load file passed by arguments
            if (args.Length > 1)
            {
                Load(args[1]);
            }

            // start mainthread loop
            while (IsRunning)
            {
                long oldTick = Tick;

                // update current tick
                Tick = stopWatch.ElapsedTicks / MSTICKDIVISOR;

                long span = Tick - oldTick;

                // update roomobject
                //if (IsPlaying)
                RoomObject.Tick(Tick, span);

                // process window messages / events
                Application.DoEvents();

                // sleep
                Thread.Sleep(1);
            }
        }
        public virtual void MouseDown(MouseEventArgs e, RoomEditorState state)
        {
            int x = (e.X + state.ScrollOffsetX) / state.ScaleFactor;
            int y = (e.Y + state.ScrollOffsetY) / state.ScaleFactor;
            _selectedObject = null;

            for (int i = _objectBaselines.Count - 1; i >= 0; i--)
            {
                RoomObject obj = _objectBaselines[i];
                int width = GetSpriteWidthForGameResolution(obj.Image);
                int height = GetSpriteHeightForGameResolution(obj.Image);
                if ((x >= obj.StartX) && (x < obj.StartX + width) &&
                    (y >= obj.StartY - height) && (y < obj.StartY))
                {
                    _selectedObject = obj;
                    Factory.GUIController.SetPropertyGridObject(obj);
                    if (e.Button == MouseButtons.Right)
                    {
                        ShowContextMenu(e, state);
                    }
                    else
                    {
                        _movingObjectWithMouse = true;
                        _mouseOffsetX = x - obj.StartX;
                        _mouseOffsetY = y - obj.StartY;
                    }
                    break;
                }
            }
            if (_selectedObject == null)
            {
                Factory.GUIController.SetPropertyGridObject(_room);
                if (e.Button == MouseButtons.Right)
                {
                    ShowContextMenu(e, state);
                }
            }
        }
示例#19
0
 /// <summary>
 /// Draw an object
 /// </summary>
 /// <param name="RoomObject"></param>
 /// <param name="x"></param>
 /// <param name="y"></param>
 /// <param name="width"></param>
 /// <param name="height"></param>
 public abstract void DrawObject(RoomObject RoomObject, Real x, Real y, Real width, Real height);
示例#20
0
 public void RemoveObject(RoomObject obj)
 {
     objects.Remove (obj);
 }
示例#21
0
    /// <summary>
    /// For all IPs of an object, calculate their travel score. Set values based on the lowest score.
    /// We assume the camper is already in the same room as this Room Object.
    /// </summary>
    /// <param name="obj">The Room Object</param>
    /// <param name="lowestScore">Outputting the lowest score so far</param>
    /// <param name="IPidx">Outputting the IP index of the IP with the lowest score</param>
    /// <param name="targetObj">Outputting the Room Object with the lowest score</param>
    /// <returns>True if an IP of a room the camper is alreayd in has the lowest score</returns>
    private bool getLowestIPpathScore(RoomObject obj, ref float lowestScore, ref int IPidx, ref RoomObject targetObj)
    {
        bool useIPmap = false;

        for (int i = 0; i < obj.interactionPoints.Count; i++)
        {
            //we expect that we have calculated a path to each Interaction Point
            InteractionPoint IP = obj.interactionPoints[i];
            if (!IPpathMap.ContainsKey(IP))
            {
                continue;
            }

            //score is the length of the path to the IP + the wait time of that IP
            float score = IPpathMap[IP].GetPathLength();
            score += IP.GetWaitScore();

            if (score < lowestScore)
            {
                useIPmap    = true;
                IPidx       = i;
                targetObj   = obj;
                lowestScore = score;
            }
        }
        return(useIPmap);
    }
示例#22
0
 private string GetItemID(RoomObject obj)
 {
     // Use numeric object's ID as a "unique identifier", for now (script name is optional!)
     return(obj.ID.ToString("D4"));
 }
示例#23
0
    /// <summary>
    /// Checks if the string is a regular command and forwards targetObject to ActionHandler.
    /// </summary>
    /// <param name="command">The first word in the user's input</param>
    /// <param name="targetObject">The object found in user's input</param>
    private void parseRegularCommands(string command, RoomObject targetObject)
    {
        switch (command)
        {
        // eat
        case "eat":
        case "devour":
        case "consume":
            actionHandler.eatObject(targetObject);
            break;

        // drink
        case "drink":
            actionHandler.drinkObject(targetObject);
            break;

        // talk
        case "talk":
        case "speak":
        case "say":
            actionHandler.talkToPerson(targetObject);
            break;

        // kill
        case "kill":
        case "stab":
        case "cleave":
        case "murder":
            actionHandler.killPerson(targetObject);
            break;

        // break
        case "break":
        case "smash":
        case "destroy":
            actionHandler.BreakObject(targetObject);
            break;

        // sit
        case "sit":
        case "seat":
            actionHandler.sitOnObject(targetObject);
            break;

        // use
        case "use":
        case "activate":
            actionHandler.useObject(targetObject);
            break;

        // pickup
        case "pickup":
        case "grab":
        case "pick":
        case "take":
        case "steal":
            actionHandler.pickupObject(targetObject);
            break;

        // wear
        case "wear":
        case "equip":
        case "put":
            actionHandler.wearObject(targetObject);
            break;

        // open
        case "open":
        case "unlock":
        case "reveal":
            actionHandler.openObject(targetObject);
            break;

        // look at
        case "look":
            actionHandler.lookAtObject(targetObject);
            break;

        // unknown command
        default:
            textPrompt.printText(defaultValues.unknownCommand);
            break;
        }
    }
 public void OnExitRoom(BasePlayerMover mover, RoomObject room)
 {
 }
示例#25
0
    protected override void Awake()
    {
        m_parentRoomObject = this.GetComponentInParent<RoomObject>(true);

        base.Awake();
    }
示例#26
0
 private void ConnectRoom(GameObject doorObject, RoomObject b)
 {
     var randomIdx = UnityEngine.Random.Range(0, b.doors.Length - 1);
     ConnectDoors(doorObject, b.doors[randomIdx]);
 }
    public void registerModelObjects()
    {
        _versionObject = new VersionObject();

        _selfUserObject = new UserObject();
        _leftUserObject = new UserObject();
        _rightUserObject = new UserObject();

        _roomObject = new RoomObject();
        _deskObject = new DeskObject();

        _userLoginObject = new UserLoginObject();
        _userEditProfileObject = new UserEditProfileObject();

        _userSitOnDeskObject = new UserSitOnDeskObject();
        _deskJiaoDiZhuObject = new DeskJiaoDiZhuObject();

        _deskCardsPromptObject = new DeskCardsPromptObject();
        _deskChuPaiObject = new DeskChuPaiObject();
        _deskCardsValidateObject = new DeskCardsValidateObject();
        _userCheckResumePlayObject = new UserCheckResumePlayObject();
    }
 public void OnPostRoomEvent(BasePlayerMover mover, RoomObject room)
 {
 }
 public void OnPreRoomEvent(BasePlayerMover mover, RoomObject room)
 {
     _playIdleAnimations();
 }
        public virtual void MouseUp(MouseEventArgs e, RoomEditorState state)
        {
            _movingObjectWithMouse = false;
            _lastSelectedObject = _selectedObject;

            if (e.Button == MouseButtons.Middle)
            {
                ShowCoordMenu(e, state);
            }
        }
示例#31
0
    /// <summary>
    /// Goes through all possible paths and picks the one with the lowest score to address the next desire.
    /// </summary>
    private void pickNextPath()
    {
        if (roomPathMap.Count == 0 && IPpathMap.Count == 0)
        {
            return;
        }

        float      lowestScore = float.MaxValue;
        int        IPidx       = -1;
        RoomObject targetObj   = null;
        bool       useIPmap    = false;

        //get the score for each interaction point to determine the final target
        foreach (RoomObject obj in objectsToTarget)
        {
            Room room = obj.GetRoom();
            //The camper is not in the same room as this object
            if (roomPathMap.ContainsKey(room))
            {
                if (getLowestRoomPathScore(room, obj, ref lowestScore, ref IPidx, ref targetObj))
                {
                    useIPmap = false;
                }
            }
            else  //the camper is in the same room as this object
            {
                if (getLowestIPpathScore(obj, ref lowestScore, ref IPidx, ref targetObj))
                {
                    useIPmap = true;
                }
            }
        }
        if (targetObj == null || IPidx == -1)
        {
            SetPathStateNone();
            return; //TODO better handle
        }

        //set up the roomTarget with the lowest scoring path
        if (roomTarget == null)
        {
            roomTarget = new Room.RoomTarget(targetObj.GetRoom(), targetObj, IPidx);
        }
        else
        {
            roomTarget.Initialize(targetObj.GetRoom(), targetObj, IPidx);
        }

        //create a path to the room, not the IP
        if (useIPmap)
        {
            path = IPpathMap[targetObj.interactionPoints[IPidx]];
            roomTarget.GetInteractionPoint().AddCamperEnRoute(this);
        }
        //create a path to the IP
        else
        {
            path = roomPathMap[targetObj.GetRoom()];
            //append the IP path so we go straight to that
            path.AppendPathToEnd(roomTarget.GetInteractionPoint().GetPath());
            roomTarget.GetInteractionPoint().AddCamperEnRoute(this);
        }

        pathState = PathState.TravelingOnPath;
    }
        private void ContextMenuEventHandler(object sender, EventArgs e)
        {
            ToolStripMenuItem item = (ToolStripMenuItem)sender;
            if (item.Name == MENU_ITEM_DELETE)
            {
                if (Factory.GUIController.ShowQuestion("Are you sure you want to delete this object?") == DialogResult.Yes)
                {
                    _room.Objects.Remove(_selectedObject);
                    foreach (RoomObject obj in _room.Objects)
                    {
                        if (obj.ID >= _selectedObject.ID)
                        {
                            obj.ID--;
                        }
                    }
                    _selectedObject = null;
                    Factory.GUIController.SetPropertyGridObject(_room);
                    SetPropertyGridList();
                    _room.Modified = true;
                    _panel.Invalidate();
                }
            }
            else if (item.Name == MENU_ITEM_NEW)
            {
                if (_room.Objects.Count >= Room.MAX_OBJECTS)
                {
                    Factory.GUIController.ShowMessage("This room already has the maximum " + Room.MAX_OBJECTS + " objects.", MessageBoxIcon.Information);
                    return;
                }
                RoomObject newObj = new RoomObject(_room);
                newObj.ID = _room.Objects.Count;
                newObj.StartX = SetObjectCoordinate(_menuClickX);
                newObj.StartY = SetObjectCoordinate(_menuClickY);
                _room.Objects.Add(newObj);
                _selectedObject = newObj;
                SetPropertyGridList();
                Factory.GUIController.SetPropertyGridObject(newObj);
                _room.Modified = true;
                _panel.Invalidate();
            }
            else if (item.Name == MENU_ITEM_OBJECT_COORDS)
            {
                int tempx = _selectedObject.StartX;
                int tempy = _selectedObject.StartY;

                if ((Factory.AGSEditor.CurrentGame.Settings.UseLowResCoordinatesInScript) &&
                    (_room.Resolution == RoomResolution.HighRes))
                {
                    tempx = tempx / 2;
                    tempy = tempy / 2;
                }

                string textToCopy = tempx.ToString() + ", " + tempy.ToString();
                Utilities.CopyTextToClipboard(textToCopy);
            }
        }
 public void OnEnteredRoom(BasePlayerMover mover, RoomObject room)
 {
 }
 private void GUIController_OnPropertyObjectChanged(object newPropertyObject)
 {
     if (newPropertyObject is RoomObject)
     {
         _selectedObject = (RoomObject)newPropertyObject;
         _panel.Invalidate();
     }
     else if (newPropertyObject is Room)
     {
         _selectedObject = null;
         _panel.Invalidate();
     }
 }
示例#35
0
	// Use this for initialization
	void Start () {
		t = 0;
		currentRoom = Dungeon.instance.dungeon_rooms[0];
		animator = GetComponentInChildren<TinkerAnimator>();
		cam = Camera.main;
	}
示例#36
0
 bool lastCellInRow(Vector3 nextBottomRight, RoomObject room)
 {
     return(nextBottomRight.z == room.npc.boundary [0, 0].z);
 }
 void setupLight(RoomObject room)
 {
 }
示例#38
0
    /// <summary>
    /// For all IPs of an object in a room, calculate their travel score. Set values based on the lowest score.
    /// </summary>
    /// <param name="room">The room the object is in</param>
    /// <param name="obj">The object containing the IPs</param>
    /// <param name="lowestScore">Outputting the lowest score</param>
    /// <param name="IPidx">Outputting the IP index of the IP with the lowest score on the obj</param>
    /// <param name="targetObj">Outputting the Room Object with the lowest score</param>
    /// <returns>True if a room path has the lowest score. Flase otherwise.</returns>
    private bool getLowestRoomPathScore(Room room, RoomObject obj, ref float lowestScore, ref int IPidx, ref RoomObject targetObj)
    {
        //get the path size from the camper to the room's entrance
        float baseScore  = roomPathMap[room].GetPathLength();
        bool  useRoomMap = false;

        for (int i = 0; i < obj.interactionPoints.Count; i++)
        {
            //for each interaction point, get the path length from the IP to the room entrance + wait time
            InteractionPoint ip    = obj.interactionPoints[i];
            float            score = baseScore + ip.GetIPScore();

            if (score < lowestScore)
            {
                useRoomMap  = true;
                IPidx       = i;
                targetObj   = obj;
                lowestScore = score;
            }
        }
        return(useRoomMap);
    }
示例#39
0
 /// <summary>
 /// Checks to see if a room is contained in the grid.
 /// </summary>
 /// <param name="room">The room to check for.</param>
 /// <returns>True if the room is in the grid, otherwise false.</returns>
 public bool ContainsRoom(RoomObject room)
 {
     return m_registeredRooms.Contains(room);
 }
示例#40
0
 public void MouseDownAlways(MouseEventArgs e, RoomEditorState state)
 {
     _selectedObject = null;
 }
示例#41
0
 /// <summary>
 /// Executed when roomobject list removed an item
 /// </summary>
 /// <param name="RoomObject"></param>
 protected virtual void OnRoomObjectRemoved(RoomObject RoomObject)
 {
 }
示例#42
0
 /// <summary>
 /// Executed when roomobject list changed an item
 /// </summary>
 protected virtual void OnRoomObjectChanged(RoomObject RoomObject)
 {
 }
示例#43
0
 protected override void OnEnable()
 {
     targetRoom  = (RoomObject)target;
     newPosition = Vector3Int.CeilToInt(targetRoom.roomPosition);
 }
示例#44
0
        /// <summary>
        /// Executes a Task 'cast'
        /// </summary>
        /// <param name="Task"></param>
        protected void DoCast(BotTaskCast Task)
        {
            SpellObject spellObject = null;
            StatList    spellStat   = null;
            string      sureTarget  = Task.Target;
            string      sureWhere   = Task.Where;

            // handle selftargeting
            if (sureTarget.ToLower().Equals(SpellBotConfig.XMLVALUE_SELF))
            {
                if (Data.AvatarObject == null)
                {
                    Log("WARN", "Cant execute task 'cast' " + Task.Name + ". Technical interruption changed the target.");
                    return;
                }

                sureTarget = Data.AvatarObject.Name.ToLower();
                sureWhere  = SpellBotConfig.XMLVALUE_ROOM;
            }

            // try to get the spell from the spells
            spellObject = Data.SpellObjects.GetItemByName(Task.Name, false);

            // try to get stat for % value
            if (spellObject != null)
            {
                spellStat = Data.AvatarSpells.GetItemByID(spellObject.ID);
            }

            // one not found
            if (spellObject == null || spellStat == null)
            {
                // log
                Log("WARN", "Cant execute task 'cast'. Spell " + Task.Name + " found.");

                return;
            }

            // handle spells above cap
            if (spellStat.SkillPoints >= Task.Cap)
            {
                if (Task.OnMax.ToLower() == SpellBotConfig.XMLVALUE_QUIT)
                {
                    // log
                    Log("BOT", "Quitting.. spell " + spellObject.Name + " reached 99%.");

                    // prepare quit
                    IsRunning = false;
                    return;
                }
                else if (Task.OnMax.ToLower() == SpellBotConfig.XMLVALUE_SKIP)
                {
                    // log
                    Log("BOT", "Skipped task 'cast' " + spellObject.Name + " (99%)");

                    return;
                }
            }

            // spell doesn't need a target
            if (spellObject.TargetsCount == 0)
            {
                // send castreq
                SendReqCastMessage(spellObject);

                // log
                Log("BOT", "Executed task 'cast' " + spellObject.Name);
            }

            // speed needs a target
            else if (spellObject.TargetsCount > 0)
            {
                // marked to cast on roomobject
                if (sureWhere == SpellBotConfig.XMLVALUE_ROOM)
                {
                    // try to get the target
                    RoomObject roomObject =
                        Data.RoomObjects.GetItemByName(sureTarget, false);

                    // target not found
                    if (roomObject == null)
                    {
                        // log
                        Log("WARN", "Can't execute task 'cast'. RoomObject " + sureTarget + " not found.");

                        return;
                    }

                    // send castreq
                    ReqCastMessage reqCastMsg = new ReqCastMessage(
                        spellObject.ID, new ObjectID[] { new ObjectID(roomObject.ID) });

                    SendGameMessage(reqCastMsg);

                    // log
                    Log("BOT", "Executed task 'cast' " + spellObject.Name);
                }

                // cast on inventory item
                else if (sureWhere == SpellBotConfig.XMLVALUE_INVENTORY)
                {
                    // try to get the target
                    InventoryObject inventoryObject =
                        Data.InventoryObjects.GetItemByName(sureTarget, false);

                    // target not found
                    if (inventoryObject == null)
                    {
                        // log
                        Log("WARN", "Can't execute task 'cast'. Item " + sureTarget + " not found.");

                        return;
                    }

                    // send castreq
                    ReqCastMessage reqCastMsg = new ReqCastMessage(
                        spellObject.ID, new ObjectID[] { new ObjectID(inventoryObject.ID) });

                    SendGameMessage(reqCastMsg);

                    // log
                    Log("BOT", "Executed task 'cast' " + spellObject.Name);
                }
                else
                {
                    // log
                    Log("WARN", "Can't execute task 'cast'. " + sureWhere + " is unknown 'where'.");
                }
            }
        }
示例#45
0
 public void SetRoom(RoomObject r)
 {
     m_room = r;
 }
示例#46
0
    /// <summary>
    /// Checks if the string is a regular command and forwards targetObject to ActionHandler.
    /// </summary>
    /// <param name="command">The first word in the user's input</param>
    /// <param name="targetObject">The object found in user's input</param>
    private void parseRegularCommands(string command, RoomObject targetObject)
    {
        switch (command)
        {
        // eat
        case "iss":
        case "esse":
        case "ess":
        case "essen":
        case "verzehre":
        case "friss":
            actionHandler.eatObject(targetObject);
            break;

        // drink
        case "trink":
            actionHandler.drinkObject(targetObject);
            break;

        // talk
        case "rede":
        case "sprich":
        case "sage":
            actionHandler.talkToPerson(targetObject);
            break;

        // kill
        case "kill":
        case "stab":
        case "cleave":
        case "murder":
            actionHandler.killPerson(targetObject);
            break;

        // break
        case "zerstöre":
        case "wirf":
        case "kaputt":
        case "zerschlage":
            actionHandler.BreakObject(targetObject);
            break;

        // sit
        case "sit":
        case "sitze":
        case "setz":
        case "setzen":
        case "hinsetzen":
            actionHandler.sitOnObject(targetObject);
            break;

        // use
        case "use":
        case "benutze":
        case "nutze":
        case "brauche":
        case "benutz":
        case "schließe":
        case "zumachen":
        case "schhließen":
            actionHandler.useObject(targetObject);
            break;

        // pickup
        case "pickup":
        case "nimm":
        case "nehme":
        case "take":
        case "greif":
            actionHandler.pickupObject(targetObject);
            break;

        // wear
        case "wear":
        case "trage":
        case "anziehen":
            actionHandler.wearObject(targetObject);
            break;

        // open
        case "open":
        case "öffne":
        case "öffnen":
            actionHandler.openObject(targetObject);
            break;

        // look at
        case "look":
        case "schau":
        case "schaue":
        case "anschauen":
            actionHandler.lookAtObject(targetObject);
            break;

        // unknown command
        default:
            textPrompt.printText(defaultValues.unknownCommand);
            break;
        }
    }
示例#47
0
    public static GameObject SetupRoomObject(GameObject go, RoomObject obj)
    {
        go.name = obj.prefabName + "_" + obj.ID;
        go.transform.localPosition = new Vector3(obj.coords.x, obj.coords.y, go.transform.localPosition.z);
        SpawnedData spawnedData = go.GetComponent <SpawnedData>();

        if (obj.data != null && obj.data.Length != 0)
        {
            if (spawnedData == null)
            {
                Debug.LogError("Spawned prefab not have SpawnedData script: " + go.name);
                return(null);
            }

            spawnedData.spawnedData = obj.data;
        }
        if (spawnedData != null)
        {
            spawnedData.roomObject = obj;
        }

        if (go.GetComponent <TypedObject>() != null)
        {
            TypedObject.Type type = go.GetComponent <TypedObject>().Types[obj.type];
            go.GetComponent <TypedObject>().TypeIndex = obj.type;
            go.transform.localScale = new Vector3(type.Size.x, type.Size.y, go.transform.localScale.z);
            for (int i = 0; i < go.transform.childCount; i++)
            {
                go.transform.GetChild(i).position = go.transform.position + go.transform.GetChild(i).localPosition;
            }

            Mesh mesh = MonoBehaviour.Instantiate(GameManager.singleton.OnePlane);
            mesh.SetUVs(0, new List <Vector2>()
            {
                new Vector2(type.MinUV.x, type.MinUV.y),
                new Vector2(type.MaxUV.x, type.MinUV.y),
                new Vector2(type.MaxUV.x, type.MaxUV.y),
                new Vector2(type.MinUV.x, type.MaxUV.y)
            });
            go.GetComponent <MeshFilter>().mesh = mesh;
        }

        MeshFilter filter = go.GetComponent <MeshFilter>();

        if (filter != null && filter.mesh != null)
        {
            Mesh mesh = filter.mesh;
            mesh.RecalculateBounds();
            mesh.RecalculateNormals();
            mesh.RecalculateTangents();
        }

        if (obj.mirrorX)
        {
            Vector3[] a = go.GetComponent <MeshFilter>().mesh.vertices;
            a = null;
        }

        go.transform.localScale = new Vector3(go.transform.localScale.x * (obj.mirrorX ? -1 : 1), go.transform.localScale.y * (obj.mirrorY ? -1 : 1), go.transform.localScale.z);
        if (filter != null && filter.mesh != null)
        {
            try {
                go.transform.position += new Vector3(
                    obj.mirrorX
                                                ? (filter.mesh.vertices[1].x -
                                                   filter.mesh.vertices[0].x) * -go.transform.localScale.x
                                                : 0,
                    obj.mirrorY
                                                ? (filter.mesh.vertices[2].y -
                                                   filter.mesh.vertices[0].y) * -go.transform.localScale.y
                                                : 0, 0); // mark
            }
            catch (IndexOutOfRangeException e) {
                Debug.Log("OutOfRange");
            }
        }

        int childCount = go.transform.childCount;

        if (go.GetComponent <SimpleObject>().NotMirrorChildrensOnSpawn)
        {
            for (int i = 0; i < childCount; i++)
            {
                go.transform.GetChild(i).localScale = new Vector3(go.transform.GetChild(i).localScale.x *(obj.mirrorX ? -1 : 1), go.transform.GetChild(i).localScale.y *(obj.mirrorY ? -1 : 1), go.transform.GetChild(i).localScale.z);
            }
        }

        return(go);
    }
示例#48
0
        private static RoomObject DeepCopyRoomObject(RoomObject obj, Room room, Game game, Player user)
        {
            RoomObject copy = null;

            if (obj != null)
            {
                switch (obj.GetType().Name)
                {
                case "StructureSpawn":
                    var spawn = (StructureSpawn)obj;
                    copy = new StructureSpawn()
                    {
                        Game = game,
                        My   = spawn.Owner != null && spawn.Owner.ID == user.ID,
                        Pos  = room.GetPositionAt(spawn.Pos.X, spawn.Pos.Y),
                        Room = room,

                        Energy         = spawn.Energy,
                        EnergyCapacity = spawn.EnergyCapacity,
                        HitPoints      = spawn.HitPoints,
                        HitPointsMax   = spawn.HitPointsMax,
                        ID             = spawn.ID,
                        IsActive       = spawn.IsActive,
                        Name           = spawn.Name,
                        Owner          = spawn.Owner,
                        Spawning       = spawn.Spawning,
                        Type           = spawn.Type,
                        Memory         = new Dictionary <string, object>(),
                    };

                    game.Memory.Add(copy.ID, ((StructureSpawn)copy).Memory);

                    if (spawn.Memory != null)
                    {
                        foreach (string key in spawn.Memory.Keys)
                        {
                            ((StructureSpawn)copy).Memory.Add(key, room.Memory[key]);
                        }

                        ((StructureSpawn)copy).Memory["#"] = 2;
                    }
                    break;

                case "StructureController":
                    var controller = (StructureController)obj;
                    copy = new StructureController()
                    {
                        Game = game,
                        Room = room,

                        Owner = controller.Owner,
                        My    = controller.Owner != null && controller.Owner.ID == user.ID,

                        HitPoints    = controller.HitPoints,
                        HitPointsMax = controller.HitPointsMax,
                        ID           = controller.ID,
                        IsActive     = controller.IsActive,
                        Pos          = controller.Pos,
                        Type         = controller.Type,

                        Progress         = controller.Progress,
                        ProgressTotal    = controller.ProgressTotal,
                        Level            = controller.Level,
                        TicksToDowngrade = controller.TicksToDowngrade,
                    };
                    break;

                case "Source":
                    var source = (Source)obj;
                    copy = new Source()
                    {
                        Game = game,
                        Room = room,

                        Energy            = source.Energy,
                        EnergyCapacity    = source.EnergyCapacity,
                        ID                = source.ID,
                        Pos               = source.Pos,
                        TicksToRegenerate = source.TicksToRegenerate,
                    };
                    break;

                case "Creep":
                    var creep = (Creep)obj;

                    // TODO: Player-defined child class

                    copy = new Creep()
                    {
                        Game = game,
                        My   = (creep.Owner.ID == user.ID),
                        Room = room,

                        Body               = creep.Body,
                        Fatigue            = creep.Fatigue,
                        HitPoints          = creep.HitPoints,
                        HitPointsMax       = creep.HitPointsMax,
                        ID                 = creep.ID,
                        Name               = creep.Name,
                        NotifyWhenAttacked = creep.NotifyWhenAttacked,
                        Owner              = creep.Owner,
                        Pos                = creep.Pos,
                        Saying             = creep.Saying,
                        Spawning           = creep.Spawning,
                        TicksToLive        = creep.TicksToLive,

                        Memory    = new Dictionary <string, object>(),
                        _carrying = new Dictionary <ResourceTypes, int>(),
                    };

                    game.Memory.Add(copy.ID, ((Creep)copy).Memory);

                    foreach (string key in creep.Memory.Keys)
                    {
                        ((Creep)copy).Memory.Add(key, creep.Memory[key]);
                    }

                    ((Creep)copy).Memory["#"] = 2;

                    foreach (var key in creep._carrying.Keys)
                    {
                        ((Creep)copy)._carrying.Add(key, creep._carrying[key]);
                    }
                    break;

                default:
                    string type = obj.GetType().Name;
                    break;
                }
            }

            return(copy);
        }
示例#49
0
 /// <summary>
 /// Executed when roomobjectlist added an item
 /// </summary>
 /// <param name="RoomObject"></param>
 protected virtual void OnRoomObjectAdded(RoomObject RoomObject)
 {
 }
 public void setup(RoomObject room)
 {
     setupLight(room);
     base.generate(adjustPositionsBasedOnSide(room));
 }
示例#51
0
    /// <summary>
    /// Registers an existing room with a grid location.
    /// </summary>
    /// <param name="room">The room to register.</param>
    public void RegisterRoom(RoomObject room)
    {
        Location gridPosition = room.RoomLocation;

        int placeX = gridPosition.X;
        int placeY = gridPosition.Y;

        // Cannot register a room twice
        Assert.IsFalse(ContainsRoom(room));

        // Cannot have a piece hanging off
        Assert.IsFalse((placeX < 0 || placeX >= m_worldMaxXSize) ||
                       (placeY < 0 || placeY >= m_worldMaxYSize));

        // Cannot register over a room that already exists.
        Assert.IsNull(m_worldGrid[placeX, placeY]);

        m_worldGrid[placeX, placeY] = room;
    }