void OnCharacterDeselected(CCharacter character)
 {
     if (character == thisCharacter)
     {
         characterCanvas.SetActive(false);
     }
 }
示例#2
0
        public bool addPlayer(CCharacter player)         //TODO: player has to choose team, when GROUP fight
        {
            bool result = false;

            if (getNumParticipants() == TeamSize * 2)
            {
                return(result);
            }

            if (getNumParticipants() < TeamSize * 2 && fightState == FightState.QUEUE)             //if both teams are not full, add to any
            {
                if (TeamRed.Count < TeamSize && TeamBlue.Count < TeamSize)
                {
                    result = addPlayer(new Random().Next(1, 3), player);
                }
                else
                {
                    if (TeamRed.Count < TeamSize)                     //if red not full ad to red
                    {
                        result = addPlayer(1, player);
                    }
                    else
                    {
                        result = addPlayer(2, player);                         //if red full - add to blue
                    }
                }
            }
            return(result);
        }
    void OnCharacterActionTaken(CCharacter character, ECharacterAction action)
    {
        if (teamNumber == localPlayerNumber)
        {
            if (!isTeamsTurn)
            {
                return;
            }

            Debug.Log("Character " + character.name + " did action " + action.ToString()
                      + " and now has " + character.currentActionPoints.ToString() + " action points");

            if (character.currentActionPoints > 0)
            {
                SelectCharacter(character);
                return;
            }

            if (AreAllCharactersOutOfActions())
            {
                shouldEndTurnNextUpdate = true;
                return;
            }

            TrySelectNextAvailableCharacter();
        }
    }
示例#4
0
 void OnCharacterDeath(CCharacter character)
 {
     if (character == characterToEliminate)
     {
         OnObjectiveCompleted(characterToEliminate.name);
     }
 }
示例#5
0
        private void AddUserInfo(CCharacter player)
        {
            UserInfo info = new UserInfo()
            {
//                Position = player.Position,
//                Name = player.Name,
                GenStats = player.GetCharData <GeneralStats>(),
//
//                //Attributes - level, exp, stats
                Stats = player.Stats.GetAllStats(),
//
//                //inventory - all equiped items
//                Equipment = player.Items.Equipment.ToDictionary(item => (int)item.Key, item => (ItemData)item.Value),
                Inventory = player.Items.Inventory.ToDictionary(item => item.Key, item => (ItemData)(Item)item.Value),
//
//                //Talents - skills
//
//                //effects
//
//                //movement speed
//                //action/emotes
            };

            AddSerializedParameter(info, ClientParameterCode.Object, false);
        }
    void OnCharacterActionTaken(CCharacter character, ECharacterAction action)
    {
        AudioClip clipToPlay = null;

        switch (action)
        {
        case ECharacterAction.MOVE:
        case ECharacterAction.SPRINT:
            clipToPlay = moveSound;
            break;

        case ECharacterAction.ATTACK:
            clipToPlay = attackSound;
            break;

        case ECharacterAction.SLASH:
            clipToPlay = slashSound;
            break;

        default:
            Debug.LogWarning("This should never happen! Case for a character action not covered in switch!");
            break;
        }

        PlayClip(clipToPlay);
    }
示例#7
0
        private void setPlayerFightWLT(CCharacter player, FightWinLossTie result)
        {
            var fightData = CharFightData[player];

            fightData.WLT         = result;
            CharFightData[player] = fightData;
        }
示例#8
0
 void Cleanup(CCharacter deselectedCharacter = null)
 {
     foreach (var tile in tilesInRange)
     {
         tile.RemoveAllHighlights();
     }
 }
示例#9
0
        public int ApplyDamage(int damage, CCharacter attacker)
        {
            float finalDamage = 0;

            IStat health;

            _stats.TryGetValue(typeof(CurrHealth), out health);
            if (health != null)
            {
                int currentHealth = (int)health.BaseValue;
                //Log.DebugFormat("currHp: {0}, newHP: {1}, dmg: {2}, killdmg: {3}, overkill: {4}", currentHealth, -99, damage, -99, -99);
                var newHealth = currentHealth - damage;
                if (newHealth <= 0)                //OVERKILL
                {
                    health.BaseValue = 0;          //Dead
                    Character.Die();
                    //Log.DebugFormat("currHp: {0}, newHP: {1}, dmg: {2}, killdmg: {3}, overkill: {4}", currentHealth, newHealth, damage, -99, -99);
                    var killDamage = damage - Math.Abs(newHealth);
                    //Log.DebugFormat("currHp: {0}, newHP: {1}, dmg: {2}, killdmg: {3}, overkill: {4}", currentHealth, newHealth, damage, killDamage, -99);
                    var overkill = damage - Math.Abs(currentHealth);
                    //Log.DebugFormat("currHp: {0}, newHP: {1}, dmg: {2}, killdmg: {3}, overkill: {4}", currentHealth, newHealth, damage, killDamage, overkill);
                    Log.DebugFormat("OVER-KILL. DMG TOTAL: {0} . ACTUAL DEALT: {1}({2})", damage, killDamage, overkill);
                    finalDamage = killDamage;
                }
                else                 //NORMAL DAMAGE
                {
                    health.BaseValue = newHealth;
                    finalDamage      = damage;
                }
                _dirty = true;
            }
            Character.Effects.OnDamageTaken(damage, attacker);
            return((int)finalDamage);
        }
 void OnCharacterActionTaken(CCharacter character, ECharacterAction action)
 {
     if (character == thisCharacter)
     {
         UpdateUI();
     }
 }
示例#11
0
 /// <summary>
 /// 玩家基本消息
 /// </summary>
 /// <param name="buffer"></param>
 /// <param name="chr"></param>
 /// <param name="client"></param>
 public static void addCharStats(MapleBuffer buffer, CCharacter chr, CMapleClient client)
 {
     buffer.add <int>(chr.Id);
     buffer.add(chr.Name, 0x13);
     buffer.add <byte>(client.UserInfo.Gender);
     buffer.add <byte>(byte.Parse(chr.Skin.ToString()));
     buffer.add <int>(chr.Face);
     buffer.add <int>(chr.Hair);
     buffer.add <long>(0);
     buffer.add <byte>((byte)chr.Level);
     buffer.add <short>(chr.Job);
     buffer.add <short>(chr.Str);
     buffer.add <short>(chr.Dex);
     buffer.add <short>(chr.Int_);
     buffer.add <short>(chr.Luk);
     buffer.add <short>(chr.Hp);
     buffer.add <short>(chr.Mp);
     buffer.add <short>(chr.Maxhp);
     buffer.add <short>(chr.Maxmp);
     buffer.add <short>(chr.Ap);
     buffer.add <short>(chr.Sp);
     buffer.add <int>(chr.Exp);
     buffer.add <short>(chr.Fame);
     buffer.add <int>(chr.MapId);
     buffer.add <byte>(chr.Spawnpoint);
     buffer.addTime(150842304000000000L);
     buffer.add <long>(0);
 }
示例#12
0
 public SpellEnvironment(CCharacter player, byte playerSpell, CCharacter target, byte targetSpell)
 {
     Character      = player;
     CharacterSpell = playerSpell;
     Target         = target;
     TargetSpell    = targetSpell;
 }
 void OnCharacterDeselected(CCharacter character)
 {
     currentlySelectedCharacter = null;
     actionPanel.SetActive(false);
     actionDescriptionPanel.gameObject.SetActive(false);
     availableActions = null;
     ResetAllButtons();
 }
    void OnCharacterSelected(CCharacter character)
    {
        nameText.text          = character.name;
        movementRangeText.text = "Movement Range: " + character.GetMovementPerAction().ToString();
        attackRangeText.text   = "Attack Range: " + character.GetAttackRange().ToString();

        characterInfoPanel.SetActive(true);
    }
 void OnCharacterSelected(CCharacter character)
 {
     if (character == thisCharacter)
     {
         characterCanvas.SetActive(true);
         UpdateUI();
     }
 }
 void FocusOnCharacter(CCharacter character)
 {
     characterInFocus = character;
     pointInFocus     = character.transform.position;
     targetPosition   = GetPositionForFocusPointWithAngle(characterInFocus.transform.position
                                                          , anglesInClockwiseOrder[currentAngleIndex]);
     isMoving = true;
 }
示例#17
0
        public int updateTotalDamage(CCharacter obj, int value)
        {
            var info = CharFightData[obj];

            info.TotalDamage  += value;
            CharFightData[obj] = info;
            return(info.TotalDamage);
        }
示例#18
0
 public static MaplePakcet AddPlayer(CMapleClient client, CCharacter chr)
 {
     using (MapleBuffer buffer = new MapleBuffer())
     {
         buffer.add <byte>(0);
         addCharEntry(buffer, chr, client);
         return(new MaplePakcet(buffer.ToArray()));
     }
 }
示例#19
0
    protected bool OnDecide(CCharacter target)
    {
        if (target.A == Condition)
        {
            TrueRaise?.Invoke(this.ControllerOwner);
            return(true);
        }

        return(false);
    }
示例#20
0
 public MoveToLocationPacket(CCharacter character) : base(ClientEventCode.ServerPacket, MessageSubCode.MoveToLocation)
 {
     AddParameter(character.ObjectId, ClientParameterCode.ObjectId);
     AddSerializedParameter(new MoveTo
     {
         CurrentPosition = (PositionData)character.Position,
         Destination     = (PositionData)character.Destination,
         Moving          = character.Moving
     }, ClientParameterCode.Object);
 }
示例#21
0
        public CMapleCharacter(CCharacter character)
        {
            this.character = character;

            inventory = new CMapleInventory[8];
            foreach (InventoryType inv in System.Enum.GetValues(typeof(InventoryType)))
            {
                inventory[(int)inv] = new CMapleInventory(inv);
            }
        }
示例#22
0
        public bool hasMovesAgainstAll(CCharacter character)
        {
            var aliveEnemyIds = getAllParticipants().Where(x => getPlayerTeam(x) != getPlayerTeam(character) &&
                                                           !x.IsDead).Select(x => x.ObjectId).ToList();
            bool result = false;

            foreach (var id in aliveEnemyIds)
            {
                result = Moves.Values.Any(x => x.PeerObjectId == character.ObjectId && x.TargetObjectId == id);
            }
            return(result);
        }
    void OnCharacterSelected(CCharacter character)
    {
        currentlySelectedCharacter = character;
        actionPanel.SetActive(true);
        availableActions = new List <ECharacterAction>(character.availableActions);
        UpdatePanel();

        if (shouldAutoSelectFirstAction)
        {
            Invoke("TryClickDefaultActionButton", 0.1f);
        }
    }
示例#24
0
    public CCharacter GetCharacterOnTile(CTile tile)
    {
        foreach (var team in allTeams)
        {
            CCharacter character = team.GetCharacterOnTile(tile);
            if (character != null)
            {
                return(character);
            }
        }

        return(null);
    }
示例#25
0
        public LevelUpPacket(CCharacter instance, bool sendToSelf = true)
            : base(ClientEventCode.ServerPacket, MessageSubCode.LevelUp, sendToSelf)
        {
            var data = new LevelUpData()
            {
                NewLevel = (byte)instance.Stats.GetStat <Level>(),
                NewNextLevelExperience = instance.GetCharData <GeneralStats>().NextLevelExperience,
                CurrentGold            = instance.GetCharData <GeneralStats>().Gold,
                StatPoints             = (byte)instance.Stats.GetStat <StatPoints>()
            };

            AddSerializedParameter(data, ClientParameterCode.Object);
        }
示例#26
0
    void OnCharacterDeath(CCharacter character)
    {
        if (characters.Contains(character))
        {
            characters.Remove(character);
            Debug.Log("Character " + character.name + " is dead!");
            Destroy(character.gameObject);

            if (characters.Count == 0)
            {
                TeamEvents.teamEliminatedEvent.Invoke(this);
            }
        }
    }
示例#27
0
        public override void Handle(MapleBuffer mapleBuffer, CMapleClient client)
        {
            //TODO:游戏登陆(0%)
            int cid = mapleBuffer.read <int>();

            //加载角色信息
            CCharacter mapleCharacter = CMapleCharacter.LoadData(cid, client);

            client.SendDatat(PlayerPakcet.GetCharInfo(ChannelServices.ChannelId, mapleCharacter, client));
            Console.WriteLine("角色信息:" + mapleCharacter.Name);
            //进行添加到地图列表中...
            MapleMapFactory.MapFactory.GetMap(client.CharacterInfo.character.MapId).AddPlayer(client.CharacterInfo);

            //CMapleMap.AddPlayer(mapleCharacter.MapId, client.CharacterInfo);
        }
示例#28
0
    void SelectCharacter(CCharacter character)
    {
        if (!isTeamsTurn)
        {
            return;
        }

        if (currentlySelectedCharacter)
        {
            currentlySelectedCharacter.OnDeselected();
        }

        currentlySelectedCharacter = character;
        currentlySelectedCharacter.OnSelected();
    }
示例#29
0
    void OnCharacterClickedOn(CCharacter character)
    {
        if (teamNumber == localPlayerNumber)
        {
            if (!isTeamsTurn)
            {
                return;
            }

            if (character.currentActionPoints > 0 && currentlySelectedCharacter != character)
            {
                SelectCharacter(character);
            }
        }
    }
    XElement GetCharacterStateAsXML(CCharacter character)
    {
        XElement xCharacter = new XElement(XMLFields.Character,
                                           new XElement(XMLFields.CharacterName, character.name),
                                           new XElement(XMLFields.ActionPoints, character.currentActionPoints),
                                           new XElement(XMLFields.HitPoints, character.GetHitPoints()));

        Vector3  characterPosition = character.transform.position;
        XElement xPosition         = new XElement(XMLFields.Position,
                                                  new XElement(XMLFields.PositionX, characterPosition.x),
                                                  new XElement(XMLFields.PositionY, characterPosition.y),
                                                  new XElement(XMLFields.PositionZ, characterPosition.z));

        xCharacter.Add(xPosition);
        return(xCharacter);
    }