public override void ApplyEvent(GameWorldController gameWorldController, GameEvent.OnEventCompleteDelegate onComplete)
    {
        base.ApplyEvent(gameWorldController, onComplete);

        EnergyTankEntity energyTankEntity = gameWorldController.Model.GetEnergyTankEntity(EnergyTankId);

        energyTankEntity.Energy = (uint)Math.Max((int)energyTankEntity.Energy - EnergyDrained, 0);

        if (DrainerFaction == GameConstants.eFaction.ai)
        {
            MobEntity mobEntity = gameWorldController.Model.GetMobEntity(DrainerId);

            mobEntity.Energy = mobEntity.Energy + EnergyDrained;
        }
        else if (DrainerFaction == GameConstants.eFaction.player)
        {
            CharacterEntity characterEntity = gameWorldController.Model.GetCharacterEntity(DrainerId);

            characterEntity.Energy = characterEntity.Energy + EnergyDrained;
        }

        // Completes immediately
        if (onComplete != null)
        {
            onComplete();
        }
    }
Esempio n. 2
0
 public override void eventHappened(GameEvent ge)
 {
     if(ge.getParameter("Inventory") == this || ge.getParameter("Inventory") == this.Entity.gameObject)
     {
         Item item = (Item)ge.getParameter("Item");
         switch (ge.Name.ToLower())
         {
         case "open inventory":
             openInventory = true;
             events.Add(ge);
             break;
         case "add item":
             itemsToAdd.Add (item);
             events.Add(ge);
             break;
         case "remove item":
             itemsToRemove.Add(item);
             events.Add(ge);
             break;
         case "use item":
             itemsToUse.Add(item);
             events.Add(ge);
             break;
         }
     }
 }
Esempio n. 3
0
    ///////////////////////////////////////////////////////////////////////////
    // EVENT LISTENING
    ///////////////////////////////////////////////////////////////////////////
    public void eventReceived(GameEvent e)
    {
        if (e is PlayerActionEvent)
        {
            KeyCode pressedKey = (e as PlayerActionEvent).pressedKey;

            switch (pressedKey){
                case KeyCode.Space:
                    Debug.Log ("ESPAÇOOOOOOOOOOOOOOOOOOO");
                    break;
                case KeyCode.UpArrow:
                    FireBullet("Up");
                    break;
                case KeyCode.LeftArrow:
                    FireBullet("Left");
                    break;
                case KeyCode.RightArrow:
                    FireBullet("Right");
                    break;
                case KeyCode.DownArrow:
                    FireBullet("Down");
                    break;
                default :
                    Debug.Log(pressedKey.GetTypeCode());
                    break;
            }
        }
    }
Esempio n. 4
0
 //Out's a game event if it exists otherwise it will out null
 public void GetEventFromPool(string key, out GameEvent gameEvent)
 {
     if (_eventDictionary.ContainsKey (key))
         gameEvent = _eventDictionary [key];
     else
         gameEvent = null;
 }
Esempio n. 5
0
 void Awake()
 {
     for (int i = 0; i < eventNames.Length; i++) {
         GameEvent gameEvent = new GameEvent();
         AddEventToPool (eventNames[i], ref gameEvent);
     }
 }
Esempio n. 6
0
 //Adds a game event to the collection of events if it does not exist
 //or replaces the event with the Key if it does exist
 public void AddEventToPool(string key, ref GameEvent gameEvent)
 {
     if (!_eventDictionary.ContainsKey (key))
         _eventDictionary.Add (key, gameEvent);
     else
         _eventDictionary [key] = gameEvent;
 }
Esempio n. 7
0
 private void FilterEvent(GameEvent gameEvent)
 {
     foreach (EventFilter filter in _filters)
     {
         filter.FilterEvent(gameEvent);
     }
 }
Esempio n. 8
0
 public void SendEvent(GameEvent gameEvent, List<IEventReceiver> receivers)
 {
     foreach (IEventReceiver receiver in receivers)
     {
         SendEvent(gameEvent, receiver);
     }
 }
    public void SetAlertLevel(GameEvent.eEventLevel alertLevel)
    {
        Color orange = new Color(1f,.55f,0f);
        switch (alertLevel)
        {
            case GameEvent.eEventLevel.Informational:
                ButtonText.color = Color.white;
                break;

            case GameEvent.eEventLevel.Positive:
                ButtonText.color = Color.green;
                break;

            case GameEvent.eEventLevel.Moderate:
                ButtonText.color = Color.yellow;
                break;

            case GameEvent.eEventLevel.Serious:
                ButtonText.color = orange;
                break;

            case GameEvent.eEventLevel.Critical:
                ButtonText.color = Color.red;
                break;

            default:
                ButtonText.color = Color.white;
                break;
        }
    }
 public ChangeSwitchEventEditor()
 {
     this.ge = ScriptableObject.CreateInstance<GameEvent> ();
     ge.Name = this.EventName;
     ge.setParameter ("switch", "");
     ge.setParameter ("value", true);
 }
 public void HandleEvent(GameEvent ge)
 {
     Vector3 mousepos = InputWatcher.GetInputPosition ();
     if (ge.type.Equals ("mouse_release")) {
         //Stops the dial from spinning more
         spinner = false;
         //Only tries to lock if the spinner has a chance of moving
         if(clickTime > clickDelay){
             //Locks position to nearest interval of 60
             float rotation = transform.eulerAngles.z;
             float lockRot = Mathf.Round(rotation /90.0f)*90;
             transform.rotation = Quaternion.Euler(0, 0, lockRot);
             PieceController pc = EditorController.GetFloatingPiece();
             if(pc != null)
                 pc.SetRotation(360 - transform.rotation.eulerAngles.z);
         }
         //resets time
         clickTime = 0;
         touchDown = false;
     }else if(ge.type.Equals("mouse_click")){
         //Allows the dial to start spinning
         if(spinner == false){
             float dist = Mathf.Sqrt(((mousepos.x-transform.position.x)*(mousepos.x-transform.position.x))
                                     +((mousepos.y-transform.position.y)*(mousepos.y-transform.position.y)));
             if(dist > radius)
                 return;
             originalRot = Mathf.Atan2(mousepos.y-transform.position.y,mousepos.x-transform.position.x);
             origz = transform.eulerAngles.z;
             //Debug.Log ("new original degrees: " + originalRot);
         }
         spinner = true;
         touchDown = true;
     }
 }
    public override void ApplyEvent(GameWorldController gameWorldController, GameEvent.OnEventCompleteDelegate onComplete)
    {
        GameData currentGame = gameWorldController.Model.CurrentGame;

        if (currentGame.CharacterID != _characterState.character_id)
        {
            base.ApplyEvent(gameWorldController, onComplete);

            // Add the character state to the current game state
            currentGame.SetCharacterById(_characterState.character_id, _characterState);

            // Create a new character entity using the character data just set in the game state
            {
                CharacterEntity characterEntity = new CharacterEntity(_characterState.character_id);

                characterEntity.AddToGameWorld(gameWorldController);
            }
        }
        else
        {
            Debug.Log("Ignoring apply CharacterJoinedGame event for primary character_id=" + _characterState.character_id);
        }

        // Completes immediately
        if (onComplete != null)
        {
            onComplete();
        }
    }
Esempio n. 13
0
 public void Notify(GameObject aEntity, GameEvent aEvent) // Entity responsible for the event and the event that occured
 {
     for (int i = 0; i < m_NumObservers; i++)
     {
         m_ObserverList[i].OnNotify(ref aEntity, aEvent);
     }
 }
    //bool decisionMade;
    public void AssignEvent(GameEvent newEvent, MapRegion eventRegion, List<PartyMember> movedMembers)
    {
        GameEventManager.mainEventManager.drawingEvent=true;
        currentTeamRegion=eventRegion;
        teamList=movedMembers;
        assignedEvent=newEvent;
        descriptionText.text=newEvent.GetDescription(currentTeamRegion,teamList);
        //decisionMade=false;

        List<EventChoice> choices=newEvent.GetChoices(currentTeamRegion,teamList);
        if (choices!=null)
        {
            foreach (EventChoice choice in choices)
            {
                Button newButton=Instantiate(decisionButtonPrefab);
                newButton.transform.SetParent(transform.FindChild("Event Panel").FindChild("Decision Group"),false);
                //this is required, otherwise lambda listener only captures the last choice iteration
                newButton.GetComponentInChildren<Text>().text=choice.choiceTxt;
                newButton.interactable=!choice.grayedOut;
                newButton.onClick.AddListener(()=>ResolveChoice(newButton.GetComponentInChildren<Text>().text));
            }
        }
        else
        {
            //Create exit button
            Button newButton=Instantiate(decisionButtonPrefab);
            newButton.transform.SetParent(transform.FindChild("Event Panel").FindChild("Decision Group"),false);
            newButton.GetComponentInChildren<Text>().text="Close";
            newButton.onClick.AddListener(CloseChoiceScreen);
        }
    }
Esempio n. 15
0
    public void HandleEvent(GameEvent ge)
    {
        if(ge.type.Equals("enemy_finished") || ge.type.Equals("boss_hit")){
            string key = (string)ge.args [0];
            float damage = (float)ge.args[1];

            if (ge.type.Equals("boss_hit")) {
                key = "BOSSLOG" + key; //bosses don't have filenames, so mark this entry as special
            }

            if(enemyDamages.ContainsKey(key)){ //if this is an enemy type that's already hit
                float newdmg = damage + enemyDamages[key]; //add new damage to old damage
                enemyDamages[key] = newdmg; //update
            }else{ //a new enemy type
                enemyDamages.Add(key,damage); //make new entry
            }
        }else if(ge.type.Equals("piece_obtained")){
            string key = (string)ge.args[0];
            if(pieceCounts.ContainsKey(key)){
                pieceCounts[key]++;
            }else{
                pieceCounts.Add(key,1);
            }
        }else if(ge.type.Equals("game_over")){
            GameOver();
        }else if (ge.type.Equals("you_won")) {
            YouWon();
        }
    }
	private void ClimbOverEdgeMove(GameEvent gEvent)
	{
		if(charState.IsClimbing() && gEvent == GameEvent.ClimbOverEdge && !noClimbOver)
		{
//			LeanTweenPath path = new LeanTweenPath();
//			LeanTweenVisual tween = new LeanTweenVisual();
////
			if (charState.IsVineClimbing())
			{
//				tween = vineTween;
//				path = vinePath;
//				print("ClimbOverVine: should start climbing over vine");
			}
			else if(charState.IsEdgeClimbing())
			{
//				tween = edgeTween;
//				path = edgePath;
			}

			//EnableClimbOverTween(path, tween, true);

			//path.transform.parent = null;
			animator.SetTrigger("ClimbOverEdge");

			RSUtil.Instance.DelayedAction(() => {
				//path.transform.parent = transform;
				//path.transform.localPosition = Vector3.zero;
				//EnableClimbOverTween(path, tween, false);
				EventManager.OnCharEvent(GameEvent.FinishClimbOver);
				noClimbOver = false;
			}, tweenDuration);

		}
	}
 ///////////////////////////////////////////////////////////////////////////
 // EVENT LISTENING
 ///////////////////////////////////////////////////////////////////////////
 public void eventReceived(GameEvent e)
 {
     if (e is PlayerFireEvent) {
         Debug.Log ("send fireProjectile");
         GetComponent<MonkController>().fireProjectile();
     }
 }
Esempio n. 18
0
 public AddItemEditor()
 {
     this.ge = ScriptableObject.CreateInstance<GameEvent> ();
     ge.Name = this.EventName;
     ge.setParameter ("item", null);
     ge.setParameter ("inventory", null);
 }
Esempio n. 19
0
    public void HandleEvent(GameEvent ge)
    {
        if(Pause.paused)
            return;
        Vector3 mousepos = InputWatcher.GetCanvasInputPosition((RectTransform)canvas.transform);
        if(ge.type.Equals("mouse_click")){
            if(spinning)
                return;

            spinning = true;
            startingDialRot = transform.eulerAngles.z * Mathf.Deg2Rad;
            startingMouseRot = Mathf.Atan2(mousepos.y-anchorY,mousepos.x-anchorX);
        }else if(ge.type.Equals("mouse_release")){
            if(!spinning)
                return;
            spinning = false;
            float mouseAngle = Mathf.Atan2 ((mousepos.y - anchorY) - transform.position.y, (mousepos.x-anchorX) - transform.position.x);
            float angleChange = mouseAngle-startingMouseRot;
            transform.eulerAngles = new Vector3(transform.eulerAngles.x,transform.eulerAngles.y,(startingDialRot + angleChange)*Mathf.Rad2Deg);
            float rotation = transform.eulerAngles.z;
            float lockRot = Mathf.Round (rotation / 60) * 60;
            UpdateSelection(lockRot);
            transform.rotation = Quaternion.Euler (0, 0, lockRot);
        }
    }
Esempio n. 20
0
    ///////////////////////////////////////////////////////////////////////////
    // EVENT LISTENING
    //////////////////////////////////////////////////////////////////////////
    public void eventReceived(GameEvent e)
    {
        if (e is NPCHealthEvent) {
            NPCHealthEvent evento = (e as NPCHealthEvent);

            ///////////////////////////////////////
            /// Confere se foi o monstro alvo
            var selfID = gameObject.GetInstanceID();
            if (selfID == evento.NPCInstanceID){

                NPCHealthChange = evento.NPCHealth;

                if ((NPCHealthLvl >= NPCMaxHealth / 2) && (NPCHealthLvl+NPCHealthChange < NPCMaxHealth / 2))
                    GameEventManager.post(new NPCStateEvent(selfID, 2)); //dispara o evento de transformação do inimigo em Vegetal. Esse evento será disparado com o efeito do antidoto

                if ((NPCHealthLvl < NPCMaxHealth / 2) && (NPCHealthLvl + NPCHealthChange >= NPCMaxHealth / 2))
                    GameEventManager.post(new NPCStateEvent(selfID, 1)); //dispara o evento de transformação do vegetal em Inimigo. Esse evento será disparado pelo efeito do veneno no ataque dos inimigos no vegetal, que poderá transformar-lo novamente em vegetalInimigo

                NPCHealthLvl += NPCHealthChange;
                if (NPCHealthLvl <= 0){
                    Die ();
                    NPCHealthLvl = 0;
                }

                ///////////////////////////////////////////////////////////////////
                /// Exibe Dano
                var selfTransform = GetComponent<Transform> ();
                DamagePopUp.ShowMessage (NPCHealthChange.ToString(), selfTransform.position);
            }
        }
    }
Esempio n. 21
0
 public override void Execute(GameEvent gameEvent)
 {
     bool finished = false;
     GameObject actor = null;
     if(this.show3)
     {
         actor = (GameObject)gameEvent.spawnedPrefabs[this.actorID];
     }
     else
     {
         actor = gameEvent.actor[this.actorID].GetActor();
     }
     if(actor != null && gameEvent.waypoint[this.waypointID] != null)
     {
         ActorEventMover comp = (ActorEventMover)actor.gameObject.GetComponent("ActorEventMover");
         if(comp == null)
         {
             comp = (ActorEventMover)actor.gameObject.AddComponent("ActorEventMover");
         }
         comp.StartCoroutine(comp.RotateToObject(actor.transform, gameEvent.waypoint[this.waypointID], this.interpolate, this.time));
         if(this.wait)
         {
             finished = true;
             gameEvent.StartTime(this.time, this.next);
         }
     }
     if(!finished)
     {
         gameEvent.StepFinished(this.next);
     }
 }
Esempio n. 22
0
 // Initial cost for employees is one weeks pay
 public void NewEvent(int EventIndex)
 {
     GameEvent NewEvent = new GameEvent ();
     NewEvent.EventIndex = EventIndex;
     switch (EventIndex) {
         case (0):	// patients give money
             NewEvent.EventText = "Application: Patient" + "\n" +
                                 "Name: Steve" + "\n" +
                                 "Income: $300" + "\n" +
                                 "Condition: Alchoholism";
             NewEvent.CashBonus = 300;
             break;
         case (1):	// guards cost money
             NewEvent.EventText = "Application: Guard" + "\n" +
                                 "Name: Dezlo" + "\n" +
                                 "Cost: $1050" + "\n" +
                                 "Salary: $150 Per Day";
             NewEvent.CashBonus = -1050;
             break;
         case (2):	// doctors cost money
             NewEvent.EventText = "Application: Doctor" + "\n" +
                                 "Name: Leviathan" + "\n" +
                                 "Cost: $2100" + "\n" +
                                 "Salary: $300 Per Day";
             NewEvent.CashBonus = -2100;
             break;
     }
     MyEvents.Add (NewEvent);
 }
Esempio n. 23
0
    private GameEvent parseEvent(GameEvent ge)
    {
        foreach (string contenido_param in ge.Params) {
            object param = ge.getParameter(contenido_param);
            if (contenido_param.Equals("direction")) {
                Mover.Direction t = new Mover.Direction();
                switch ((System.String)param) {
                    case "North": ge.setParameter(contenido_param, t); break;
                    case "East": ge.setParameter(contenido_param, t + 1); break;
                    case "South": ge.setParameter(contenido_param, t + 2); break;
                    case "West": ge.setParameter(contenido_param, t + 3); break;
                }
            } else {
                if (param.GetType() == typeof(System.Int32)) {
                    int intParam = (int)param;
                    if (EntityMap.getInstance().getEntityMap().ContainsKey(intParam)) {
                        UnityEngine.Object go_src;
                        EntityMap.getInstance().getEntityMap().TryGetValue(intParam, out go_src);
                        ge.setParameter(contenido_param, go_src);
                    }
                }/* else {
                    Debug.Log("====================================");
                    Debug.Log("tipo: " + param.GetType() + ", valor: " + param);
                    Debug.Log("====================================");
                }*/
            }
        }

        return ge;
    }
Esempio n. 24
0
 public override void Execute(GameEvent gameEvent)
 {
     bool finished = false;
     GameObject actor = null;
     if(this.show3)
     {
         actor = (GameObject)gameEvent.spawnedPrefabs[this.actorID];
     }
     else
     {
         actor = gameEvent.actor[this.actorID].GetActor();
     }
     if(actor != null)
     {
         ActorEventMover comp = actor.gameObject.GetComponent<ActorEventMover>();
         if(comp == null)
         {
             comp = actor.gameObject.AddComponent<ActorEventMover>();
         }
         Vector3 target = this.v3;
         if(this.show2) target = actor.transform.TransformDirection(target);
         comp.StartCoroutine(comp.MoveToDirection(actor.transform, this.controller, target, this.show, this.speed, this.time));
         if(this.wait)
         {
             finished = true;
             gameEvent.StartTime(this.time, this.next);
         }
     }
     if(!finished)
     {
         gameEvent.StepFinished(this.next);
     }
 }
Esempio n. 25
0
 public void HandleEvent(GameEvent ge)
 {
     Vector3 mousepos = InputWatcher.GetInputPosition ();
     mousepos = new Vector3(mousepos.x - spinPivot.transform.position.x,mousepos.y-spinPivot.transform.position.y,mousepos.z);
     if (ge.type.Equals ("mouse_release")) {
         //Stops the dial from spinning more
         spinner = false;
         //Only tries to lock if the spinner has a chance of moving
         if(clickTime > clickDelay){
             //Locks position to nearest interval of 60
             float rotation = transform.eulerAngles.z;
             float lockRot = Mathf.Round(rotation /lockThreshold)*lockThreshold;
             transform.rotation = Quaternion.Euler(0, 0, lockRot);
             menuPosition = (int) lockRot/lockThreshold;
             if(Child.GetComponent<MenuClickScript>() != null){
                 Child.GetComponent<MenuClickScript>().menuPosition = menuPosition % menuMax;
             }
             /*if(Child.GetComponent<MenuInGame>() != null){
                 Child.GetComponent<MenuInGame>().menuPosition = (menuPosition % menuMax) % 4;
             }*/
         }
         //resets time
         clickTime = 0;
         touchDown = false;
     }else if(ge.type.Equals("mouse_click")){
         //Allows the dial to start spinning
         if(spinner == false){
             originalRot = Mathf.Atan2(mousepos.y,mousepos.x);
             origz = transform.eulerAngles.z;
             //Debug.Log ("new original degrees: " + originalRot);
         }
         spinner = true;
         touchDown = true;
     }
 }
Esempio n. 26
0
    public void HandleEvent(GameEvent ge)
    {
        if (ge.type.Equals ("mouse_release")) {
            if(returnButton == null || anchorPoints == null || tintBox == null)
                return;
            RaycastHit targetFind;

            Ray targetSeek = Camera.main.ScreenPointToRay (InputWatcher.GetTouchPosition ());
            if (Physics.Raycast (targetSeek, out targetFind)) {
                //sees if ray collided with the start button
                if (targetFind.collider.gameObject == this.gameObject) {
                    if(!paused){
                        //moves buttons to set locations, and darkens screen
                        this.gameObject.transform.position = anchorPoints[0].gameObject.transform.position;
                        returnButton.transform.position = anchorPoints[2].gameObject.transform.position;
                        GetComponentInChildren<TextMesh>().text = "Resume";
                        tintBox.GetComponent<Renderer> ().material.color = new Color (0.0f, 0.0f, 0.0f, 0.5f);
                    }else{
                        //moves buttons back, sets screen back to normal color
                        this.gameObject.transform.position = anchorPoints[1].gameObject.transform.position;
                        returnButton.transform.position = anchorPoints[3].gameObject.transform.position;
                        GetComponentInChildren<TextMesh>().text = "Pause";
                        tintBox.GetComponent<Renderer> ().material.color = new Color (0.0f, 0.0f, 0.0f, 0.0f);
                    }
                    paused = !paused;
                }
            }

        }
    }
Esempio n. 27
0
    public void HandleEvent(GameEvent ge)
    {
        if (ge.type.Equals ("mouse_release")) {
            RaycastHit targetFind;

            Ray targetSeek = Camera.main.ScreenPointToRay (InputWatcher.GetTouchPosition ());
            if (Physics.Raycast (targetSeek, out targetFind)) {
                Debug.Log (targetFind.collider.name);
                //sees if ray collided with the start button
                if (targetFind.collider.gameObject == startButton) {
                    //Debug.Log ("try and load level select");
                    if(levelHolder[menuPosition] == "Return"){
                        Camera.main.transform.position = cameraLock2.transform.position;
                    }else{
                        WorldData.lastScene = Application.loadedLevelName;
                        levelName = levelHolder[menuPosition];
                        GamePause.paused = false;
                        Application.LoadLevel(levelName);
                    }

                    /*if(menuPosition == 3 || menuPosition == 1){
                        worldHolder.GetComponent<WorldData>().lastScene = Application.loadedLevelName;
                        Application.LoadLevel(levelName);
                    }else if(menuPosition == 2){
                        Camera.main.transform.position = cameraLock2.transform.position;
                    }*/
                }
            }
        }
    }
Esempio n. 28
0
 public void SendEvent(GameEvent gameEvent, IEventReceiver receiver)
 {
     SingletonFactory.LOG.Log("SendEvent: " + gameEvent.ToString() + (receiver == null ? "" : ", Receiver: " + receiver.ToString()), Logging.LoggerLevel.LOW);
     SingletonFactory.LOG.Log("EventArgs: " + gameEvent.ArgString);
     FilterEvent(gameEvent);
     receiver.OnEvent(gameEvent);
 }
Esempio n. 29
0
    ///////////////////////////////////////////////////////////////////////////
    // EVENT LISTENING
    ///////////////////////////////////////////////////////////////////////////
    public void eventReceived(GameEvent e)
    {
        if (e is PlayerMoveEvent)
        {

            KeyCode k = (e as PlayerMoveEvent).pressedKey;
            string strKeyPressed = k.ToString();

            switch (strKeyPressed){
            case "A":
                Flip ("left");
                anim.SetBool("Idle",false);
                anim.SetBool("WalkRight",false);
                anim.SetBool("WalkLeft",true);
                break;
            case "D":
                Flip ("right");
                anim.SetBool("Idle",false);
                anim.SetBool("WalkRight",true);
                anim.SetBool("WalkLeft",false);
                break;
            default:
                anim.SetBool("Idle",true);
                anim.SetBool("WalkRight",false);
                anim.SetBool("WalkLeft",false);
                break;
            }
        }

        if (e is PlayerActionEvent) {
            KeyCode k = (e as PlayerActionEvent).pressedKey;

        }
    }
Esempio n. 30
0
 public override void Execute(GameEvent gameEvent)
 {
     if(MusicPlayType.PLAY.Equals(this.playType))
     {
         if(this.show) GameHandler.GetMusicHandler().PlayStored();
         else GameHandler.GetMusicHandler().Play(this.musicID);
     }
     else if(MusicPlayType.STOP.Equals(this.playType))
     {
         GameHandler.GetMusicHandler().Stop();
     }
     else if(MusicPlayType.FADE_IN.Equals(this.playType))
     {
         if(this.show) GameHandler.GetMusicHandler().FadeInStored(this.float1, this.interpolate);
         else GameHandler.GetMusicHandler().FadeIn(this.musicID, this.float1, this.interpolate);
     }
     else if(MusicPlayType.FADE_OUT.Equals(this.playType))
     {
         GameHandler.GetMusicHandler().FadeOut(this.float1, this.interpolate);
     }
     else if(MusicPlayType.FADE_TO.Equals(this.playType))
     {
         if(this.show) GameHandler.GetMusicHandler().FadeToStored(this.float1, this.interpolate);
         else GameHandler.GetMusicHandler().FadeTo(this.musicID, this.float1, this.interpolate);
     }
     gameEvent.StepFinished(this.next);
 }
Esempio n. 31
0
 public static bool UpdateCounter0(GameEvent gameEvent)
 {
     gameEvent.thisEffect.Counter += 1;
     return(true);
 }
Esempio n. 32
0
 public static bool MurlocHeroPower(GameEvent gameEvent)
 {
     return(true);
 }
Esempio n. 33
0
 public static GameEvent ConvertGameEvent(int i)
 {
     return(GameEvent.GetGameEvent(i));
 }
Esempio n. 34
0
 private void onLinkAdd(GameEvent e)
 {
     this.dispatchEvent(
         GameEvent.Create(GAME_EVENT.MAP_LINK_ADD, this, e.data)
         );
 }
Esempio n. 35
0
 private void onChangeMap(GameEvent e)
 {
     this.dispatchEvent(
         GameEvent.Create(GAME_EVENT.MAP_CHANGE, this, e.data)
         );
 }
Esempio n. 36
0
    public void OnGameEvent(GameEvent gameEvent)
    {
        switch (gameEvent.type)
        {
        case GameEventType.WhiteInScenarioCamera:
            this.ScenarioCamera.SendMessage("WhiteIn");
            break;

        case GameEventType.WhiteOutScenarioCamera:
            this.ScenarioCamera.SendMessage("WhiteOut", gameEvent.BoolParameter);
            break;

        case GameEventType.TimeScaleOn:
            isPlayingScenario = true;
            break;

        case GameEventType.TimeScaleOff:
            isPlayingScenario = false;
            Time.timeScale    = 1;
            break;

        case GameEventType.ScenarioCameraOff:
            this.ScenarioCamera.enabled = false;
            break;

        case GameEventType.ScenarioCameraOn:
            this.ScenarioCamera.enabled = true;
            if (ScenarioCamera.gameObject.active == false)
            {
                ScenarioCamera.gameObject.active = true;
            }
            break;

        case GameEventType.PlayerCameraOn:
            this.PlayerCamera.enabled = true;
            break;

        case GameEventType.PlayerCameraOff:
            this.PlayerCamera.enabled = false;
            break;

        case GameEventType.ScenarioCameraAudioListenerOn:
            this.ScenarioAudioListener.enabled = true;
            break;

        case GameEventType.ScenarioCameraAudioListenerOff:
            this.ScenarioAudioListener.enabled = false;
            break;

        case GameEventType.PlayerCameraAudioListenerOn:
            this.PlayerAudioListener.enabled = true;
            break;

        case GameEventType.PlayerCameraAudioListenerOff:
            this.PlayerAudioListener.enabled = false;
            break;

        case GameEventType.StartDocking:
            ObjectDockMonoDict[gameEvent.StringParameter].Dock();
            break;

        case GameEventType.StartDockingOnRuntimeTarget:
            ObjectDockMonoDict[gameEvent.StringParameter].Dock(gameEvent.receiver.transform);
            break;

        case GameEventType.PlayerCameraSlowMotionOnFixedPoint:
        case GameEventType.PlayerCameraSlowMotionOnTransform:
        case GameEventType.PlayerCameraSlowMotionOnPredefinedViewPointAndLookOnFixedPoint:
        case GameEventType.PlayerCameraSlowMotionOnPredefinedViewPointAndLookOnTransform:
            this.PlayerCamera.SendMessage("OnGameEvent", gameEvent);
            break;

        case GameEventType.ShiftToPlayerMode:
            //to shift to Player mode:
            //1. activate player
            //2. deactivate scenario camera + audio listener
            LevelManager.Instance.player.SetActive(true);
            LevelManager.Instance.player.transform.root.gameObject.SetActive(true);
            GameEvent event_player_control_on = new GameEvent(GameEventType.PlayerControlOn);
            LevelManager.OnGameEvent(event_player_control_on, this);
            PlayerCamera.enabled               = true;
            PlayerAudioListener.enabled        = true;
            this.ScenarioCamera.enabled        = false;
            this.ScenarioAudioListener.enabled = false;
            break;

        case GameEventType.ShiftToScenarioMode:
            //to shift to scenario mode:
            //1. if BOOL parameter = false, de-activate player , else , deactivate player control and camera+audio
            //2. deactivate scenario camera + audio listener
            if (gameEvent.BoolParameter == true)
            {
                //let player visible in camera.
                this.PlayerCamera.enabled        = false;
                this.PlayerAudioListener.enabled = false;
                GameEvent event_player_control_off = new GameEvent(GameEventType.PlayerControlOff);
                LevelManager.OnGameEvent(event_player_control_off, this);
            }
            else
            {
                LevelManager.Instance.player.transform.root.gameObject.SetActive(false);
            }
            this.ScenarioCamera.enabled        = true;
            this.ScenarioAudioListener.enabled = true;
            break;
        }
    }
Esempio n. 37
0
 public void Propagate(GameEvent gameEvent)
 {
 }
Esempio n. 38
0
 public DefaultEventEditor()
 {
     this.ge = ScriptableObject.CreateInstance <GameEvent> ();
 }
Esempio n. 39
0
 public void detachEvent(GameEvent ge)
 {
 }
Esempio n. 40
0
 private void OnDisable()
 {
     gameEvent -= this;
 }
Esempio n. 41
0
 private void OnEnable()
 {
     gameEvent += this;
 }
        void GetInfo(GameEvent e)
        {
            Variant data = e.data;

            name     = data["name"];
            carr     = data["carr"];
            lvl      = data["lvl"];
            zhuan    = data["zhuan"];
            combpt   = data["combpt"];
            wing_lvl = data["wing_lvl"];
            if (data.ContainsKey("wing_stage"))
            {
                wing_stage = data["wing_stage"];
            }
            if (data.ContainsKey("show_wing"))
            {
                show_wing = data["show_wing"];
            }
            if (data.ContainsKey("pet_type"))
            {
                pet_type = data["pet_type"];
            }
            if (data.ContainsKey("clan_name"))
            {
                clan_name = data["clan_name"];
            }
            if (data.ContainsKey("summon_combpt"))
            {
                summon_combpt = data["summon_combpt"];
            }
            if (data.ContainsKey("grade"))
            {
                jjclvl = data["grade"];
            }
            if (data.ContainsKey("score"))
            {
                jjcfec = data["score"];
            }
            if (data.ContainsKey("dress_list"))
            {
                if (data["dress_list"] != null && data["dress_list"].Count > 0)
                {
                    fashionsshows[0] = data["dress_list"][0]._int;
                    fashionsshows[1] = data["dress_list"][1]._int;
                }
                else
                {
                    fashionsshows[0] = fashionsshows[1] = 0;
                }
            }
            else
            {
                clan_name = "";
            }
            string file = "";

            switch (carr)
            {
            case 1:
                break;

            case 2:
                file = "icon_job_icon_h2";
                break;

            case 3:
                file = "icon_job_icon_h3";
                break;

            case 4:
                file = "icon_job_icon_h4";
                break;

            case 5:
                file = "icon_job_icon_h5";
                break;
            }
            Image head = transform.FindChild("playerInfo/panel_attr/hero_ig/ig").GetComponent <Image>();

            head.sprite = GAMEAPI.ABUI_LoadSprite(file);
            transform.FindChild("playerInfo/panel_attr/name").GetComponent <Text>().text = name;
            transform.FindChild("playerInfo/panel_attr/lv").GetComponent <Text>().text   = "Lv" + lvl + "(" + zhuan + ContMgr.getCont("zhuan") + ")";
            getTransformByPath("fighting/value").GetComponent <Text>().text = combpt.ToString();
            if (jjclvl > 0)
            {
                SXML   itXml = XMLMgr.instance.GetSXML("jjc.reward", "grade==" + jjclvl);
                string jjc   = itXml.getString("name");
                transform.FindChild("playerInfo/panel_attr/attr_scroll/scroll/contain/1/value").GetComponent <Text>().text = jjc;
            }
            else
            {
                transform.FindChild("playerInfo/panel_attr/attr_scroll/scroll/contain/1/value").GetComponent <Text>().text = ContMgr.getCont("a3_targetinfo_nodw");
            }
            if (jjclvl < 10)
            {
                transform.FindChild("playerInfo/panel_attr/attr_scroll/scroll/contain/1/icon").GetComponent <Image>().sprite = GAMEAPI.ABUI_LoadSprite("icon_rank_00" + jjclvl);
            }
            else
            {
                transform.FindChild("playerInfo/panel_attr/attr_scroll/scroll/contain/1/icon").GetComponent <Image>().sprite = GAMEAPI.ABUI_LoadSprite("icon_rank_0" + jjclvl);
            }
            transform.FindChild("playerInfo/panel_attr/attr_scroll/scroll/contain/2/value").GetComponent <Text>().text = summon_combpt.ToString();
            transform.FindChild("playerInfo/panel_attr/attr_scroll/scroll/contain/3/value").GetComponent <Text>().text = wing_stage + ContMgr.getCont("a3_auction_jie") + wing_lvl + ContMgr.getCont("ji");

            if (data.ContainsKey("min_attack"))
            {
                transform.FindChild("playerInfo/panel_attr/att/atk/value").GetComponent <Text>().text     = data["min_attack"] + "-" + data["max_attack"];
                transform.FindChild("playerInfo/panel_attr/att/hp/value").GetComponent <Text>().text      = data["max_hp"];
                transform.FindChild("playerInfo/panel_attr/att/phydef/value").GetComponent <Text>().text  = data["physics_def"];
                transform.FindChild("playerInfo/panel_attr/att/manadef/value").GetComponent <Text>().text = data["magic_def"];
            }

            if (clan_name == "")
            {
                transform.FindChild("playerInfo/panel_attr/team").gameObject.SetActive(false);
                transform.FindChild("playerInfo/panel_attr/no_team").gameObject.SetActive(true);
            }
            else
            {
                transform.FindChild("playerInfo/panel_attr/team").gameObject.SetActive(true);
                transform.FindChild("playerInfo/panel_attr/team/team_name").GetComponent <Text>().text = clan_name;
                transform.FindChild("playerInfo/panel_attr/no_team").gameObject.SetActive(false);
            }

            Variant equips = data["equipments"];

            Equips.Clear();
            active_eqp.Clear();
            foreach (var v in equips._arr)
            {
                a3_BagItemData item = new a3_BagItemData();
                item.confdata.equip_type = v["part_id"];
                Variant info = v["eqpinfo"];
                item.id       = info["id"];
                item.tpid     = info["tpid"];
                item.confdata = a3_BagModel.getInstance().getItemDataById(item.tpid);
                a3_EquipModel.getInstance().equipData_read(item, info);
                Equips[item.confdata.equip_type] = item;
            }
            foreach (a3_BagItemData item in Equips.Values)
            {
                if (isactive_eqp(item))
                {
                    active_eqp[item.confdata.equip_type] = item;
                }
            }
            //Dictionary < int, a3_BagItemData > newEquip = new Dictionary<int, a3_BagItemData>();
            //foreach (int itemid in Equips.Keys)
            //{
            //    a3_BagItemData one = Equips[itemid];
            //    one.equipdata.combpt = a3_BagModel.getInstance().Getcombpt(a3_BagModel .getInstance ().Getequip_att(Equips[itemid]));
            //    newEquip[itemid] = one;
            //}

            //Equips.Clear();
            //Equips = newEquip;

            initEquipIcon();
            createAvatar();
            setAni();
            SetAni_Color();
        }
Esempio n. 43
0
 public abstract void OnEvent(GameEvent gameEvent);
Esempio n. 44
0
 public static string ClassToJson(GameEvent gameEvent)
 {
     return(JsonConvert.SerializeObject(gameEvent));
 }
Esempio n. 45
0
        override public async Task <bool> ProcessUpdatesAsync(CancellationToken cts)
        {
            try
            {
                #region SHUTDOWN
                if (Manager.ShutdownRequested())
                {
                    foreach (var client in GetClientsAsList())
                    {
                        var e = new GameEvent()
                        {
                            Type   = GameEvent.EventType.PreDisconnect,
                            Origin = client,
                            Owner  = this,
                        };

                        Manager.GetEventHandler().AddEvent(e);
                        await e.WaitAsync();
                    }

                    foreach (var plugin in SharedLibraryCore.Plugins.PluginImporter.ActivePlugins)
                    {
                        await plugin.OnUnloadAsync();
                    }

                    return(true);
                }
                #endregion

                try
                {
                    var polledClients = await PollPlayersAsync();

                    var waiterList = new List <GameEvent>();

                    foreach (var disconnectingClient in polledClients[1])
                    {
                        if (disconnectingClient.State == ClientState.Disconnecting)
                        {
                            continue;
                        }

                        var e = new GameEvent()
                        {
                            Type   = GameEvent.EventType.PreDisconnect,
                            Origin = disconnectingClient,
                            Owner  = this
                        };

                        Manager.GetEventHandler().AddEvent(e);
                        // wait until the disconnect event is complete
                        // because we don't want to try to fill up a slot that's not empty yet
                        waiterList.Add(e);
                    }
                    // wait for all the disconnect tasks to finish
                    await Task.WhenAll(waiterList.Select(e => e.WaitAsync(10 * 1000)));

                    waiterList.Clear();
                    // this are our new connecting clients
                    foreach (var client in polledClients[0])
                    {
                        // note: this prevents players in ZMBI state from being registered with no name
                        if (string.IsNullOrEmpty(client.Name))
                        {
                            continue;
                        }

                        var e = new GameEvent()
                        {
                            Type   = GameEvent.EventType.PreConnect,
                            Origin = client,
                            Owner  = this
                        };

                        Manager.GetEventHandler().AddEvent(e);
                        waiterList.Add(e);
                    }

                    // wait for all the connect tasks to finish
                    await Task.WhenAll(waiterList.Select(e => e.WaitAsync(10 * 1000)));

                    waiterList.Clear();
                    // these are the clients that have updated
                    foreach (var client in polledClients[2])
                    {
                        var e = new GameEvent()
                        {
                            Type   = GameEvent.EventType.Update,
                            Origin = client,
                            Owner  = this
                        };

                        Manager.GetEventHandler().AddEvent(e);
                        waiterList.Add(e);
                    }

                    await Task.WhenAll(waiterList.Select(e => e.WaitAsync(10 * 1000)));

                    if (ConnectionErrors > 0)
                    {
                        var _event = new GameEvent()
                        {
                            Type   = GameEvent.EventType.ConnectionRestored,
                            Owner  = this,
                            Origin = Utilities.IW4MAdminClient(this),
                            Target = Utilities.IW4MAdminClient(this)
                        };

                        Manager.GetEventHandler().AddEvent(_event);
                    }

                    ConnectionErrors = 0;
                    LastPoll         = DateTime.Now;
                }

                catch (NetworkException e)
                {
                    ConnectionErrors++;
                    if (ConnectionErrors == 3)
                    {
                        var _event = new GameEvent()
                        {
                            Type   = GameEvent.EventType.ConnectionLost,
                            Owner  = this,
                            Origin = Utilities.IW4MAdminClient(this),
                            Target = Utilities.IW4MAdminClient(this),
                            Extra  = e,
                            Data   = ConnectionErrors.ToString()
                        };

                        Manager.GetEventHandler().AddEvent(_event);
                    }
                    return(true);
                }

                LastMessage = DateTime.Now - start;
                lastCount   = DateTime.Now;

                // update the player history
                if ((lastCount - playerCountStart).TotalMinutes >= SharedLibraryCore.Helpers.PlayerHistory.UpdateInterval)
                {
                    while (ClientHistory.Count > ((60 / SharedLibraryCore.Helpers.PlayerHistory.UpdateInterval) * 12)) // 12 times a hour for 12 hours
                    {
                        ClientHistory.Dequeue();
                    }

                    ClientHistory.Enqueue(new SharedLibraryCore.Helpers.PlayerHistory(ClientNum));
                    playerCountStart = DateTime.Now;
                }

                // send out broadcast messages
                if (LastMessage.TotalSeconds > Manager.GetApplicationSettings().Configuration().AutoMessagePeriod &&
                    BroadcastMessages.Count > 0 &&
                    ClientNum > 0)
                {
                    string[] messages = (await this.ProcessMessageToken(Manager.GetMessageTokens(), BroadcastMessages[NextMessage])).Split(Environment.NewLine);

                    foreach (string message in messages)
                    {
                        Broadcast(message);
                    }

                    NextMessage = NextMessage == (BroadcastMessages.Count - 1) ? 0 : NextMessage + 1;
                    start       = DateTime.Now;
                }

                return(true);
            }

            // this one is ok
            catch (ServerException e)
            {
                if (e is NetworkException && !Throttled)
                {
                    Logger.WriteError(loc["SERVER_ERROR_COMMUNICATION"].FormatExt($"{IP}:{Port}"));
                    Logger.WriteDebug(e.GetExceptionInfo());
                }

                return(false);
            }

            catch (Exception E)
            {
                Logger.WriteError(loc["SERVER_ERROR_EXCEPTION"].FormatExt($"[{IP}:{Port}]"));
                Logger.WriteDebug(E.GetExceptionInfo());
                return(false);
            }
        }
Esempio n. 46
0
 protected override void _onProcess()
 {
     (this.session as ClientSession).g_mgr.dispatchEvent(GameEvent.Create(37u, this, this.msgData, false));
 }
Esempio n. 47
0
 /**地图大小*/
 void OnMapSize(GameEvent evt)
 {
     m_cameraArea = evt.Get <Bounds>(0);
 }
Esempio n. 48
0
        /// <summary>
        /// Perform the server specific tasks when an event occurs
        /// </summary>
        /// <param name="E"></param>
        /// <returns></returns>
        override protected async Task <bool> ProcessEvent(GameEvent E)
        {
            if (E.Type == GameEvent.EventType.ConnectionLost)
            {
                var exception = E.Extra as Exception;
                Logger.WriteError(exception.Message);
                if (exception.Data["internal_exception"] != null)
                {
                    Logger.WriteDebug($"Internal Exception: {exception.Data["internal_exception"]}");
                }
                Logger.WriteInfo("Connection lost to server, so we are throttling the poll rate");
                Throttled = true;
            }

            if (E.Type == GameEvent.EventType.ConnectionRestored)
            {
                if (Throttled)
                {
                    Logger.WriteVerbose(loc["MANAGER_CONNECTION_REST"].FormatExt($"[{IP}:{Port}]"));
                }
                Logger.WriteInfo("Connection restored to server, so we are no longer throttling the poll rate");
                Throttled = false;
            }

            if (E.Type == GameEvent.EventType.ChangePermission)
            {
                var newPermission = (Permission)E.Extra;

                if (newPermission < Permission.Moderator)
                {
                    // remove banned or demoted privileged user
                    Manager.GetPrivilegedClients().Remove(E.Target.ClientId);
                }

                else
                {
                    if (Manager.GetPrivilegedClients().ContainsKey(E.Target.ClientId))
                    {
                        Manager.GetPrivilegedClients()[E.Target.ClientId] = E.Target;
                    }

                    else
                    {
                        Manager.GetPrivilegedClients().Add(E.Target.ClientId, E.Target);
                    }
                }

                Logger.WriteInfo($"{E.Origin} is setting {E.Target} to permission level {newPermission}");
                await Manager.GetClientService().UpdateLevel(newPermission, E.Target, E.Origin);
            }

            else if (E.Type == GameEvent.EventType.PreConnect)
            {
                // we don't want to track bots in the database at all if ignore bots is requested
                if (E.Origin.IsBot && Manager.GetApplicationSettings().Configuration().IgnoreBots)
                {
                    return(false);
                }

                var existingClient = GetClientsAsList().FirstOrDefault(_client => _client.Equals(E.Origin));

                // they're already connected
                if (existingClient != null)
                {
                    Logger.WriteWarning($"detected preconnect for {E.Origin}, but they are already connected");
                    return(false);
                }

CONNECT:
                if (Clients[E.Origin.ClientNumber] == null)
                {
#if DEBUG == true
                    Logger.WriteDebug($"Begin PreConnect for {E.Origin}");
#endif
                    // we can go ahead and put them in so that they don't get re added
                    Clients[E.Origin.ClientNumber] = E.Origin;
                    await OnClientConnected(E.Origin);

                    ChatHistory.Add(new ChatInfo()
                    {
                        Name    = E.Origin.Name,
                        Message = "CONNECTED",
                        Time    = DateTime.UtcNow
                    });

                    if (E.Origin.Level > EFClient.Permission.Moderator)
                    {
                        E.Origin.Tell(string.Format(loc["SERVER_REPORT_COUNT"], E.Owner.Reports.Count));
                    }
                }

                // for some reason there's still a client in the spot
                else
                {
                    Logger.WriteWarning($"{E.Origin} is connecteding but {Clients[E.Origin.ClientNumber]} is currently in that client slot");
                    await OnClientDisconnected(Clients[E.Origin.ClientNumber]);

                    goto CONNECT;
                }
            }

            else if (E.Type == GameEvent.EventType.Flag)
            {
                // todo: maybe move this to a seperate function
                Penalty newPenalty = new Penalty()
                {
                    Type     = Penalty.PenaltyType.Flag,
                    Expires  = DateTime.UtcNow,
                    Offender = E.Target,
                    Offense  = E.Data,
                    Punisher = E.Origin,
                    When     = DateTime.UtcNow,
                    Link     = E.Target.AliasLink
                };

                var addedPenalty = await Manager.GetPenaltyService().Create(newPenalty);

                E.Target.SetLevel(Permission.Flagged, E.Origin);
            }

            else if (E.Type == GameEvent.EventType.Unflag)
            {
                var unflagPenalty = new Penalty()
                {
                    Type     = Penalty.PenaltyType.Unflag,
                    Expires  = DateTime.UtcNow,
                    Offender = E.Target,
                    Offense  = E.Data,
                    Punisher = E.Origin,
                    When     = DateTime.UtcNow,
                    Link     = E.Target.AliasLink
                };

                await Manager.GetPenaltyService().Create(unflagPenalty);

                E.Target.SetLevel(Permission.User, E.Origin);
            }

            else if (E.Type == GameEvent.EventType.Report)
            {
                Reports.Add(new Report()
                {
                    Origin = E.Origin,
                    Target = E.Target,
                    Reason = E.Data
                });
            }

            else if (E.Type == GameEvent.EventType.TempBan)
            {
                await TempBan(E.Data, (TimeSpan)E.Extra, E.Target, E.Origin);;
            }

            else if (E.Type == GameEvent.EventType.Ban)
            {
                bool isEvade = E.Extra != null ? (bool)E.Extra : false;
                await Ban(E.Data, E.Target, E.Origin, isEvade);
            }

            else if (E.Type == GameEvent.EventType.Unban)
            {
                await Unban(E.Data, E.Target, E.Origin);
            }

            else if (E.Type == GameEvent.EventType.Kick)
            {
                await Kick(E.Data, E.Target, E.Origin);
            }

            else if (E.Type == GameEvent.EventType.Warn)
            {
                await Warn(E.Data, E.Target, E.Origin);
            }

            else if (E.Type == GameEvent.EventType.Disconnect)
            {
                ChatHistory.Add(new ChatInfo()
                {
                    Name    = E.Origin.Name,
                    Message = "DISCONNECTED",
                    Time    = DateTime.UtcNow
                });

                await new MetaService().AddPersistentMeta("LastMapPlayed", CurrentMap.Alias, E.Origin);
                await new MetaService().AddPersistentMeta("LastServerPlayed", E.Owner.Hostname, E.Origin);
            }

            else if (E.Type == GameEvent.EventType.PreDisconnect)
            {
                // predisconnect comes from minimal rcon polled players and minimal log players
                // so we need to disconnect the "full" version of the client
                var client = GetClientsAsList().FirstOrDefault(_client => _client.Equals(E.Origin));

                if (client != null)
                {
#if DEBUG == true
                    Logger.WriteDebug($"Begin PreDisconnect for {client}");
#endif
                    await OnClientDisconnected(client);

#if DEBUG == true
                    Logger.WriteDebug($"End PreDisconnect for {client}");
#endif
                }

                else if (client?.State != ClientState.Disconnecting)
                {
                    Logger.WriteWarning($"Client {E.Origin} detected as disconnecting, but could not find them in the player list");
                    Logger.WriteDebug($"Expected {E.Origin} but found {GetClientsAsList().FirstOrDefault(_client => _client.ClientNumber == E.Origin.ClientNumber)}");
                    return(false);
                }
            }

            else if (E.Type == GameEvent.EventType.Update)
            {
#if DEBUG == true
                Logger.WriteDebug($"Begin Update for {E.Origin}");
#endif
                await OnClientUpdate(E.Origin);
            }

            if (E.Type == GameEvent.EventType.Say)
            {
                E.Data = E.Data.StripColors();

                if (E.Data?.Length > 0)
                {
                    string message = E.Data;
                    if (E.Data.IsQuickMessage())
                    {
                        try
                        {
                            message = Manager.GetApplicationSettings().Configuration()
                                      .QuickMessages
                                      .First(_qm => _qm.Game == GameName)
                                      .Messages[E.Data.Substring(1)];
                        }
                        catch { }
                    }

                    ChatHistory.Add(new ChatInfo()
                    {
                        Name    = E.Origin.Name,
                        Message = message,
                        Time    = DateTime.UtcNow
                    });
                }
            }

            if (E.Type == GameEvent.EventType.MapChange)
            {
                Logger.WriteInfo($"New map loaded - {ClientNum} active players");

                // iw4 doesn't log the game info
                if (E.Extra == null)
                {
                    var dict = await this.GetInfoAsync();

                    if (dict == null)
                    {
                        Logger.WriteWarning("Map change event response doesn't have any data");
                    }

                    else
                    {
                        Gametype = dict["gametype"].StripColors();
                        Hostname = dict["hostname"]?.StripColors();

                        string mapname = dict["mapname"]?.StripColors() ?? CurrentMap.Name;
                        CurrentMap = Maps.Find(m => m.Name == mapname) ?? new Map()
                        {
                            Alias = mapname, Name = mapname
                        };
                    }
                }

                else
                {
                    var dict = (Dictionary <string, string>)E.Extra;
                    Gametype   = dict["g_gametype"].StripColors();
                    Hostname   = dict["sv_hostname"].StripColors();
                    MaxClients = int.Parse(dict["sv_maxclients"]);

                    string mapname = dict["mapname"].StripColors();
                    CurrentMap = Maps.Find(m => m.Name == mapname) ?? new Map()
                    {
                        Alias = mapname,
                        Name  = mapname
                    };
                }
            }

            if (E.Type == GameEvent.EventType.MapEnd)
            {
                Logger.WriteInfo("Game ending...");
                SessionStart = DateTime.UtcNow;
            }

            if (E.Type == GameEvent.EventType.Tell)
            {
                await Tell(E.Message, E.Target);
            }

            if (E.Type == GameEvent.EventType.Broadcast)
            {
#if DEBUG == false
                // this is a little ugly but I don't want to change the abstract class
                if (E.Data != null)
                {
                    await E.Owner.ExecuteCommandAsync(E.Data);
                }
#endif
            }

            lock (ChatHistory)
            {
                while (ChatHistory.Count > Math.Ceiling(ClientNum / 2.0))
                {
                    ChatHistory.RemoveAt(0);
                }
            }

            // the last client hasn't fully disconnected yet
            // so there will still be at least 1 client left
            if (ClientNum < 2)
            {
                ChatHistory.Clear();
            }

            return(true);
        }
 /// <summary>
 /// Adds an event to the future event queue
 /// </summary>
 /// <param name="gameEvent">The game event to add to the Queue</param>
 public void AddEvent(GameEvent gameEvent)
 {
     this._futureEventQueue.Enqueue(gameEvent);
 }
Esempio n. 50
0
    /**绑定目标*/
    void OnBindTarget(GameEvent evt)
    {
        Log.Info("FllowTarget::OnBindTarget");

        m_targetObj = evt.Get <Transform>(0);
    }
Esempio n. 51
0
        //EMPTY
        #region PUBLIC_METHODS
        #endregion PUBLIC_METHODS

        #region PRIVATE_METHODS
        /// <summary>
        /// Handle the Left Controller input and put them in the Events
        /// </summary>
        void CheckLeftControllerInput()
        {
            BoolVariable temp;

            #region TRIGGER
            temp = LeftVariablesDictionnary.Get("TriggerIsDown");

            if (!temp.Value && LeftController.GetHairTriggerDown())
            {
                temp.SetValue(true);
                _leftEvent = (GameEvent)LeftEventsDictionnary.Get("LeftTriggerDown");
                _leftEvent.Raise();
            }
            else if (temp.Value && LeftController.GetHairTriggerUp())
            {
                temp.SetValue(false);
                _leftEvent = (GameEvent)LeftEventsDictionnary.Get("LeftTriggerUp");
                _leftEvent.Raise();
            }
            #endregion TRIGGER

            #region TOUCHPAD
            temp = LeftVariablesDictionnary.Get("ThumbIsDown");

            LeftThumbOrientation.SetValue(LeftController.GetAxis());

            if (LeftController.GetPressDown(SteamVR_Controller.ButtonMask.Touchpad))
            {
                temp.SetValue(true);
                _leftEvent = (GameEvent)LeftEventsDictionnary.Get("LeftThumbDown");
                _leftEvent.Raise();
            }
            else if (temp.Value && LeftController.GetPressUp(SteamVR_Controller.ButtonMask.Touchpad))
            {
                temp.SetValue(false);
                _leftEvent = (GameEvent)LeftEventsDictionnary.Get("LeftThumbUp");
                _leftEvent.Raise();
            }

            if (LeftController.GetTouchDown(SteamVR_Controller.ButtonMask.Touchpad))
            {
                _leftEventBool = (GameEventBool)LeftEventsDictionnary.Get("LeftThumbTouching");
                _leftEventBool.Raise(true);
            }
            else if (LeftController.GetTouchUp(SteamVR_Controller.ButtonMask.Touchpad))
            {
                _leftEventBool = (GameEventBool)LeftEventsDictionnary.Get("LeftThumbTouching");
                _leftEventBool.Raise(false);
            }
            #endregion TOUCHPAD

            #region GRIP
            temp = LeftVariablesDictionnary.Get("GripIsDown");

            if (!temp.Value && LeftController.GetPressDown(SteamVR_Controller.ButtonMask.Grip))
            {
                temp.SetValue(true);
                _leftEvent = (GameEvent)LeftEventsDictionnary.Get("LeftGripDown");
                _leftEvent.Raise();
            }
            else if (temp.Value && LeftController.GetPressUp(SteamVR_Controller.ButtonMask.Grip))
            {
                temp.SetValue(false);
                _leftEvent = (GameEvent)LeftEventsDictionnary.Get("LeftGripUp");
                _leftEvent.Raise();
            }
            #endregion GRIP

            #region MENU
            temp = LeftVariablesDictionnary.Get("MenuIsDown");

            if (!temp.Value && LeftController.GetPressDown(SteamVR_Controller.ButtonMask.ApplicationMenu))
            {
                temp.SetValue(true);
                _leftEvent = (GameEvent)LeftEventsDictionnary.Get("LeftMenuDown");
                _leftEvent.Raise();
            }
            else if (temp.Value && LeftController.GetPressUp(SteamVR_Controller.ButtonMask.ApplicationMenu))
            {
                temp.SetValue(false);
                _leftEvent = (GameEvent)LeftEventsDictionnary.Get("LeftMenuUp");
                _leftEvent.Raise();
            }
            #endregion MENU
        }
 /// <summary>
 /// Jumps to a specific GameEvent
 /// </summary>
 /// <param name="eventOfInterest">The GameEvent to jump to</param>
 public void GoTo(GameEvent eventOfInterest)
 {
     this.GoTo(eventOfInterest.GetOccursAt());
 }
Esempio n. 53
0
 //Observer Behavior
 public void OnNotify(GameEvent e)
 {
     Debug.Log("ActiveCombatState Notified of some event. " + e.commandString);
 }
Esempio n. 54
0
        /// <summary>
        /// Initializes a new instance of <see cref="GameEventHandlerBase{TEvent}"/>.
        /// </summary>
        /// <param name="logger">The logger.</param>
        /// <param name="playerRegistry">The player registry.</param>
        /// <param name="chat">The chat.</param>
        /// <param name="gameEvent">The game event to handle.</param>
        /// <exception cref="ArgumentException">Thrown when the handler cannot handle the message.</exception>
        protected GameEventHandlerBase(ILogger logger, IPlayerRegistry playerRegistry, IChat chat, GameEvent gameEvent)
        {
            Logger         = logger;
            PlayerRegistry = playerRegistry;
            Chat           = chat;

            if (!(gameEvent is TEvent actualEvent))
            {
                throw new ArgumentException($"The handler {GetType()} cannot handle message of type {gameEvent?.GetType().FullName ?? "<null>"}");
            }

            GameEvent = actualEvent;
        }
Esempio n. 55
0
        public override async Task ExecuteAsync(GameEvent E)
        {
            string             statLine;
            EFClientStatistics pStats = null;

            if (E.Data.Length > 0 && E.Target == null)
            {
                E.Target = E.Owner.GetClientByName(E.Data).FirstOrDefault();

                if (E.Target == null)
                {
                    E.Origin.Tell(_translationLookup["PLUGINS_STATS_COMMANDS_VIEW_FAIL"]);
                }
            }

            var serverId = StatManager.GetIdForServer(E.Owner);

            var totalRankedPlayers = await Plugin.Manager.GetTotalRankedPlayers(serverId);

            // getting stats for a particular client
            if (E.Target != null)
            {
                var performanceRanking = await Plugin.Manager.GetClientOverallRanking(E.Target.ClientId, serverId);

                var performanceRankingString = performanceRanking == 0
                    ? _translationLookup["WEBFRONT_STATS_INDEX_UNRANKED"]
                    : $"{_translationLookup["WEBFRONT_STATS_INDEX_RANKED"]} (Color::Accent)#{performanceRanking}/{totalRankedPlayers}";

                // target is currently connected so we want their cached stats if they exist
                if (E.Owner.GetClientsAsList().Any(client => client.Equals(E.Target)))
                {
                    pStats = E.Target.GetAdditionalProperty <EFClientStatistics>(StatManager.CLIENT_STATS_KEY);
                }

                // target is not connected so we want to look up via database
                if (pStats == null)
                {
                    await using var context = _contextFactory.CreateContext(false);
                    pStats = await context.Set <EFClientStatistics>()
                             .FirstOrDefaultAsync(c => c.ServerId == serverId && c.ClientId == E.Target.ClientId);
                }

                // if it's still null then they've not gotten a kill or death yet
                statLine = pStats == null
                    ? _translationLookup["PLUGINS_STATS_COMMANDS_NOTAVAILABLE"]
                    : _translationLookup["COMMANDS_VIEW_STATS_RESULT"].FormatExt(pStats.Kills, pStats.Deaths,
                                                                                 pStats.KDR, pStats.Performance, performanceRankingString);
            }

            // getting self stats
            else
            {
                var performanceRanking = await Plugin.Manager.GetClientOverallRanking(E.Origin.ClientId, serverId);

                var performanceRankingString = performanceRanking == 0
                    ? _translationLookup["WEBFRONT_STATS_INDEX_UNRANKED"]
                    : $"{_translationLookup["WEBFRONT_STATS_INDEX_RANKED"]} (Color::Accent)#{performanceRanking}/{totalRankedPlayers}";

                // check if current client is connected to the server
                if (E.Owner.GetClientsAsList().Any(client => client.Equals(E.Origin)))
                {
                    pStats = E.Origin.GetAdditionalProperty <EFClientStatistics>(StatManager.CLIENT_STATS_KEY);
                }

                // happens if the user has not gotten a kill/death since connecting
                if (pStats == null)
                {
                    await using var context = _contextFactory.CreateContext(false);
                    pStats = (await context.Set <EFClientStatistics>()
                              .FirstOrDefaultAsync(c => c.ServerId == serverId && c.ClientId == E.Origin.ClientId));
                }

                // if it's still null then they've not gotten a kill or death yet
                statLine = pStats == null
                    ? _translationLookup["PLUGINS_STATS_COMMANDS_NOTAVAILABLE"]
                    : _translationLookup["COMMANDS_VIEW_STATS_RESULT"].FormatExt(pStats.Kills, pStats.Deaths,
                                                                                 pStats.KDR, pStats.Performance, performanceRankingString);
            }

            if (E.Message.IsBroadcastCommand(_config.BroadcastCommandPrefix))
            {
                var name = E.Target == null ? E.Origin.Name : E.Target.Name;
                E.Owner.Broadcast(_translationLookup["PLUGINS_STATS_COMMANDS_VIEW_SUCCESS"].FormatExt(name));
                E.Owner.Broadcast(statLine);
            }

            else
            {
                if (E.Target != null)
                {
                    E.Origin.Tell(_translationLookup["PLUGINS_STATS_COMMANDS_VIEW_SUCCESS"].FormatExt(E.Target.Name));
                }

                E.Origin.Tell(statLine);
            }
        }
 private void InitGameLose()
 {
     GameEvent.LevelEnded("lose");
     GameState = GAME_STATE_STOPPED;
     //Application.LoadLevel("MainMenu");
 }
Esempio n. 57
0
 private void ondispose(GameEvent e)
 {
     dispose();
 }
Esempio n. 58
0
        //private void onLoadReady( GameEvent e )
        //{
        //	this.g_mgr.dispatchEvent( e );
        //}

        //第一次初始化游戏的时候,进来初始化地图
        private void onDataInit(GameEvent e)
        {
            this.dispatchEvent(
                GameEvent.Create(GAME_EVENT.SPRITE_SET_DATA, this, e.data)
                );
        }
Esempio n. 59
0
 public void useEvent(GameEvent ge)
 {
     this.ge = ge;
 }
        public void Init()
        {
            // Create the basic actor instances and behavior for test.
            this.witness = new Thing()
            {
                Name = "Witness", ID = TestThingID.Generate("testthing")
            };
            this.stalker1 = new Thing()
            {
                Name = "Stalker1", ID = TestThingID.Generate("testthing")
            };
            this.stalker2 = new Thing()
            {
                Name = "Stalker2", ID = TestThingID.Generate("testthing")
            };
            this.victim1 = new Thing()
            {
                Name = "Victim1", ID = TestThingID.Generate("testthing")
            };
            this.victim2 = new Thing()
            {
                Name = "Victim2", ID = TestThingID.Generate("testthing")
            };

            // Set up the rooms.
            this.room1 = new Thing()
            {
                Name = "Room", ID = TestThingID.Generate("room")
            };
            this.room2 = new Thing()
            {
                Name = "Room 2", ID = TestThingID.Generate("room")
            };

            // Set up an exit connecting the two rooms.
            this.exit = new Thing()
            {
                Name = "East Exit", ID = TestThingID.Generate("exit")
            };
            var exitBehavior = new ExitBehavior();

            ////exitBehavior.AddDestination("west", room1.ID);
            ////exitBehavior.AddDestination("east", room1.ID);
            ////this.exit.BehaviorManager.Add(exitBehavior);

            this.room1.Add(this.exit);
            this.room2.Add(this.exit);

            // Populate the first room.
            this.room1.Add(this.witness);
            this.room1.Add(this.stalker1);
            this.room1.Add(this.stalker2);
            this.room1.Add(this.victim1);
            this.room1.Add(this.victim2);

            // Prepare to verify correct eventing occurs.
            this.witness.Eventing.MovementRequest  += (root, e) => { this.lastWitnessRequest = e; };
            this.witness.Eventing.MovementEvent    += (root, e) => { this.lastWitnessEvent = e; };
            this.stalker1.Eventing.MovementRequest += (root, e) => { this.lastStalkerRequest = e; };
            this.stalker1.Eventing.MovementEvent   += (root, e) => { this.lastStalkerEvent = e; };
            this.stalker2.Eventing.MovementRequest += (root, e) => { this.lastStalkerRequest = e; };
            this.stalker2.Eventing.MovementEvent   += (root, e) => { this.lastStalkerEvent = e; };
            this.victim1.Eventing.MovementRequest  += (root, e) => { this.lastVictimRequest = e; };
            this.victim1.Eventing.MovementEvent    += (root, e) => { this.lastVictimEvent = e; };
            this.victim2.Eventing.MovementRequest  += (root, e) => { this.lastVictimRequest = e; };
            this.victim2.Eventing.MovementEvent    += (root, e) => { this.lastVictimEvent = e; };
        }