MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / tick

Method tick

source/game/StarToolUser.cpp:366–462  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

364}
365
366void ToolUser::tick(float dt, bool shifting, HashSet<MoveControlType> const& moves) {
367 if (auto toolUserItem = as<ToolUserItem>(m_primaryHandItem.get())) {
368 FireMode fireMode = FireMode::None;
369 if (!m_suppress.get()) {
370 if (m_fireMain)
371 fireMode = FireMode::Primary;
372 else if (m_fireAlt && m_primaryHandItem.get()->twoHanded())
373 fireMode = FireMode::Alt;
374 }
375 toolUserItem->update(dt, fireMode, shifting, moves);
376 }
377
378 if (!m_primaryHandItem.get() || !m_primaryHandItem.get()->twoHanded()) {
379 if (auto toolUserItem = as<ToolUserItem>(m_altHandItem.get())) {
380 FireMode fireMode = FireMode::None;
381 if (!m_suppress.get() && m_fireAlt)
382 fireMode = FireMode::Primary;
383 toolUserItem->update(dt, fireMode, shifting, moves);
384 }
385 }
386
387 bool edgeTriggeredMain = m_edgeTriggeredMain;
388 m_edgeTriggeredMain = false;
389 bool edgeTriggeredAlt = m_edgeTriggeredAlt;
390 m_edgeTriggeredAlt = false;
391
392 bool edgeSuppressedMain = m_edgeSuppressedMain;
393 m_edgeSuppressedMain = false;
394 bool edgeSuppressedAlt = m_edgeSuppressedAlt;
395 m_edgeSuppressedAlt = false;
396
397 if (!m_suppress.get()) {
398 if (itemSafeTwoHanded(m_primaryHandItem.get()) && (m_fireMain || m_fireAlt)) {
399 FireableItemPtr fireableItem = as<FireableItem>(m_primaryHandItem.get());
400 if (fireableItem) {
401 FireMode mode;
402 if (m_fireMain)
403 mode = FireMode::Primary;
404 else
405 mode = FireMode::Alt;
406 fireableItem->fire(mode, shifting, edgeTriggeredMain || edgeTriggeredAlt);
407 }
408 ActivatableItemPtr activatableItem = as<ActivatableItem>(m_primaryHandItem.get());
409 if (activatableItem && activatableItem->usable())
410 activatableItem->activate();
411 } else if (edgeSuppressedMain || (itemSafeTwoHanded(m_primaryHandItem.get()) && edgeSuppressedAlt)) {
412 FireableItemPtr fireableItem = as<FireableItem>(m_primaryHandItem.get());
413 if (fireableItem) {
414 FireMode mode = FireMode::Primary;
415 fireableItem->endFire(mode, shifting);
416 }
417
418 if (m_fireAlt) {
419 FireableItemPtr fireableItem = as<FireableItem>(m_altHandItem.get());
420 if (fireableItem)
421 fireableItem->fire(FireMode::Alt, shifting, edgeTriggeredAlt);
422 ActivatableItemPtr activatableItem = as<ActivatableItem>(m_altHandItem.get());
423 if (activatableItem && activatableItem->usable())

Callers 15

updateMethod · 0.45
tickMasterMethod · 0.45
updateMethod · 0.45
renderMethod · 0.45
tickSharedMethod · 0.45
updateMethod · 0.45
updateMethod · 0.45
updateStatusMethod · 0.45
tickMasterMethod · 0.45
updateMethod · 0.45
updateMethod · 0.45
runMethod · 0.45

Calls 8

itemSafeTwoHandedFunction · 0.85
usableMethod · 0.80
activateMethod · 0.80
getMethod · 0.45
twoHandedMethod · 0.45
updateMethod · 0.45
fireMethod · 0.45
endFireMethod · 0.45

Tested by 1

TESTFunction · 0.36