public void OnReceiveUseItemPacket(int node, PacketId id, byte[] data) { ItemUsePacket packet = new ItemUsePacket(data); ItemUseData useData = packet.GetPacket(); Debug.Log("Receive UseItemPacket:" + useData.userId + " -> " + useData.targetId + " (" + useData.itemCategory + ")"); chrController user = CharacterRoot.getInstance().findPlayer(useData.userId); AccountData account_data = AccountManager.get().getAccountData(GlobalParam.getInstance().global_account_id); if (user != null && account_data.avator_id != useData.userId) { Debug.Log("use item. favor:" + useData.itemFavor); Item.Favor favor = new Item.Favor(); favor.category = (Item.CATEGORY)useData.itemCategory; this.useItem(-1, favor, useData.userId, useData.targetId, false); } else { Debug.Log("Receive packet is already done."); } }
// 소환수를 소환 public void summonBeast(string beast_name) { do { if (this.beast != null) { break; } if (beast_name == "") { break; } string avator_name = "Beast_" + beast_name; string behavior_name = "chrBehaviorBeast_" + beast_name; chrController chr = CharacterRoot.getInstance().summonBeast(avator_name, behavior_name); if (chr == null) { break; } this.beast = chr.behavior; this.beast.control.cmdSetPositionAnon(this.getLocalPlayer().control.getPosition() + Vector3.back * 4.0f); this.summon_time = 0.0f; this.state = SUMMON_STATE.APPEAR; //Debug.Log("[CLIENT] Summon beast:" + beast_name); } while(false); }
public void PickUp(GameObject finder) { //Show.Log(finder+" picked up "+specificName+"("+typeName+")"); Game game = Global.Get <Game>(); Vector3 p = transform.position; Material mat = GetComponent <Renderer>().material; GameClock.Delay(0, () => { // make sure object creation happens on the main thread FloatyText ft = FloatyTextManager.Create(p + (Vector3.up * game.maze.tileSize.y * game.maze.wallHeight), kind); ft.TmpText.faceColor = mat.color; }); // find which NPC wants this, and make them light up ParticleSystem ps = null; //Show.Log(specificName+" turns on particle for "+typeName); CharacterRoot npc = game.npcCreator.npcs.Find(n => { ps = n.GetComponentInChildren <ParticleSystem>(); //Show.Log(ps.name + " v " + typeName); if (ps != null && ps.name == color) { return(true); } ps = null; return(false); }); if (npc != null && ps != null) { ps.Play(); } }
// 네트 플레이어 만들기. public void createNetPlayer(int account_global_index) { chrBehaviorLocal local_player = this.players[0].GetComponent <chrBehaviorLocal>(); chrBehaviorNet net_player = null; int local_index = this.players.Count; AccountData account_data = AccountManager.get().getAccountData(account_global_index); string avator_name = "Player_" + account_data.avator_id; net_player = CharacterRoot.getInstance().createPlayerAsNet(avator_name).GetComponent <chrBehaviorNet>(); net_player.control.local_index = local_index; net_player.control.global_index = account_global_index; net_player.local_player = local_player; net_player.position_in_formation = this.getInFormationOffset(account_global_index); SHOT_TYPE shot_type = GlobalParam.get().shot_type[account_global_index]; net_player.changeBulletShooter(shot_type); net_player.transform.Translate(this.getLocalPlayer().control.getPosition() + net_player.position_in_formation); this.players.Add(net_player); }
public override void initializeMap(GameRoot game_root) { MapCreator map_creator = MapCreator.get(); PartyControl party_control = PartyControl.get(); map_creator.setRoomNum(1, 1); map_creator.floor_root_go = new GameObject("Floor"); // 방 만들기. RoomController room = map_creator.createRoomFloor(new Map.RoomIndex(0, 0)); // 더미 방 만들기. map_creator.createVacancy(new Map.RoomIndex(0, -1)); // 방을 구분하는 벽을 만든다. map_creator.createRoomWall(); // 외벽을 만든다. map_creator.createOuterWalls(); GameRoot.get().createLocalPlayer(); GameRoot.get().createNetPlayers(); // 플레이어 위치 설정. chrBehaviorLocal local_player = PartyControl.get().getLocalPlayer(); Vector3 playerStartPosition = Vector3.zero; local_player.transform.position = playerStartPosition + PartyControl.get().getPositionOffset(local_player.control.global_index); for (int i = 0; i < PartyControl.get().getFriendCount(); i++) { chrBehaviorPlayer friend = PartyControl.get().getFriend(i); friend.control.cmdSetPositionAnon(playerStartPosition + PartyControl.get().getPositionOffset(friend.control.global_index)); } party_control.setCurrentRoom(room); // ボスの作成. chrControllerEnemyBase enemy; if (UsesHumanControlForBoss) { enemy = CharacterRoot.get().createEnemy("Boss1", "chrControllerEnemyBoss", "chrBehaviorEnemyBoss_Human") as chrControllerEnemyBase; } else { enemy = CharacterRoot.get().createEnemy("Boss1", "chrControllerEnemyBoss", "chrBehaviorEnemyBoss") as chrControllerEnemyBase; } enemy.cmdSetPosition(new Vector3(0.0f, 0.0f, 20.0f)); // 스테이터스 창. Navi.get().createStatusWindows(); }
public void AddToPlayerInventory(InventoryItem ii) { Vector3 p = ii.transform.position; Material mat = ii.GetComponent <Renderer>().material; GameClock.Delay(0, () => { // make sure object creation happens on the main thread FloatyText ft = FloatyTextManager.Create(p + (Vector3.up * game.maze.tileSize.y * game.maze.wallHeight), mat.name); ft.TmpText.faceColor = mat.color; }); // find which NPC wants this, and make them light up ParticleSystem ps = null; CharacterRoot npc = game.npcCreator.npcs.Find(n => { ps = n.GetComponentInChildren <ParticleSystem>(); if (ps.name == mat.name) { return(true); } ps = null; return(false); }); if (npc != null) { ps.Play(); } }
// 적 캐릭터 제네레이터를 만든다. public chrController createEnemyLair() { chrController enemy = CharacterRoot.getInstance().createEnemy("EnemyLairMinato"); this.enemies.Add(enemy); return(enemy); }
// 적 캐릭터를 만든다. public chrController createEnemy(string chr_name, string controller_class_name, string behavior_class_name) { chrController enemy = CharacterRoot.getInstance().createEnemy(chr_name, controller_class_name, behavior_class_name); this.enemies.Add(enemy); return(enemy); }
// 적 캐릭터를 만든다. public chrController createEnemy(string enemy_name) { chrController enemy = CharacterRoot.getInstance().createEnemy(enemy_name); this.enemies.Add(enemy); return(enemy); }
public void attack(bool is_local) { this.is_trigger_attack = true; if (is_local) { CharacterRoot.get().SendAttackData(PartyControl.get().getLocalPlayer().getAcountID(), 1); } }
public static CharacterRoot get() { if (CharacterRoot.instance == null) { CharacterRoot.instance = GameObject.Find("CharacterRoot").GetComponent <CharacterRoot>(); } return(CharacterRoot.instance); }
// ================================================================ // #if false // 적 캐릭터를 만든다. public chrController createEnemy() { // 일시적으로 항구 버전の적 캐릭터를 생성하도록 변경. // chrController enemy = CharacterRoot.getInstance().createEnemy("Enemy1"); chrController enemy = CharacterRoot.getInstance().createEnemy("EnemyMinato"); this.enemies.Add(enemy); return(enemy); }
// 레벨 시작 시에 호출. public override void start() { this.player = PartyControl.get().getLocalPlayer(); this.kabusan = CharacterRoot.get().findCharacter <chrBehaviorKabu>("NPC_Kabu_San"); // 스포트 라이트. this.spotlight_player = this.spotlight_prefab.instantiate(); this.spotlight_kabusan = this.spotlight_kabusan_prefab.instantiate(); this.spotlight_items = new GameObject[2]; for (int i = 0; i < 2; i++) { this.spotlight_items[i] = this.spotlight_prefab.instantiate(); } this.spotlight_items[0].setPosition(WeaponSelectMapInitializer.getNegiItemPosition().Y(4.0f)); this.spotlight_items[1].setPosition(WeaponSelectMapInitializer.getYuzuItemPosition().Y(4.0f)); this.spotlight_key = this.spotlight_key_prefab.instantiate(); this.spotlight_key.SetActive(false); // 플래그 - 각 플레이어의 선택이 끝났는가?. this.select_done_players = new bool[NetConfig.PLAYER_MAX]; for (int i = 0; i < this.select_done_players.Length; i++) { if (GameRoot.get().isConnected(i)) { this.select_done_players[i] = false; } else { // 참가하지 않은 플레이어는 '선택완료'로 해 둔다. this.select_done_players[i] = true; } } // 다른 플레이어의 상황을 나타내는 아이콘 생성하다. this.create_selecting_icons(); // Network 클래스의 컴포넌트를 획득. GameObject obj = GameObject.Find("Network"); if (obj != null) { this.m_network = obj.GetComponent <Network>(); if (this.m_network != null) { m_network.RegisterReceiveNotification(PacketId.GameSyncInfo, OnReceiveSyncPacket); } } this.step.set_next(STEP.DEMO0); }
// 진행 방향으로 돌아 EnemyBullet을 발사한다. public void shootBullet() { GameObject go = GameObject.Instantiate(CharacterRoot.get().enemy_bullet_prefab) as GameObject; go.transform.position = this.transform.TransformPoint(new Vector3(0.0f, 0.25f, 1.0f)); go.transform.rotation = Quaternion.AngleAxis(this.control.getDirection(), Vector3.up); EnemyBulletControl bullet = go.GetComponent <EnemyBulletControl>(); bullet.owner = this.control; }
// 게임 시작 시에 한 번만 호출됩니다. public override void start() { this.chr_dog = CharacterRoot.get().findCharacter <chrBehaviorNPC_Dog>("Dog"); this.chr_dog.setItemWan(this); this.controll.setBillboard(true); this.controll.cmdSetVisible(false); this.step.set_next(STEP.READY); }
// 이벤트 시작. public override void start() { this.player = PartyControl.get().getLocalPlayer(); this.player.beginOuterControll(); this.kabu_san = CharacterRoot.get().findCharacter <chrBehaviorKabu>("NPC_Kabu_San"); CameraControl.get().beginOuterControll(); this.step.set_next(STEP.START); }
void Update() { // ---------------------------------------------------------------- // // 다음 상태로 이행할지 체크합니다. switch (this.step.do_transition()) { case STEP.DISPATCH: { if (this.selection != SELECTION.NONE) { this.step.set_next(STEP.SELECTED); } } break; } // ---------------------------------------------------------------- // // 상태가 전환했을 때의 초기화. while (this.step.get_next() != STEP.NONE) { switch (this.step.do_initialize()) { case STEP.DISPATCH: { this.selection = SELECTION.NONE; CharacterRoot.get().getGameInput().appendForbiddenArea(this.input_forbidden_area); } break; case STEP.CLOSE: { CharacterRoot.get().getGameInput().removeForbiddenArea(this.input_forbidden_area); this.step.set_next(STEP.IDLE); } break; } } // ---------------------------------------------------------------- // // 각 상태에서의 실행 처리. switch (this.step.do_execution(Time.deltaTime)) { case STEP.IDLE: { } break; } }
public void SetSelection(CharacterRoot character) { selection.ForEach(f => { f.ShowPath(false); ShowSelectedVisual(f.gameObject, false); }); selection.Clear(); if (character != null) { selection.Add(c2m.Follower(character.move)); } ResetSelectionVisual(); }
// 進行方向へ向けて EnemyBullet を発射する public void PerformFire() { GameObject go = GameObject.Instantiate(CharacterRoot.getInstance().enemy_bullet_prefab) as GameObject; go.transform.position = this.transform.TransformPoint(new Vector3(0.0f, 0.25f, 1.0f)); go.transform.rotation = Quaternion.AngleAxis(this.getDirection(), Vector3.up); EnemyBulletControl bullet = go.GetComponent <EnemyBulletControl>(); bullet.owner = this; // 弾丸の発射待ち this.refireDelayTimer = refireDelayTime; }
/// <summary> /// /// </summary> /// <param name="name">The Characters name</param> /// <param name="characterOptions">What characteroptions should be set (enum)</param> /// <param name="realm"></param> /// <returns>CharacterRoot object</returns> public CharacterRoot GetCharacter(string name, CharacterOptions characterOptions, string realm) { var character = new CharacterRoot(); var url = string.Format(@"{0}/wow/character/{1}/{2}?locale={3}{4}&apikey={5}", _Host, realm, name, _Locale, CharacterFields.BuildOptionalFields(characterOptions), _APIKey); character = json.GetDataFromURL <CharacterRoot>(url); return(character); }
// 보스 사망 정보 수신 함수. public void OnReceiveBossDeadPacket(int node, PacketId id, byte[] data) { BossDeadPacket packet = new BossDeadPacket(data); BossDead dead = packet.GetPacket(); chrBehaviorEnemyBoss behavior = CharacterRoot.get().findCharacter <chrBehaviorEnemyBoss>(dead.bossId); if (behavior == null) { return; } behavior.dead(); Debug.Log("Receive boss dead packet"); }
protected void create_debug_window() { var window = dbwin.root().createWindow("query"); window.createButton("줍는다") .setOnPress(() => { chrBehaviorLocal player = CharacterRoot.get().findCharacter <chrBehaviorLocal>(GameRoot.getInstance().account_name_local); player.controll.cmdItemQueryPick("Tarai"); }); window.createButton("버린다") .setOnPress(() => { chrBehaviorLocal player = CharacterRoot.get().findCharacter <chrBehaviorLocal>(GameRoot.getInstance().account_name_local); player.controll.cmdItemQueryDrop(); }); window.createButton("말풍선") .setOnPress(() => { //chrBehaviorLocal player = CharacterRoot.get().findCharacter<chrBehaviorLocal>(GameRoot.getInstance().account_name_local); chrBehaviorNet player = CharacterRoot.get().findCharacter <chrBehaviorNet>("Daizuya"); player.controll.cmdQueryTalk("멀리 있는 사람과 Talk한다", true); }); window.createButton("이사 시작") .setOnPress(() => { chrBehaviorLocal player = CharacterRoot.get().findCharacter <chrBehaviorLocal>(GameRoot.getInstance().account_name_local); //chrBehaviorNet player = CharacterRoot.get().findCharacter<chrBehaviorNet>(GameRoot.getInstance().account_name_net); player.controll.cmdQueryHouseMoveStart("House1"); }); window.createButton("이사 끝") .setOnPress(() => { chrBehaviorLocal player = CharacterRoot.get().findCharacter <chrBehaviorLocal>(GameRoot.getInstance().account_name_local); //chrBehaviorNet player = CharacterRoot.get().findCharacter<chrBehaviorNet>(GameRoot.getInstance().account_name_net); player.controll.cmdQueryHouseMoveEnd(); }); }
public void OnReceiveCharacterPacket(PacketId id, byte[] data) { CharacterDataPacket packet = new CharacterDataPacket(data); CharacterData charData = packet.GetPacket(); if (GlobalParam.get().is_in_my_home != GlobalParam.get().is_remote_in_my_home) { return; } chrBehaviorNet remote = CharacterRoot.get().findCharacter <chrBehaviorNet>(charData.characterId); if (remote != null) { remote.CalcCoordinates(charData.index, charData.coordinates); } }
// 캐릭터를 만듭니다. protected void create_character(string[] words, string local_account, string net_account, bool create_npc) { string chr_name = words[0]; chr_name = chr_name.Remove(0, "ChrModel_".Length); chrController chr = null; Vector3 pos; float direction; if (chr_name == local_account) { chr = CharacterRoot.getInstance().createPlayerAsLocal(chr_name); } else if (chr_name == net_account) { if (create_npc) { chr = CharacterRoot.getInstance().createPlayerAsNet(chr_name); } } else { chr = CharacterRoot.getInstance().createNPC(chr_name); } if (chr != null) { pos.x = float.Parse(words[1]); pos.y = 0.0f; pos.z = float.Parse(words[2]); if (words.Length >= 4) { direction = float.Parse(words[3]); } else { direction = 0.0f; } chr.cmdSetPosition(pos); chr.cmdSetDirection(direction); } }
// 쿼리 대화(말풍선). public QueryTalk cmdQueryTalk(string words, bool local = false) { QueryTalk query = null; do { query = CharacterRoot.get().queryTalk(words, local); if (query == null) { break; } this.queries.Add(query); } while(false); return(query); }
// 쿼리 이사를 시작해도 되는가?. public QueryHouseMoveStart cmdQueryHouseMoveStart(string house_name, bool local = true) { QueryHouseMoveStart query = null; do { query = CharacterRoot.get().queryHouseMoveStart(house_name, local); if (query == null) { break; } this.queries.Add(query); } while(false); return(query); }
// 쿼리 이사를 마쳐도 되는가?. public QueryHouseMoveEnd cmdQueryHouseMoveEnd(bool local = true) { QueryHouseMoveEnd query = null; do { query = CharacterRoot.get().queryHouseMoveEnd(local); if (query == null) { break; } this.queries.Add(query); } while(false); return(query); }
/// <summary> /// Gets data about a character. /// </summary> /// <param name="name">The Characters name.</param> /// <param name="characterOptions">What characteroptions should be set (enum).</param> /// <param name="realm">The realm this character exists on.</param> /// <returns>CharacterRoot object</returns> public async Task <CharacterRoot> GetCharacterAsync(string name, CharacterOptions characterOptions, string realm) { var character = new CharacterRoot(); var url = string.Format( @"{0}/wow/character/{1}/{2}?locale={3}{4}&apikey={5}", _Host, realm, name, _Locale, CharacterFields.BuildOptionalFields(characterOptions), _APIKey); character = await this.jsonUtility.GetDataFromURLAsync <CharacterRoot>(url); return(character); }
public void Toggle() { if (characterMoveProxy.Target == self) { characterMoveProxy.Target = previous; _camera.LerpTarget(previous.transform); _camera.LerpView("user"); } else { previous = characterMoveProxy.Target; transform.position = (previous.move.head ? previous.move.head:previous.transform).position; characterMoveProxy.Target = self; _camera.LerpTo(view); clickToMove.SetFollower(previous.move); i3dui.triggerArea.transform.SetParent(previous.transform); i3dui.triggerArea.transform.localPosition = Vector3.zero; } }
public void SetCharacter(GameObject obj) { if (moveProxy != null) { //Debug.Log("Switching from " + moveProxy.Target); if (moveProxy.Target != null) { Interact3dItem i3i = moveProxy.Target.GetComponent <Interact3dItem>(); if (i3i != null) { i3i.showing = true; } } } CharacterRoot cm = obj.GetComponent <CharacterRoot>(); if (moveProxy.Target != fourthPersonControl.GetMover()) { cam.target = cm != null && cm.move.head != null ? cm.move.head : obj.transform; moveProxy.Target = cm; } if (cm != null) { cm.move.move.orientationTransform = cam.transform; } clickToMove.SetFollower(cm.move); Transform t = localPlayerInterfaceObject.transform; Interact3dUi.TriggerArea ta = t.GetComponent <Interact3dUi.TriggerArea>(); ta.Blink(); t.SetParent(obj.transform); t.localPosition = Vector3.zero; t.localRotation = Quaternion.identity; // TODO if the Interact3dItem is up, disable it. if (moveProxy != null) { Interact3dItem i3i = moveProxy.GetComponent <Interact3dItem>(); if (i3i != null) { i3i.showing = false; } } }