Exemplo n.º 1
0
        public void World_Tick()
        {
            if (e.State == GAME_STATE.STATE_WORLD && e.getScene().State == SCENE_STATE.STATE_READY && e.getNetwork().State == NETWORK_STATE.STATE_CONNECTED)
            {
                if (Player_Self != null && Player_Self.Ready)
                {
                    e.getNetwork().net_sendPlayerStateUpdate();
                }

                /*if (PlayerList.Count > 0)
                 * {
                 *  foreach (PlayerData playerData in PlayerList)
                 *  {
                 *      if (playerData.Object != null)
                 *      {
                 *          if (playerData.LerpPos != null && playerData.LerpPos != Vector3.zero)
                 *          {
                 *              playerData.Object.transform.position = Vector3.Lerp(playerData.Object.transform.position, playerData.LerpPos, Time.fixedDeltaTime * 2.5f);
                 *          }
                 *          if (playerData.LerpRot != null)
                 *          {
                 *              playerData.Object.transform.rotation = Quaternion.Lerp(playerData.Object.transform.rotation, playerData.LerpRot, Time.fixedDeltaTime * 2.5f);
                 *          }
                 *      }
                 *  }
                 * }
                 * if (NPCList.Count > 0)
                 * {
                 *  foreach (NPCData npcData in NPCList)
                 *  {
                 *      npcData.getNPCInfo().client_behaviorUpdate();
                 *  }
                 * }*/
            }
        }
        public void ui_login_VerifyLogin()
        {
            string name = login_Username.text;

            if (name.Length == 0)
            {
                ui_login_Disconnected("You must type in a name between 3 and 12 characters.");
                return;
            }
            else if (name.Length < 3)
            {
                ui_login_Disconnected("Name is too short. It must be more than 3 characters.");
                return;
            }
            else if (name.Length >= 13)
            {
                ui_login_Disconnected("Name is too long. It must be less than 12 characters.");
                return;
            }

            e.getNetwork().net_loginConnect();
        }
 void scene_OnLevelLoad(Scene scene, LoadSceneMode mode)
 {
     State = SCENE_STATE.STATE_READY;
     if (scene.name == "World_Client")
     {
         FirstRun = false;
         //e.getWorld().world_CollectDefaultEntities();
         e.getNetwork().net_sendPlayerReady();
     }
     if (scene.name == "Startup_Client")
     {
         if (!FirstRun)
         {
             e.getUI().ui_ShowLoading(false);
             e.getUI().ui_login_Disconnected("Disconnected.");
         }
     }
 }
        public void combat_attemptCastSkill(BaseSkill s)
        {
            bool validTargetEnemy    = false;
            bool validTargetFriendly = false;
            bool validTargetSelf     = false;

            if (State == COMBAT_STATE.STATE_DEAD)
            {
                e.getUI().ui_ingame_DisplayError("You are dead.");
                return;
            }
            else if (onGlobalCooldown)
            {
                e.getUI().ui_ingame_DisplayError("You can't cast that yet.");
                return;
            }
            else if (s.onCooldown)
            {
                e.getUI().ui_ingame_DisplayError("That skill isn't ready yet.");
                return;
            }
            else if (CombatTarget != null)
            {
                // if(CombatTarget.isNPC)
                // {
                if (CombatTarget.Faction == AI_Faction.Hostile)
                {
                    if (s.allowedTargets.Contains(Skill_Targets.Enemy))
                    {
                        validTargetEnemy = true;
                    }
                    else if (s.allowedTargets.Contains(Skill_Targets.Self))
                    {
                        validTargetSelf = true;
                    }
                    else
                    {
                        e.getUI().ui_ingame_DisplayError("Invalid target.");
                        return;
                    }
                    //Enemy target and non-friendly spell
                }
                else if (CombatTarget.Faction == AI_Faction.Friendly || CombatTarget.Faction == AI_Faction.Neutral)
                {
                    if (s.allowedTargets.Contains(Skill_Targets.Enemy))
                    {
                        e.getUI().ui_ingame_DisplayError("You can't attack that target.");
                        return;
                    }
                    else if (s.allowedTargets.Contains(Skill_Targets.Friendly))
                    {
                        validTargetFriendly = true;
                    }
                    else if (s.allowedTargets.Contains(Skill_Targets.Self))
                    {
                        validTargetSelf = true;
                    }
                    //Enemy target and non-friendly spell
                }
                // }
                // else
                // {
                //     e.getUI().ui_ingame_DisplayError("Invalid target.");
                //     return;
                // }
            }
            else
            {
                e.getUI().ui_ingame_DisplayError("Invalid target.");
                return;
            }

            if (e.getWorld().Player_Self.Energy < s.energyCost)
            {
                e.getUI().ui_ingame_DisplayError("Not enough mana.");
                return;
            }

            if (validTargetFriendly || validTargetEnemy)
            {
                e.StartCoroutine(combat_globalCooldownStart());
                e.getNetwork().net_sendCastSpell(CombatTarget.uniqueID, s.skillID);
                //e.getWorld().world_castSpellFromPlayer();
            }
            else if (validTargetSelf)
            {
                e.StartCoroutine(combat_globalCooldownStart());
                e.getNetwork().net_sendCastSpell(e.getWorld().Player_Self.PlayerID, s.skillID);
            }
            //combat_castSkill(validTargetEnemy, validTargetFriendly, validTargetSelf);
        }
        public void init(Client_Engine eng)
        {
            e = eng;
            // Global ui objects
            IngameUI_Root = e.IngameRoot;
            LoginUI_Root  = e.LoginRoot;
            // Login ui objects
            login_Username    = e.LoginName.GetComponent <InputField>();
            login_Password    = e.LoginPassword.GetComponent <InputField>();
            login_LoginButton = e.LoginButton.GetComponent <Button>();
            login_ErrorText   = e.LoginError.GetComponent <Text>();

            //EventDelegate.Add(login_LoginButton.onClick, e.getNetwork().net_loginConnect);
            login_LoginButton.onClick.AddListener(ui_login_VerifyLogin);

            LoginUI_Root.SetActive(true);


            // Lobby screen things
            LobbyUI_Root = e.LobbyRoot;
            Lobby        = e.Lobby.GetComponent <UI_Lobby>();

            Lobby.Init();
            Lobby.onCreateCharacter.AddListener(delegate
            {
                e.getNetwork().net_lobbyAskCreateCharacter(Lobby.preview_CharacterData);
            });

            Lobby.onDeleteCharacter.AddListener(delegate
            {
                e.getNetwork().net_lobbyAskDeleteCharacter(Lobby.SelectedCharacter);
            });

            Lobby.onEnterWorld.AddListener(delegate
            {
                e.getNetwork().net_lobbyAskWorldConnect(Lobby.SelectedCharacter);
            });

            Lobby.onLogout.AddListener(delegate
            {
                e.getNetwork().net_FullClientDisconnect();
                ui_login_Disconnected("Logged out.");
            });


            // Loading screen
            LoadingUI_Root = e.LoadingRoot;
            loading_Slider = e.LoadingSlider.GetComponent <Slider>();

            // Ingame chat ui objects
            chat_Prefab = e.ChatPrefab;
            //chat_Panel = e.ChatPanel.GetComponent<Image>();
            chat_Input     = e.ChatInput.GetComponent <InputField>();
            chat_Grid      = e.ChatGrid;
            chat_Scrollbar = e.ChatScrollbar.GetComponent <Scrollbar>();
            //chat_Button = e.ChatButton.GetComponent<UIButton>();

            // Ingame things
            nameplate_Parent             = e.NameplateParent;
            nameplate_Prefab             = e.NameplatePrefab;
            nameplateNPC_Prefab          = e.NameplateNPCPrefab;
            nameplateFloatingText_Prefab = e.NamePlateFloatingTextPrefab;

            player_HEERoot   = e.HEEParent;
            player_HealthBar = e.PlayerHealthBar.GetComponent <Slider>();
            player_EnergyBar = e.PlayerEnergyBar.GetComponent <Slider>();
            player_EXPBar    = e.PlayerEXPBar.GetComponent <Slider>();

            //Actionbar
            foreach (Transform t in e.ActionbarParent.transform)
            {
                ActionbarButtons.Add(t.GetComponent <SkillButton>());
            }
            int sI = 0;

            foreach (SkillButton s in ActionbarButtons)
            {
                int ind = sI;
                s.castButton.onClick.AddListener(delegate { ui_ingame_onSkillClick(ind); });
                s.onHover.AddListener(delegate { ui_ingame_onSkillHoverStart(ind); });
                s.onExit.AddListener(delegate { ui_ingame_onSkillHoverEnd(ind); });
                sI++;
            }


            //Tooltip
            tooltip_Parent      = e.TooltipParent;
            tooltip_Icon        = e.TooltipIcon.GetComponent <Image>();
            tooltip_Title       = e.TooltipTitle.GetComponent <Text>();
            tooltip_Description = e.TooltipDesc.GetComponent <Text>();

            //Quest Tracker
            QuestTracker = e.QuestTracker.GetComponent <UI_QuestTracker>();

            QuestPopup = e.QuestPopup.GetComponent <Window_QuestPopup>();
            QuestPopup.onAcceptQuest.AddListener(delegate
            {
                ui_ingame_askAcceptQuest();
            });
            QuestPopup.onCompleteQuest.AddListener(delegate
            {
                ui_ingame_askCompleteQuest();
            });
            ingame_ErrorText = e.IngameErrorText.GetComponent <Text>();
            //EventDelegate.Add(chat_Button.onClick, e.getNetwork().net_sendChatMessage);
        }